首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
admin
2011-01-12
67
问题
已知C源程序如下:
/**************************************************/
/* 功能:检查输入的标识符是否符合C语言规则 */
/**************************************************/
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#include<malloc.h>
char*IsLegal(char*CheckWorD) ;
const int MaxWordLen=32;
char*ErrorMessages[]={ /*错误信息列表*/
"合法!",
"首字符只能是字母或下划线!",
"常、变量只能由字母、下划线和数字构成!",
"常、变量标识不能用C语言关键字!"。
"常、变量标识不能用C语言预定义函数名!",
"内存不够!"
};
int main()
{
char*Prompt="C语言标识符的命名要遵守以下原则:";
char*TestWord;
int i;
TestWord=(char*)malloc(sizeof(char)*MaxWordLen);
/*TestWord存放用户输入*/
if(!TestWorD)
return 1;
/*显示部分提示信息*/
puts(Prompt);
for(i=1;i<=4;i++){
puts(ErrorMessages
);
}
while(1){
printf("\n\n请输入一个标识符(大写的Q退出):");/*提示*/
scanf("%s",TestWorD) ; /*得到用户输入*/
if(toupper)(TestWord[0]))==’0’)
break; /*循环出口*/
prind("\n%s %s",TestWord,IsLegal(TestWorD) );/*判定标识符的合法性*/
}
free(TesfWorD) ;
return 0;
}
/*此函数检验标识符命名的合法性*/
char*IsLegal(ehar*CheckWorD)
{
char*KeyWords[]={"auto","break","case","char","continue","const","default",
"do","double","else","enum",extern","float","for","goto",
"if","int","long","noalias","register","return","short",
"signed","sizeof","static","struct","switch","typedef",
"union","unsigned","void","volatile","while","defined",
"define","undef","include","ifdef","ifndef","endif","line",
"error","elif","pragma"}; /*C关键字列表*/
char*Functions[]={"close","crest","eof","fclose","fcloseall","feof","fopen",
"ferror","fgetchar","fgets","fprintf","fputc","fputchar",
"fseek","get","putch","putc","printf","open","putchar",
"puts","read","scanf","abs","acos","asin","math","atan",
"atan2","atof","atoi","atol","ceil","dos","cosh",ecvt",
"exp","fabs","floor","fmod","frexp","itoa","labs","ldexp",
"log","log10","modf","pow","rand","sin","sqrt","srand",
"strtod","strlol","tan","tanh","ultoa","memset","strcpy",
"strcat","strchr","strcrap","calloc","isalnum","isalpha",
"toascii","tolower","tollpper","exit"); /*C主要预定义函数列表*/
char*Others="_"; /*’_’也可以用于关键字,但我们不推荐您使用!*/
int WordLength,i;
char*WordTemp;
WordLength=strlen(CheckWorD) ;
/*检查标识符命名原则1*/
if((isalpha(CheckWord[0])==0)&&(CheckWord[0]!=Others[0]))
return ErrorMessages[1];
/*检查标识符命名原则2*/
for(i=0;i<WordLength;i++)
if((isalnum(CheekWord
==0)&&(CheckWord
!=Others[0]))
return ErrorMessages[2];
/*检查标识符命名原则3*/
for(i=0;i<44;i++)
{
if(!strcmp(CheckWord,KeyWords
))
return ErrorMessages[3];
}
/*检查标识符命名原则4 */
for(i=0;i<69;i++)
{
if(!stremp(CheckWord,Functions
))
return ErrorMessages[4];
}
return ErrorMessages[0];
}
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
选项
答案
测试用例: ①输入:bookCount,输出:合法! ②输入:puts,输出:常、变量标识不能用C语言预定义函数名! ③输入:5student,输出:首字符只能是字母或下划线! ④输入:stu+name,输出:常、变量只能由字母、下划线和数字构成! ⑤输入:float,输出:常、变量标识不能用C语言关键字! ⑥输入:putsfloatstudentsnamechinachineseenglishchinachinesechinachina,输出:内存不够! ⑦输入:_StuId,输出:合法! 该程序的语句覆盖率或分支覆盖率均无法达到100%,因为该程序允许中间返回值。如果if条件中任意一个成立就立即返回,那么剩下的语句就无法执行;即使所有的if条件均不成立。运行到最后,那么if条件成立时的语句就无法执行,其覆盖率始终无法达到100%。
解析
转载请注明原文地址:https://kaotiyun.com/show/pwNZ777K
本试题收录于:
四级软件测试工程师题库NCRE全国计算机四级分类
0
四级软件测试工程师
NCRE全国计算机四级
相关试题推荐
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[函数2.1说明]下面程序的功能是:将由键盘输入的某个十进制数转换成对应的R进制数并输出。这里R是2到16的整数,由键盘输入。例如,输入n=128,base=13后的输出为9B。
阅读以下说明和流程图,回答问题,并将解答填入对应栏内。【说明】求解约瑟夫环问题。算法分析:n个士兵围成一圈,给他们依次编号,班长指定从第w个士兵开始报数,报到第s个士兵出列,依次重复下去,直至所有士兵都出列。【流程图】
阅读以下程序说明和C++程序,将程序段中(1)~(5)空缺处的语句填写完整。【说明】以下【C++程序】实现一个简单的小型复数类MiniComplex,该复数类能进行输入、输出、复数的加法、减法、乘法和除法运算,还可以进行复数的相等比较。
阅读以下应用说明及VisualBasic部分程序代码,将应填入(n)处的字句写在对应栏内。【说明】该应用程序是用来修改文本框中的字体属性,其运行窗口如图4所示。窗口由1个标签(Labell)、1个文本框(txtPassage)和4个选择
阅读以下说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】c++标准模板库中提供了map模板类,该模板类可以表示多个“键一值”对的集合,其中键的作用与普通数组中的索引相当,而值用作待存储和检索的数据。此外,c++模板库还提供
阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。【说明】二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:•若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;•若它的右子树非空,则其右子树上所有结点的键
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:
阅读以下说明和C函数,填补代码中的空缺。【说明】函数Combine(LinkListLa,LinkListLb)的功能是:将元素呈递减排列的两个含头结点单链表合并为元素值呈递增(或非递减)方式排列的单链表,并返回合并所得单链表的头指针。例如
字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下:typedefstruct{char*str;//字
软件的复杂性与许多因素有关。______不属于软件的复杂性参数。
随机试题
判断组织兴奋性高低最常用的简便指标是
离心式暖风机的布置原则是________。
当事人负债务,有先后履行顺序的,先履行的一方未履行的,后履行的一方有权拒绝其履行要求,这种情况为( )。
在项目施工实践中,必须树立和坚持一个最基本的工程管理原则,即在()的前提下,控制工程的进度。
中国证券监督管理委员会制定的《上市公司信息披露管理办法》属于()。(2012年)
公司是以营利为目的的经济组织,但是不具备法人资格。()
()比较系统地初步总结了“大跃进”以来经济建设工作的基本经验教训。
自1945年以来,局部战争几乎不断,但是却未发生像二次世界大战那样严重的世界战争,这是因为人们恐惧于世界大战的破坏力导致的。下列哪项如果正确,最能削弱上述结论?
在考生文件夹下,打开文档WORD2.DOCX,按照要求完成下列操作并以该文件名(WORD2.DOCX)保存文档。【文档开始】2001年11月1日全球主要市场指数一览【文档结束】设置表格居中;表格中的第1行和第1列文字水平
A、It’sfineasitis.B、Onlyafewchangesshouldbemadeinit.C、Majorrevisionsamneededinit.D、Itwon’tbeapprovedbyth
最新回复
(
0
)