首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
已知C源程序如下: /**************************************************/ /* 功能:检查输入的标识符是否符合C语言规则 */ /**************************
admin
2011-01-12
29
问题
已知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];
}
参照QESAT/C软件分析与测试工具的规定,画出程序中所有函数的控制流程图;
选项
答案
[*]
解析
转载请注明原文地址:https://jikaoti.com/ti/sPE7FFFM
本试题收录于:
四级软件测试工程师题库NCRE全国计算机四级分类
0
四级软件测试工程师
NCRE全国计算机四级
相关试题推荐
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明2.1】L为一个带头结点的循环链表。函数deletenode(LinkListL,intc)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[函数2.1说明]下面程序的功能是:将由键盘输入的某个十进制数转换成对应的R进制数并输出。这里R是2到16的整数,由键盘输入。例如,输入n=128,base=13后的输出为9B。
阅读以下说明及VisualBasic程序代码,将应填入(n)处的字句写在对应栏内。[说明]我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB11643-1989〗和〖GB11643-1999〗。〖CB11643-1989〗
阅读以下程序说明和java代码,将应填入(n)处的字句写在对应栏内。[说明]本程序接收输入的学生信息,包括学号、姓名、成绩,原样输出信息并计算学生的平均成绩。其中学生类Stud除了包括no(学号)、name(姓名)和grade(成绩)数据成员外,
阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。[说明]下面的程序利用递归算法计算x和y的最大公约数。[函数2.1]main(){intx,y,k,t;scanf("%d%d",&x,&y);
阅读以下说明和Java代码,将解答写入对应栏内。【说明】下面是一个Applet程序,其功能是输出已定义好的两个变量x和chr。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。i
阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。【流程图】下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果
请将【算法4-1】和【算法4-2】中,(1)~(7)空缺处的内容补充完整。请从以下选项中选择相应的判断逻辑填写【算法4-2】中的“判断条件1”至“判断条件3”。注意,如“判断条件2”的逻辑判断结果为假,则无须对“判断条件3”进行判断。判断条件1
请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1和问题2。【说明】传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Cl
阅读以下程序说明和C语言程序,将应填入(n)处的字句写在对应栏内。【说明】希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应
随机试题
关于债券和股票相同点的说法错误的是()。
夜寐盗汗,五心烦热,或兼午后潮热,两颧色红,口渴,舌红苔少,脉细数,治疗宜选
A.无痛性梗阻性黄疸B.左上腹痛突出,反射到腰背部,夜痛尤剧C.肝和胆囊肿大压痛D.脐周蓝色改变(Cullen征)E.消瘦、贫血胰体癌的典型临床表现是
有抗疟作用的成分是
A.大黄B.朱砂C.雄黄D.天仙藤E.草乌含汞类而对肾功能有影响的中药是
一个人骑车去工厂上班。他从家出发,用30分钟骑行了一半的路程后,他加快了速度,以每分钟比原来快50米的速度又骑行了10分钟,这时发现距离工厂还有2千米。那么从他家到工厂之间的距离为()千米。
Itonlytakestenminutes,butreadingyourbabyabedtimestorycouldyieldbenefitsforyearstocome,scientistssaidtoday.
调用下面子过程,消息框显示的值是SubSFun() Dimx,y,m x=10 y=100 IfyModxThen m=x Else m=y EndIf MsgBoxm
在Word文档中包含了文档目录,将文档目录转变为纯文本格式的最优操作方法是()。
以下关于编译程序的说法正确的是()。
最新回复
(
0
)