1、二级 C语言笔试-334 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.有以下程序:main()int i;for(i=0;i3;i+)switch(i)case 0: prinft(“%d“,i);Case 2: prinft(“%d“,i);default: prinft(“%d“,i);程序运行后的输出结果是( )。(分数:1.00)A.022111B.021021C.000122D.0122.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是( )。(分数:1.00)A.把软件划分成模块B.确定模块之间的调用关系C.确
2、定各个模块的功能D.设计每个模块的伪代码3.有以下程序:#include stdio.hmain()int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(“%d %d /n“,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.运行后报错B.66C.611D.5104.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是( )。(分数:1.00)A.abs(x-y)10B.x-y-10for(b=1;b=c;b+) s=s+1;则与上述程序段功能等价的赋值语句是( )。(分数:1.
3、00)A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;6.有以下程序:main()char *p10=“abc“,“aabdfg“,“dcdbe“,“abbd“,“cd“);printf(“%d/n“, strlen(p4);执行后输出结果是( )。(分数:1.00)A.2B.3C.4D.57.有以下程序:fun (iht a,int b)if(ab)return((分数:1.00)A.;else return(B.;b=p5;b中的值是( )。(分数:1.00)A.5B.6C.8D.99.下面程序的功能是输出以下形式的金字塔图案:*main()int i,j;for(i=1;
4、i=4;i+)for(j=1;j=4-i;j+)printf(“ “);for(j=1;j=( );j+)printf(“*“);printf(“/n“);在下划线处应填入的是( )。(分数:1.00)A.iB.2*-1C.2*i+1D.i+210.在面向对象的程序设计中,能表示类之间相似性质的机制是( )。(分数:1.00)A.继承B.封装C.分类D.动态连接11.有以下程序:int f(int b4)int i,j,s=0;for(j=0;i4;i+)i=j;if(i2) i=3-j;s+=bij;return s;main()int a44=1,2,3,4,0,2,4,6,3,6,9,1
5、2,3,2,1,0;printf(“%d/n“,f((分数:1.00)A.);不能给数组 a输入字符串的语句是( )。(分数:1.00)A.gets(a)B.gets(a10)C.gets(if(ij)t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+) printf(“%d,“,aai);printf(“/n“);执行后输出结果是( )。(分数:1.00)A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,16.有以下程序:void f(int
6、 v,int w)int t;t=v;V=W;W=t;main()int x=1,y=3,z=2;if(xy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(“%d,%d%d/n“,x,y,Z);执行后输出结果是( )。(分数:1.00)A.1,2,3B.3,1,2C.1,3,2D.2,3,117.s1和 s2已正确定义并分别指向两个字符串。若要求:当 s1所指字符串大于 s2所指字符串时,执行语句 S;则以下选项中正确的是( )。(分数:1.00)A.if(sls2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s10)
7、S;D.if(strcmp)(s1,s2)0)S;18.若程序中定义了以下函数:double myadd(double a,double b)return (a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。(分数:1.00)A.double myadd(double a,b);B.double myadd(double,double);C.double myadd(double b,doublea);D.double myadd(double x,double y);19.有以下程序:main()int i,s=0;for(i=1;i10;i+
8、=2) s+=i+1;ptintf(“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和20.有以下程序:main()int i,n=0;for(i=2;i5;i+)doif(i%3) continue;n+;while(!i);n+;printf(“n=%d/n“,n);程序执行后的输出结果是( )。(分数:1.00)A.n=5B.n=2C.n=3D.n=421.C语言中用于结构化程序设计的 3种基本结构是( )。(分数:1.00)A.顺序结构、选择结构、循环结构B
9、.if、switch、breakC.for、while、do-whileD.if、for、continue22.设有如下程序段:x=2002,y=2003;printf(“%d/n“,(x,y);则以下叙述中正确的是( )。(分数:1.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 200323.规范化理论中分解( )主要是消除其中多余的数据相关性。(分数:1.00)A.关系运算B.内模式C.外模式D.视图24.一个数据元素第一个元素的存储地址是 100,每个元素的长度为 2,则第 5个元素的地址是( )。(分数:1.
10、00)A.110B.108C.100D.12025.有以下程序:main()unsigned char a,b,c;a=0x3; b=a|0x8; c=b1;printf(“%d%d/n“,b,C);程序运行后的输出结果是( )。(分数:1.00)A.-11 12B.-6 -13C.12 24D.11 2226.设有以下定义:int a=0; double b=1.25; char c=A;#define d 2则下面语句中错误的是( )。(分数:1.00)A.a+;B.b+;C.c+;D.d+;27.在函数调用过程中,如果函数 funA调用了函数 funB,函数 funB又调用了函数 fun
11、A,则( )。(分数:1.00)A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用28.有以下程序:void sort(int a,int n)int i,j,t;for(i=0;in-1;i+=2)for(j=i+2;jn;j+=2)if(aiaj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa,10);for(i=0;i10;i+) printf(“%d“,aai);printf(“/n“);其输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7
12、,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.9,2,7,4,5,6,3,8,1,10,D.1,10,3,8,5,6,7,4,9,2,29.以下程序试图把从终端输入的字符输出到名为 abc.txt的文件中,直到从终端读入字符#时结束输入和输出操作,但程序有错。#includestdio.hmain()FILE *fout; char ch;fout=fopen(abc.txt,W);ch=fgetc(stdin);while (ch!=#)fputc (ch,fout);ch=fgetc(stdin);fclose (fout);出错的原因是( )。(分数:1.00)A.函
13、数 fopen调用形式错误B.输入文件没有关闭C.函数 fgetc调用形式错误D.文件指针 stdin没有定义30.有以下程序:struct STUchar num10; float score3;);main()struct stu s3=“20021“,90,95,85,“20022“,95,80,75,“20023“,100,95,90,*p=s;int i; float sum=0;for(i=0;i3,i+)sum=sum+p-scorei;printf(“%6.2f/n“,sum);程序运行后的输出结果是( )。(分数:1.00)A.260.00B.270.00C.280.00D.
14、285.0031.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )。(分数:1.00)A.char s10=“abcdefg“;B.char t=“abcdefg“,*s=t;C.char s10;s=“abcdefg“;D.char s10;strcpy(s,“abcdefg“);32.下面程序的输出结果是( )。include stcdio.hf(int b,int n)int i,r;r = 1;for(i=0;i=n;i+)r=r*bi;return r;main()int x,a=2,3,4,5,6,7,8,9;x=f(a,3);printf(“%d/n“,x);(分
15、数:1.00)A.720B.120C.24D.633.有以下程序:main()int x=0,y=5,z=3;while(z-0printf(“%d,%d,%d/n“,x,y,z);程序执行后的输出结果是( )。(分数:1.00)A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-534.下列工具中,属于需求分析常用工具的是( )。(分数:1.00)A.PFDB.PADC.N-SD.DFD35.在一个 C程序中( )。(分数:1.00)A.main函数必须出现在所有函数之前B.main函数可以在任何地方出现C.main函数必须出现在所有函数之后D.main函数必须出现在固定位置36.
16、软件调试的目的是( )。(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能37.若有定义“int*p3;”,则以下叙述中正确的是( )。(分数:1.00)A.定义了一个基类型为 int的指针变量 p,该变量具有 3个指针B.定义了一个指针数组 p,该数组含有 3个元素,每个元素都是基类型为 int的指针C.定义了一个名为*p 的整型数组,该数组含有 3个 int类型元素D.定义了一个可指向一维数组的指针变量 p,所指一维数组应具有 3个 int类型元素38.设有二元关系 R和三元关系 S,下列运算中合法的是( )。(分数:1.00)A.RUSB.RNSC.R-SD.
17、RXS39.若有如下定义:int x=6,y=3,z=2;则表达式 x=y|yzp=(char*)malloc(sizeof(char)*20); q=p;scanf(“%s%s“,p,q); ptintf(“%s%s/n“,p,q);若从键盘输入 abc def回车,则输出的结果是( )。(分数:1.00)A.def defB.abc defC.abc dD.d d41.关系数据库的数据及更新操作必须遵循( )等完整性规则。(分数:2.00)A.实体完整性和参照完整性B.参照完整性和用户自定义完整性C.实体完整性和用户自定义完整性D.实体完整性、参照完整性和用户自定义完整性42.已有定义:i
18、nt i,a10,*p;,则合法的赋值语句是( )。(分数:2.00)A.p=100;B.p=a5C.p=a2+2D.p=a+2;43.有以下程序:#includestdio.hmain()FILE *fp; int i,k=0,n=0;fp=fopen(“d1.dat“,“w“);for(i=1;i4;i+) fprintf(fp,“%d“,i);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d%d“, printf(“%d %d/n“, k,n);fclose(fp);执行后输出结果是( )。(分数:2.00)A.1 2B.123 0C.1 2
19、3D.0 044.下列叙述中正确的是( )。(分数:2.00)A.C语言中既有逻辑类型也有集合类型B.C语言中没有逻辑类型但有集合类型C.C语言中有逻辑类型但没有集合类型D.C语言中既没有逻辑类型也没有集合类型45.有以下程序:#include string.hmain(int argc, char *argv )int i,len=0;for(i=1;iargc;i+=2) len+=strlen(argvi);printf(“%d/n“,len);经编译链接后生成的可执行文件是 ex.exe,若运行时输入以下带参数的命令行ex abcd efg h3 k44执行后输出的结果是( )。(分数
20、:2.00)A.14B.12C.8D.646.有以下程序:main()int a=666,b=888;printf(“%d/n“,a,b);程序运行后的输出结果是( )。(分数:2.00)A.错误信息B.666C.888D.666,88847.有以下程序:char fun(char x,char y)if(xy) return x;return y;main()int a=9,b=8,c=7;printf(“%c/n“,fun(fun(a,b),fun(b,c);程序的执行结果是( )。(分数:2.00)A.函数调用出错B.8C.9D.748.设有定义:int n=0,*p=,则以下选项中,正
21、确的赋值语句是( )。(分数:2.00)A.p=1;B.*q=2;C.q=p;D.*p=5;49.一个算法应该具有“确定性”等 5个特性,下面对另外 4个特性的描述中错误的是( )。(分数:2.00)A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性50.一个栈的入栈序列是 1,2,3,n,其输出序列为 P1,P 2,P 3,P n,若 p1=n,则 pi为( )。(分数:2.00)A.iB.n=iC.n-i+1D.不确定二、填空题(总题数:19,分数:40.00)51.如下图所示的二叉树后序遍历序列是 【1】 。(分数:2.00)填空项 1:_52.数据结构分为逻辑结构与存储结构,
22、带链的栈属于 【2】 。(分数:2.00)填空项 1:_53.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。可行性研究阶段采用的是 【3】 。(分数:2.00)填空项 1:_54.数据库是指按照一定的规则存储在计算机中的 【4】 的集合,它能被各种用户共享。(分数:2.00)填空项 1:_55.实体联系模型是一种常用的高级概念数据模型,而 【5】 是实体联系模型中的核心。(分数:2.00)填空项 1:_56.下列程序的运行结果为 【6】 。main()int x,y,z;X=12;y=012;z=0l2;printf(“%d,%d,%d/n“,x,y,z);(
23、分数:2.00)填空项 1:_57.若有如下定义:int=11,24,56,19,29,39),*t=s;则不移动指针 t,且通过指针 t引用数组中值为 29的元素的表达式是 【7】 。(分数:2.00)填空项 1:_58.执行下面程序段时输出 suet,请填空。main()static char a=“student“;char *p;for(p=a;p 【8】 ;p+=2)putchar(*p);(分数:2.00)填空项 1:_59.有以下程序:#include stdio.hmain()char c;while(c=getchar()!=?) putchar(-c);程序运行时,如果从键
24、盘输入 Y?N?回车,则输出结果为 【9】 。(分数:2.00)填空项 1:_60.以下程序的输出结果是 【10】 。main()int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%d/n“,a,b);(分数:2.00)填空项 1:_61.若有如下程序:main()int s=8,a=3,b=5,c=6;if(ab) s=a; a=b; b=s;if(ac) s=a; a=c;b=s);if(bc) s=b; b=c;c=s;printf(“%d,%d,%d/n“,a,b,c);则程序运行后的输出结果是 【11】 。(分数:2.00)填空项 1:_62.下面程序
25、的输出结果是 【12】 。main()int arr10,i,k=0;for(i=0;i10;i+) arri=i;for(i=0;i4;i+) k+=arri=i;printf(“%d/n“,k);(分数:2.00)填空项 1:_63.函数 YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:11 11 2 11 3 3 11 4 6 4 1其构成规律是,第 0列元素和主对角线元素均为 1,其余元素为其左上方和正上方元素之和,数据的个数每行递增 1。请将程序补充完整。#defint N 6void YangHui(int*NN)int i,j;x00=1for(i=1;
26、 iN; i+)xi 0= 【13】 =1for(j=1;ji;j+ )xij= 【14】 ;(分数:4.00)填空项 1:_64.以下 sstrcpy()函数实现字符串复制,即将 t所指字符串复制到 s所指向内存空间中,形成一个新的字符串 s。清填空。void sstrcpy(char *s,char *t)while(*s+= 【15】 ); main()char str1100,str2=“abcdefgh“;strcpy(str1,str2);printf(%s/n“,str1);(分数:2.00)填空项 1:_65.下列程序的运行结果是 【16】 。#include string.h
27、char *ss(char *s)return s+strlen(s)/2; main()char *p,*str=“abcdefgh“;p=ss(str); printf(“%/n“,p);(分数:2.00)填空项 1:_66.下面程序的运行结果是 【17】 。int f( int a, int n)if(n1) return a0+f(else return a0;main ()int aa3=1,2,3),s;s=f( printf(“%d/n“,s);(分数:2.00)填空项 1:_67.以下程序中给指针 p分配 3个 double型动态内存单元,请填空。# include stdio
28、.hmain ()double *p;p=(double *)malloc( 【18】 );p0=1.5;p1=2.5;p2=3.5;printf(“%f%f%f/n“,p0,p1,p2);(分数:2.00)填空项 1:_68.以下程序的运行结果是 【19】 。#includestring.htypedef struct studentchar name10;long sno;float score;STU;main()STU a=“Zhangsan“,2001,95,b=“Shangxian“,2002,90,c=“Anhua“,2003,95,d,*p=d=a;if(strcmp( a.n
29、ame, b.name)0) d=b;if(strcmp( c.name, d.name)0) d=c;printf(“%1d%s/n“,d.sno,p-name);(分数:2.00)填空项 1:_69.以下 sum函数的功能是计算下列级数之和。(分数:2.00)填空项 1:_二级 C语言笔试-334 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.有以下程序:main()int i;for(i=0;i3;i+)switch(i)case 0: prinft(“%d“,i);Case 2: prinft(“%d“,i);default: pr
30、inft(“%d“,i);程序运行后的输出结果是( )。(分数:1.00)A.022111B.021021C.000122 D.012解析:解析 程序中 for循环了三次,第一次 i=O,执行 switch语句中 case0:分支,直到遇到default语句,退出 switch,这里共执行了 3个输出语句分别输出 0、0、0,第二次循环 i=1,switch 语句中没有匹配的分支,故只执行 default语句输出 1,退出 switch语句;第三次循环 i=2,从 switch语句中的 case2:开始执行,共执行了两个输出语句输出 2、2。最后输出的结果为 000122。所以, 4 个选项中
31、选项 C符合题意。2.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是( )。(分数:1.00)A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码 解析:解析 概要设计是数据库的总体设计,其目的就是按照需求规格说明书把软件依据功能划分为多个模块,然后确定每个模块要实现的功能,最后确定模块之间的调用关系。而设计每个模块的伪代码则属于详细设计。所以只有最后一个不属于概要设计范畴。3.有以下程序:#include stdio.hmain()int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(
32、p+5);printf(“%d %d /n“,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.运行后报错 B.66C.611D.510解析:解析 本题中首先定义了一个一维数组 a并初始化,该数组的长度为初值的个数即 12。数组名 a代表数组的首地址,所以*p=a+5 语句使得 p指向数组的第 6个元素,还一个指针变量 q,q 为空指针,实际上程序并没有在内存中为指针 q开辟存储空间。语句 *q=*(p+5);向 q的存储空间赋值是错误的,故该程序运行后报错。4.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是( )。(分数:1.00)A.abs(x
33、-y)10B.x-y-10for(b=1;b=c;b+) s=s+1;则与上述程序段功能等价的赋值语句是( )。(分数:1.00)A.s=a+b;B.s=a+c; C.s=s+c;D.s=b+c;解析:解析 本程序中 for循环共循环了 c次,而每循环一次 s的值加 1,所以 s的值为 s+c。最开始 s的值为 a,故 4个选项中选项 B符合题意。6.有以下程序:main()char *p10=“abc“,“aabdfg“,“dcdbe“,“abbd“,“cd“);printf(“%d/n“, strlen(p4);执行后输出结果是( )。(分数:1.00)A.2 B.3C.4D.5解析:解析
34、 本题中首先定义了一个长度为 10的指针数组,并赋初值,前 5个元素分别指向字符串“abc“,“aabdfg“,“dcdbe“,“abbd“, “cd“。strlen(p4)的返回值为 p4所指向的字符串所含字符的个数,p4指向字符串“cd“,则返回值为 2,输出 2。7.有以下程序:fun (iht a,int b)if(ab)return((分数:1.00)A.;else return(B.;b=p5;b中的值是( )。(分数:1.00)A.5B.6C.8D.9 解析:解析C 语言中规定:一个数组名代表它的起始地址。本题中,定义了一个长度为 10的数组 a并赋初值,数组名 a就是数组的起始
35、地址,由于数组下标是从 0开始,因此 a0的地址也是 a的值,a1的地址可以用 a+1表示,也就是说 a+1指向数组 a中下标为 1的元素,同样 a+i是 ai的地址,*p=for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf(“ “);for(j=1;j=( );j+)printf(“*“);printf(“/n“);在下划线处应填入的是( )。(分数:1.00)A.iB.2*-1 C.2*i+1D.i+2解析:解析 观察可知图形共 4行,主函数中通过一个 for5循环循环 4次,输出 4行。第 1行输出 3个空格和 1个*,第 2行输出 2 个空格和 3个*,第 3
36、行输出 1个空格和 5个*,第 4行输出 7个*,主函数中通过第 2个循环控制每行的输出空格数,第 3个 for循环控制输出*的个数,总结规律:每行输出*的个数,总比前一行的多 2个,且第 1行的个数为 1,可以断定每行输出*的个数组成了一个公差为 2的等差数列,所以每行输出。的个数即该等差数列的通项,故该空白处应该填写 2*i-1,所以,4 个选项中选项B符合题意。10.在面向对象的程序设计中,能表示类之间相似性质的机制是( )。(分数:1.00)A.继承 B.封装C.分类D.动态连接解析:解析 在面向对象的程序设计中,继承是表示类之间相似性的机制。11.有以下程序:int f(int b4
37、)int i,j,s=0;for(j=0;i4;i+)i=j;if(i2) i=3-j;s+=bij;return s;main()int a44=1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0;printf(“%d/n“,f((分数:1.00)A.);不能给数组 a输入字符串的语句是( )。(分数:1.00)A.gets(a)B.gets(a10) C.gets(if(ij)t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+) printf(“%d,“,aai);pri
38、ntf(“/n“);执行后输出结果是( )。(分数:1.00)A.5,4,3,2,1, B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,解析:解析 在 C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。由程序可以看出函数 f(a,i,j)为一递归函数,其功能是当 ij 时,将数组中的元素 ai和 aj交换,然后再调用函数 f(a,i+1,j-1),将数组中 ai+1和 aj-交换,这样一直递归到数组下标 i=j,可见该递归函数的作用是使数组中首尾元素依次互换。主函
39、数中定义了一个长度为 5的数组 aa并初始化,然后调用f(a,0,4),将数组 a中的元素依次互换,故最后 for循环输出的数组 aa中各元素的值为5、4、3、2、1,所以,4 个选项中选项 A符合题意。16.有以下程序:void f(int v,int w)int t;t=v;V=W;W=t;main()int x=1,y=3,z=2;if(xy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(“%d,%d%d/n“,x,y,Z);执行后输出结果是( )。(分数:1.00)A.1,2,3B.3,1,2C.1,3,2 D.2,3,1解析:解析 C 语
40、言规定 else总是和离它最近的 if语句配对。分析可以知道,。函数 f()作用是让形参v和形参 w的值交换。在主函数中首先定义了 3个变量 x、y 和 z。然后再执行下面的 if-else语句。由程序可以看出第一个 else和第一个 if搭配,第二个 else和第二个 if搭配。由于调用函数时是进行值传递的。即将实参 x、y、z 传给形参 v和 w,以后行参和实参再无联系,故通过 if语句调用 f()函数后,x、y 和 z的值并没有改变。因此最后输出的 x、y 和 z的值为 1、3 和 2,所以,4 个选项中选项 C符合题意。17.s1和 s2已正确定义并分别指向两个字符串。若要求:当 s1
41、所指字符串大于 s2所指字符串时,执行语句 S;则以下选项中正确的是( )。(分数:1.00)A.if(sls2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s10)S;D.if(strcmp)(s1,s2)0)S; 解析:解析 在 C语言中字符串的比较用 strcmp()函数,该函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于 0,若小于返回值小于 0,相等返回值为 0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字
42、符串。本题中要求当 s1所指字符串大于 s2所指字符串时,执行语句 s,因此应该为 strcmp(s1,s2)0 或者 strcmp(s2,s1)0,所以,4 个选项中选项 D符合题意。18.若程序中定义了以下函数:double myadd(double a,double b)return (a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。(分数:1.00)A.double myadd(double a,b); B.double myadd(double,double);C.double myadd(double b,doublea);D.do
43、uble myadd(double x,double y);解析:解析 函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符 函数名(类型标识符 形参,);这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的类型,但不能只写形参名而不写该形参的类型。本题中,选项 A中doublemyadd(doublea,b),没写出形参 b的类型,故选项 A不正确。19.有以下程序:main()int i,s=0
44、;for(i=1;i10;i+=2) s+=i+1;ptintf(“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和 解析:解析 本题中,i 赋初值为 1,并对其每次进行加 2操作,即 i每次均为 110 之间的奇数,s+=i+1,即 s=s+i+1,相当于 s等于原来的 s每次加上 110 之间的偶数,直到 ilO 不成立;当 i=1时,s=0+1+1=2;当 i=3时,s=2+3+1=2+4;当 i=5时,s=2+4+5+1=2+4+6;当 i=7时,s=2+4
45、+6+7+1=2+4+6+8;当 i=9时,s=2+4+6+8+9+1=2+4+6+8+10;当 i=11时,i10 不成立,结束循环。所以,4 个选项中选项 D符合题意。20.有以下程序:main()int i,n=0;for(i=2;i5;i+)doif(i%3) continue;n+;while(!i);n+;printf(“n=%d/n“,n);程序执行后的输出结果是( )。(分数:1.00)A.n=5B.n=2C.n=3D.n=4 解析:解析 for 循环当 i=2时,执行 do循环。由于 if表达式的条件为真,执行 continue语句,结束本次循环,判断 while循环条件为假
46、,故退出 while循环,执行 n+,此时 n的值为 1。当 i=3时,执行do循环,由于 if3%3)为假,执行下面的 n+语句,此时 n的值为 2,结束本次循环,继续判断 while循环条件为假,故退出 while循环,执行 n+语句,此时 n的值为 3。当 i=4时,执行 do循环。由于if(4%3)为真,执行 continue语句,结束本次循环,继续判断 while循环条件为假,故退出 while循环,执行 n+,此时 n的值为 4。当 i=5时,退出 for循环,因此最后输出的 n值为 4。所以,4 个选项中选项D符合题意。21.C语言中用于结构化程序设计的 3种基本结构是( )。(
47、分数:1.00)A.顺序结构、选择结构、循环结构 B.if、switch、breakC.for、while、do-whileD.if、for、continue解析:解析 结构化程序设计是由 3种基本结构组成的,它们是顺序结构、选择结构和循环结构。所以,A选项为所选。22.设有如下程序段:x=2002,y=2003;printf(“%d/n“,(x,y);则以下叙述中正确的是( )。(分数:1.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 2003 解析:解析 “x,y”是一个逗号表达式,逗号运算符的结合性为从左到右,逗号表达式一般形式为“表达式 1,表达式 2,表达式 n”,整个表达式的值为表达式 n的值,故本题是输出 y的值 2003。所以,4 个选项中选项 D符合题意。23.规范化理论中分解( )主要是消除其中多余的数据相关性。(分数:1.00)A.关系运算 B.内模