首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
admin
2011-01-12
21
问题
已知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程序,将C程序段中(1)—(7)空缺处的语句填写完整。[说明]打保龄球是用一个滚球去打出10个站立的柱,将柱击倒。一局分10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为10轮得分之和,而每轮的得分不
阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。[说明]下面的流程图用于统计一个英文句子中单词的个数N。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。[流程图]
阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Java程序中(1)-(5)空缺处的语句填写完整。[说明]某订单管理系统的部分UML类图如图3-21所示。图3-21某订单管理系统的部分分类图
请将【算法4-1】和【算法4-2】中,(1)~(7)空缺处的内容补充完整。请从以下选项中选择相应的判断逻辑填写【算法4-2】中的“判断条件1”至“判断条件3”。注意,如“判断条件2”的逻辑判断结果为假,则无须对“判断条件3”进行判断。判断条件1
函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。(1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。(2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整
阅读以下说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】c++标准模板库中提供了map模板类,该模板类可以表示多个“键一值”对的集合,其中键的作用与普通数组中的索引相当,而值用作待存储和检索的数据。此外,c++模板库还提供
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。【说明1】函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。【c函数】1.输入5测试上述main函数时,显示结果如
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。【C语言程序】#i
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]函数intpsort(inta[],intn)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素
阅读以下说明,回答问题1至问题5。[说明]客户机TUser连接终端服务器TServer的网络拓扑示意图如图2-1所示。关于终端服务器的安装,说法正确的是______。A.在安装Windows2003操作系统时已默认安装终端服务
随机试题
滚动预算按其滚动的时间单位不同可分为()。
古典时期的时间跨度一般为()
患者,嘈杂而兼见面胱唇淡,心悸,头晕,目眩,舌淡,脉细者。方选
A.《英国国家处方集》B.《药物事实与比较》C.《美国药典药物信息》D.《马丁代尔药物大典》E.《美国医院处方集服务药物信息》收录药物4万多个,每年更新一次的是()。
下列盈利能力比率公式中错误的是()。
外汇是指以外币表示的可用于国际结算的一种支付手段,中国对外汇实行国家集中管理、统一经营的方针。()
给定资料1.官员财产申报制度是政治文明进程的重要组成部分,是国家政治民主的必然要求。自从1883年英国《净化选举、防止腐败法》出台以来,被称为“阳光法案”的官员财产申报制度就成为世界各主要文明国家防止公共权力腐败的关键性制度安排,它是以宪法和行政
家是最小的国,国是千万家,家庭的前途命运同国家的民族的前途命运紧密相连,习近平主席十分重视家风建设,他在会见第一届全国文明家庭代表时指出:“广大家庭都要弘扬优良家风,以千千万万家庭的好家风支撑起全社会的好风气。”“弘扬优良家风”体现的哲学观点是()
A、正确B、错误A语义理解题。根据原文Withvideo,you’reapassiveviewer,andeventsarerecordedasis,withnoroomtoembellish可知用录像机时,你成为被动的观看者
Somepeopleseemtohaveaknack(诀窍)forlearninglanguages.Theycanpickupnewvocabulary,masterrulesofgrammar,andlearn
最新回复
(
0
)