1、二级 C语言笔试-40 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.下列对于软件测试的描述中正确的是_。(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能地多发现程序中的错误D.软件测试的目的是使程序符合结构化原则2.有以下程序#include stdio.hvoid WriteStr(char *fn,char *str)FILE *fp;fp=fopen(fn,“w“);fputs(str,fp);fclose(fp);main()WriteStr(“t1.dat“,
2、“start“);WriteStr(“t1.dat“,“end“);程序运行后,文件 t1.dat中的内容是_。(分数:1.00)A.startB.endC.startendD.endrt3.以下选项中,不能作为合法常量的是_。(分数:1.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e04.有以下程序main()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*p+);程序运行后的输出结果是_。(分数:1.00)A.15B.16C.12D.595.有以下程序main()int a33,*p,i;p=for(
3、i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是_。(分数:1.00)A.0 1 2B.1 2 3C.2 3 4D.3 4 56.有以下程序main()int a=(1,2,3,4,5,6,7,8,9,0),*p;for(p=a;pa+10;p+) printf(“%d,“,*p);程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,7.数据独立性是数据库技术的
4、重要特点之一。所谓数据独立性,是指_。(分数:1.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对8.设有如下说明typedef struct STlong a; int b;char c2; NEW;则下面叙述中正确的是_。(分数:1.00)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量9.有以下程序int f1(int x,int y)return xy?x:y; int f2(int x,int y)return xy?y:x; main()int a=4,b=
5、3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,g);程序运行后的输出结果是_。(分数:1.00)A.4,3,7B.3,4,7C.5,2,7D.2,5,710.以下选项中可作为 C语言合法常量的是_。(分数:1.00)A.-80.B.-080C.-8e1.0D.-80.0e11.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是_。(分数:1.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b
6、数组长度D.上述说法都不对12.有以下程序main()int a=1,b;for(b=1;b=10;b+)if(a=8)break;if(a%2=1)(a+=5;continue;a-=3;printf(“%d/n“,b);程序运行后的输出结果是_。(分数:1.00)A.3B.4C.5D.613.以下叙述中正确的是_。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间14.有以下函数fun(char *a,char *b)while(*a!=/0) b+; return(*a-*b);该函数的功
7、能是_。(分数:1.00)A.计算 a和 b所指字符串的长度之差B.将 b所指字符串连接到 a所指字符串中C.将 b所指字符串连接到 a所指字符串后面D.比较 a和 b所指字符串的大小15.以下对结构体类型变量 td的定义中,错误的是_。(分数:1.00)A.typedef struct aaint n;float m;AA;AA td;B.struct aaint n;float m;td;struct aa td;C.structint n;floatm;aa;struct aa td;D.structint n;float m;td;16.以下语句或语句组中,能正确进行字符串赋值的是_。
8、(分数:1.00)A.char *sp;*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char sp=“right!“;17.为了使模块尽可能独立,要求_。(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强18.有以下程序main()char a7=“a0/0a0/0“; int i,j;i=sizeof((分数:1.00)A.;
9、j-strlen(a);b19.若有以下说明和定义union dtint a;char b; double c;data;以下叙述中错误的是_。(分数:1.00)A.data的每个成员起始地址都相同B.变量 data所占的内存字节数与成员 c所占字节数相等C.程序段:data.a=5;printf(“%f/n“,data.c);的输出结果为 5.000000D.data可以作为函数的实参20.对长度为 n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为_。(分数:1.00)A.log2nB.n/2C.nD.n+121.以下叙述中正确的是_。(分数:1.00)A.用 C语言实现的算法必须要
10、有输入和输出操作B.用 C语言实现的算法可以没有输出,但必须要有输入C.用 C程序实现的算法可以没有输入,但必须要有输出D.用 C程序实现的算法可以既没有输入,也没有输出22.有以下程序point(char *p) p+=3; main()char b4=a,b,c,d,*p=b;point(p); printf(“%c/n“,*p);程序运行后的输出结果是_。(分数:1.00)A.aB.bC.cD.d23.下列对于线性链表的描述中正确的是_。(分数:1.00)A.存储空间不一定连续,且各元素的存储顺序是任意的B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各
11、前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的24.下列关于栈的描述中错误的是_。(分数:1.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针25.有以下程序#defihe P 3void F(int x) return(P*x*x); main()printf(“%d/n“,F(3+5); 程序运行后的输出结果是_。(分数:1.00)A.192B.29C.25D.编译出错26.以下不能定义为用户标识符的是_。(分数:1.00)A.mainB._0C._intD.sizeof27.数字字符 0的
12、ASCII值为 48,若有以下程序main()char a=1,b=2;printf(“%c,“,b+);printf(“%d/n“,b-(分数:1.00)A.;28.有以下语句:int b;char c10;,则正确的输入语句是_。(分数:1.00)A.scanf(“%d%s“,B.scanf(“%d%s“,C.scanf(“%d%s“,b,c);D.scanf(“%d%s“,b,29.以下叙述中错误的是_。(分数:1.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行时,若数组元素的下标超出所
13、定义的下标范围,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数30.有以下程序prt(int *m,int n)int i;for(i=0;in;i+)mi+;main()int a=(1,2,3,4,5),i;prt(a,5);for(i=0;i5;i+) printf(“%d,“,ai);程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1,31.有以下程序main()int p8=(11,12,13,14,15,16,17,18),i=0,j=0;while(i+7)if(p
14、i%2) j+=pi;printf(“%d/n“,j);程序运行后的输出结果是_。(分数:1.00)A.42B.45C.56D.6032.有以下程序main()int m=12,n=34;printf(“%d%d“,m+,+n);printf(“%d%d/n“,n+,+m);程序运行后的输出结果是_。(分数:1.00)A.12353514B.12353513C.12343514D.1234351333.有以下程序main()int c=35; printf(“%d/n“,c 程序运行后的输出结果是_。(分数:1.00)A.0B.70C.35D.134.算法具有五个特性,以下选项中不属于算法特性
15、的是_。(分数:1.00)A.有穷性B.简洁性C.可行性D.确定性35.用树形结构表示实体之间联系的模型是_。(分数:1.00)A.关系模型B.网状模型C.层次模型D.以上三个都是36.以下能正确定义一维数组的选项是_。(分数:1.00)_37.有以下程序main()int m,n,p;scanf(“m=%dn=%dp=%d“,printf(“%d%d%d/n“,m,n,p);若想从键盘上输入数据,使变量 m中的值为 123,n 中的值为 456,p 中的值为 789,则正确的输入是_。(分数:1.00)A.m=123n=456p=789B.m=123 n=456 p=789C.m=123,n
16、=456,p=789D.123 456 78938.程序中若有如下说明和定义语句char fun(char *);main()char *s=“one“,a5=0,*f1)()=fun,ch;以下选项中对函数 fun的正确调用语句是_。(分数:1.00)A.(*f1)(a);B.*f1(*s);C.fun(D.ch=*f1(s);39.下列描述中正确的是_。(分数:1.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合40.数据的存储结构是指_。(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计
17、算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示41.有以下程序main()int a,b,d=25;a=d/10%9;b=aprintf(“%d,%d/n“,a,b);程序运行后的输出结果是_。(分数:1.00)A.6,1B.2,1C.6,0D.2,042.有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向此链表中的三个连续结点。struCt nodeint data; struct node *next;*p,*q,*r;现要将 q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是_。(分数:1.00)A.B.C.D.43.有以下程序void f(
18、int *x,int *y)int t;t=*x;*x=*y;*y=t;main()int a8=(1,2,3,4,5,6,7,8),i,*p,*q;p=a,q=while(pf(p,q); p+; q-; for(i=0;i8;i+)printf(“%d,“,ai);程序运行后的输出结果是_。(分数:1.00)A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5,4,3,2,1,44.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是_。(分数:1.00)A.1B.2
19、C.3D.445.有以下程序main()int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i=0;i4;i+)for(j=0;ji;j+)printf(“%4c“, );for(j= (分数:1.00)A.B.C.D.46.以下与函数 fseek(fp,0L,SEEK_SET)有相同作用的是_。(分数:1.00)A.feof(fp)B.ften(fp)C.fgetc(fp)D.rewind(fp)47.有以下程序#define N 20fun(int a,int n,int m)int i,j;for(i=m;i=n;i-)ai+
20、1=ai;main()int i,aN=(1,2,3,4,5,6,7,8,9,10);fun(a,2,9);for(i=0,i5;i+)printf(“%d“,ai);程序运行后的输出结果是_。(分数:1.00)_48.对于长度为 n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是_。(分数:1.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/249.有以下程序main()int i=1,j=2,k=3;if(i+=1程序运行后的输出结果是_。(分数:1.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 350.有以下程序
21、main()int a32=(0),(*ptr)2,i,j;for(i=0;i2;i+)ptr=a+i; scanf(“%d“,ptr); ptr+; for(i=0;i3;i+)for(j=0;j2;j+) printf(“%2d“,aij);printf(“/n“);若运行时输入:1 2 3回车,则输出结果是_。(分数:1.00)_二、填空题(总题数:18,分数:36.00)51.某二叉树中度为 2的结点有 18个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_52.在面向对象方法中,类的实例称为 1。(分数:2.00)填空项 1:_53.诊断和改正程序中错误的工作通常称
22、为 1。(分数:2.00)填空项 1:_54.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_55.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_56.以下程序运行时,若从键盘输入:10 20 30回车。输出结果是_。#include stdio.hmain()int i=0,j=0,k=0;acanf(“%d%*d%d“,printf(“%d%d%d/n“,I,j,k);(分数:2.00)填空项 1:_57.以下程序运行后的输出结果是_。#defihe S(x) 4*x*x+1main()int i=6,j=8;printf
23、(“%d/n“,S(i+j);(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是_。main()int a=3,b=4,c=5,t=99;if(baa=c;c=t;if(acb=a;a=tprintf(“%d%d%d/n“,a,b,c);(分数:2.00)填空项 1:_59.以下程序运行后的输出结果是_。main()int a,b,c;a=10;b=20;c=(a%b1)|(a/b1);printf(“%d %d %d/n“,a,b,c);(分数:2.00)填空项 1:_60.以下程序运行后的输出结果是_。main()char c1,c2;for(c1=0,c2=9;c1c2;c
24、1+,c2-) printf(“%c%c“,c1,c2);printf(“/n“);(分数:2.00)填空项 1:_61.已知字符 A的 ASCII码值为 65,以下程序运行时,若从键盘输入:B33回车,则输出结果是_。#includemain()char a,b;a=getchar();scanf(“%d“,a=a-A+0;b=b*2;printf(“%c %c/n“,a,b);(分数:2.00)填空项 1:_62.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值,请填空。void fun(int,int,int(*)4,int *);main()int a34=12
25、,41,36,28,19,33,15,27,3,27,19,11,b3,j;fun(3,4,a,b);for(i=0;i3;i+)printf(“%4d“,bi);printf(“/n“);void fun(int m,int n,n tar4,int *bar)int i,j,x;for(i=0;im;i+)x=ari0;for(j=0;jn;j+) if(xarij)x=arij;_=x;(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是_。void swap(int x,int y)int t;t=x;x=y;y=t; printf(“%d %d “,x,y);main()
26、int a=3,b=4;swap(a,b); printf(“%d %d/n“,a,b);(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是_。#include string.hvoid fun(char *s,int p,int k)int i;for(i=p;ik-1;i+) si=si+2;main()char s=“abcdefg“;fun(s,3,strlerl(s); puts(s);(分数:2.00)填空项 1:_65.以下程序运行后的输出结果是_。#include string.hmain()char ch=“abc“,x34;int i;for(i=0;i3;i
27、+) strcpy(xi,ch);for(i=0;i3;i+)printf(“%s“,printf(“/n“);(分数:2.00)填空项 1:_66.以下程序运行后的输出结果是_。fun(int a)int b=0; static int c=3;b+;c+;return(a+b+c);main()int i,a=5;for(i=0;j3;i+)printf(“%d %d“,i,fun(a);printf(“/n“);(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是_。struct NODEint k;struct NODE *link;main()struct NODE m5
28、,*pm,*q=m+4;int i=0;while(P!=q)p-k=+i;p+;q-k=i+;q-;q-k=i;for(i=0;i5;i+)printf(“%d“,mi.k);printf(“/n“);(分数:2.00)填空项 1:_68.以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文,即正向与反向的拼写都一样,例如:adgda。请填空。#include string.hchar *huiwen(char *str)char *p1,*p2;int i,t=0;p1=str; p
29、2= (18) ;for(i=0;i=strlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if( (19) )return(“yes!“);else return(“no!“);main()char str50;printf(“Input:“);scanf(“%s“,str);printf(“%s/n“, (20) );(分数:2.00)填空项 1:_二级 C语言笔试-40 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.下列对于软件测试的描述中正确的是_。(分数:1.00)A.软件测试的目的是证明程序是否正确B.
30、软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能地多发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试是为了发现错误而执行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例,一个成功的测试是发现了至今尚未发现的错误的测试。软件测试是以查找错误为中心,而不是演示软件的正确功能。所以软件测试的目的是尽可能多地发现程序中的错误。2.有以下程序#include stdio.hvoid WriteStr(char *fn,char *str)FILE *fp;fp=fopen(fn,“w“);fputs(str,fp);fclose(fp);m
31、ain()WriteStr(“t1.dat“,“start“);WriteStr(“t1.dat“,“end“);程序运行后,文件 t1.dat中的内容是_。(分数:1.00)A.startB.end C.startendD.endrt解析:解析 本题考查打开文件函数 fopen()。本题中,fopen(fn,“w“)的第一个参数是需要打开的文件名,第二个参数指定文件打开的方式。“w“表示为写而打开一个文本文件,如果文件不存在,则新建一个文件,否则将清空原文件。fputs(str,fp)是将 str的内容写入文件。fclose()是关闭文件。在主函数中两次调用写文件函数,但因为写入的是同一个文
32、件,所以只有最后一次的写入才有效。所以选项 B正确。3.以下选项中,不能作为合法常量的是_。(分数:1.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:解析 实型常量的指数表示法是用字母 e(或 E)将实数的小数部分和指数部分分开,字母 e(或 E)之前的是小数部分,之后的是指数部分,这两部分都不能省略,且指数部分必须是整数。所以选项 B不能作为合法常量。4.有以下程序main()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*p+);程序运行后的输出结果是_。(分数:1.00)A.15 B.16
33、C.12D.59解析:解析 本题考查运算符的优先级以及结合性。本题关键在于求解表达式*p+的值。*和+的优先级相同,但结合性是“从右至左”,即*p+等价于*(p+),由于 p+返回的是 p自加之前的值,所以此处输出的是数组的第一个元素的值“1”,而此时 p已指向数组的第二个元素,所以第二次输出的是“5”。所以选项 A正确。5.有以下程序main()int a33,*p,i;p=for(i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是_。(分数:1.00)A.0 1 2B.1 2 3C.2 3 4D.3 4 5 解析:解析 本题考
34、查二维数组在内存中的排列形式。在 C语言中,二维数组或多维数组在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快。如题中的二维数组 a33,其 9个元素在内存中的排列顺序是:a00,a01,a02,a10,a11,a12,a20,a21,a22。在主函数中,定义了一个整型指针 p指向二维数组 a的第一个元素 a00。然后在第一个 for循环中利用 p将数组 a的元素按顺序初始化为 08 共 9个值,然后在第二个 for循环中将 a10、a11、a12三个元素的值依次输出。所以选项 D正确。6.有以下程序main()int a=(1,2,3,4,5,6,7
35、,8,9,0),*p;for(p=a;pa+10;p+) printf(“%d,“,*p);程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,0, B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,解析:解析 在 for循环中,指针 p从数组 a的首地址开始递增遍历到 a+9,即数组 a的最后一个元素,在循环体中输出当前 p所指数据的内容和字符,。所以选项 A正确。7.数据独立性是数据库技术的重要特点之一。所谓数据独立性,是指_。(分数:1.00)A.数据与程序独立存放B.不同
36、的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对 解析:解析 数据独立性是数据与程序的互不依赖性,即数据库中数据独立于应用程序,而不依赖于应用程序。8.设有如下说明typedef struct STlong a; int b;char c2; NEW;则下面叙述中正确的是_。(分数:1.00)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型 D.NEW是一个结构体变量解析:解析 本题考查结构体的定义。将题中的定义语句去掉前面的 typedef和后面的 NEW,就是一条完整的结构体定义语句。此时要声明该结构体变量时需用 struct
37、加结构体名一起来声明,即 struct ST一起构成一个结构体类型。若保留 NEW,就是一条结构体定义的同时声明一个结构体变量 NEW的语句。C语言中允许用 typedef说明一种新类型名,语法格式为:typedef 类型名 标识符;以后就可以用该标识符代替被说明的类型了。所以当前面存在 typedef时,NEW 就成了 struct ST的新名称,即 NEW成了一个结构体类型,而 sT只是一个结构体名。所以,选项 C正确。9.有以下程序int f1(int x,int y)return xy?x:y; int f2(int x,int y)return xy?y:x; main()int a
38、=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,g);程序运行后的输出结果是_。(分数:1.00)A.4,3,7 B.3,4,7C.5,2,7D.2,5,7解析:解析 本题考查函数的综合应用。函数 f1和 f2都只有一条语句。函数 f1的作用是返回两个数中的较大值,而函数 f2的作用是返回两个数中的较小值。语句 e=f2(f1(a,b),f1(c,d);使用两次调用f1()函数的返回值作为 f2()函数的参数,并将 f2()的返回值赋给 e
39、。可知 e的最终结果为 4,同样,f 的值为 3,所以 g=a+b+c+d-e-f=7。所以 A正确。10.以下选项中可作为 C语言合法常量的是_。(分数:1.00)A.-80. B.-080C.-8e1.0D.-80.0e解析:解析 选项 A是整型常量的十进制表示法,正确。八进制数表示法以 0或-0 开头,且“逢八进一”,所以选项 B错误。实型常量的指数表示法是用字母 e(或 E)将实数的小数部分和指数部分分开,字母e(或 E)之前的是小数部分,之后的是指数部分,这两部分都不能省略,且指数部分必须是整数,所以选项 C和 D错误,选 A。11.已有定义:char a=“xyz“,b=x,y,z
40、;,以下叙述中正确的是_。(分数:1.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度 D.上述说法都不对解析:解析 本题考查字符型一维数组的初始化。字符型一维数组在定义并初始化时,可以使用初始化列表或者字符串常量。因为字符串常量会自动在结尾添加/0字符作为字符串结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加 1。题中的 chat a=“xyz“可以改写为 char a=x,y,z,/0)所以 a数组的长度大于 b数组的长度,选项 C正确。12.有以下程序main()int a=1,b;for(b=1;b=10;b+)if(a=8)b
41、reak;if(a%2=1)(a+=5;continue;a-=3;printf(“%d/n“,b);程序运行后的输出结果是_。(分数:1.00)A.3B.4 C.5D.6解析:解析 本题考查 break与 continue语句。在一个循环体中,若执行到 break,则跳出循环;若执行到 continue,则开始执行下一次的循环体。在本题的 for循环中,先判断 a是否大于等于 8,若是,则跳出循环。然后判断 a是否为奇数,若是则 a加上 5,且马上执行下一次的循环。若 a小于 8且是偶数,则减去 3。第一次循环开始时,a 为 1,所以 a加 5,并开始下一次循环。第二次循环开始时,a 为 6
42、,所以执行 a-=3;。第三次循环开始时,a 为 3,所以 a加 5且开始下一次循环。第四次循环开始时,a 为 8,所以跳出循环。而第一次循环时,b 为 1,以后每进行一次循环就累加 1,所以最后输出为 4。选项 B正确。13.以下叙述中正确的是_。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间 解析:解析 在 C语言中,凡是以“#”开头的行,都称为“编译预处理”命令行。可以出现在程序的任何一行的开始部位,每条预处理命令至少占一行,所以选项 A、B 错误。宏名可以是任何合法的 C语言标识符,
43、通常习惯用大写字母,所以 C错误。宏替换的过程在编译时期就已经完成了,因此,不会占用程序的运行时间,所以选项 D正确。14.有以下函数fun(char *a,char *b)while(*a!=/0) b+; return(*a-*b);该函数的功能是_。(分数:1.00)A.计算 a和 b所指字符串的长度之差B.将 b所指字符串连接到 a所指字符串中C.将 b所指字符串连接到 a所指字符串后面D.比较 a和 b所指字符串的大小 解析:解析 本题函数有两个字符指针的参数,且没有定义返回类型,C 语言规定函数的返回类型为 int时可以省略,所以本题函数返回的是 int型。该函数中先是一个 whi
44、le循环,循环条件是(*a!=/0)b+;,即 a、b 各向后移一位。当 a或 b中有一个结束或者所指的内容不一样时,就退出循环,执行返回语句,返回 a所指内容减去 b所指内容的差。若两个字符串相同,则最后返回/0-/0=0,否则返回这两个字符串的第一对不同的字符之差。由此可以看出,该函数实现的是对两个字符串的比较。所以选项 D正确。15.以下对结构体类型变量 td的定义中,错误的是_。(分数:1.00)A.typedef struct aaint n;float m;AA;AA td;B.struct aaint n;float m;td;struct aa td;C.structint n
45、;floatm;aa;struct aa td; D.structint n;float m;td;解析:解析 本题考查结构体变量的声明。选项 A使用 typedef语句给结构体 aa定义了一个新的名称AA,所以可用 AA直接声明结构体变量 td。选项 B中,前一句是定义结构体的同时声明结构体变量 td,后一句是使用结构体名 aa声明结构体变量 td,都正确。选项 C的第一条语句和选项 D都是使用无名结构体直接声明变量,是正确的,但选项 C的第二条语句使用结构体变量声明 td是错误的。所以选项 C符合题意。16.以下语句或语句组中,能正确进行字符串赋值的是_。(分数:1.00)A.char *sp;*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char sp=“right!“; 解析:解析 本题考查字符串常量的概念。字符串常量是
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1