1、二级 C语言模拟 653及答案解析(总分:160.50,做题时间:90 分钟)一、选择题(总题数:40,分数:60.50)1.有以下程序(strcat 函数用以连接两个字符串) # include stdio.h # include string.h main() char a20=“ABCD/0EFG/0“ ,b=“IJK“; strcat(a,b);printf(“%s/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.ABCDE/0FG/0IJKB.ABCDIJKC.IJKD.EFGIJK2.以下 for循环体的执行次数是_。 #include stdio.h main()
2、int i, j; for(i=0, j=i; i=j+1; i+ =2, j-)printf(“% d/n“, i); (分数:2.50)A.3B.2C.1D.03.有以下程序: #include stdio.h main() int*p,x=100; p=x=*p+10; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.110B.120C.100D.904.有下列程序: main() int k=5; while(-k) printf(“%d“,k=1); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.1B.2C.4D.死循环5
3、.有以下程序: #includestdio.h #includestring.h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.lf/n“,a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ZhangDa,1202.0B.1002,C
4、hangRong,1202.0C.1001,ChangRong,1098.0D.1001,ZhangDa,1098.06.以下程序段完全正确的是_。(分数:1.00)A.int*p;scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p);D.int k,*p;*p=scanf(“%d“,p);7.下列关于信息系统的叙述中,错误的是_。(分数:2.50)A.广播电视是一种双向的、点到多点的信息交互系统B.网络聊天是一种双向的、以信息交互为主要目的的系统C.电话是一种双向的、点对点的、以信息交互为主要目的的系统D.雷达是一种以感测和识别为
5、主要目的的系统8.以下叙述中正确的是_。(分数:2.50)A.关系运算符两边的运算对象可以是 C语言中任意合法的表达式B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的9.下列程序输出结果是_。 #includestdio.h main() char a=“a“, “b“, “c“, “d“, “e“, “f“, “/0“; int i, j; i=sizeof(a); j=strlen(a); printf(“%d, %d“, i, j); (分数:2.50)A.7,7B.7,
6、6C.6,6D.6,710.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab) printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.3B.1C.2D.011.软件设计中划分模块的一个准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合12.若有以下程序段: double x=5.16894; printf(“%f/n“,(int)(x*1000+0.5)/(double)1000); 则程序段的输出结果是_。(分数:1.00)A.5.170000B.5.17500
7、0C.5.169000D.5.16800013.设有定义 int k=1,m=2;float f=7;,则以下选项中错误的表达式是 _。(分数:1.00)A.k=k=kB.-k+C.k%int(f)D.k=fm14.程序中对 fun函数有如下说明: void * fun(); 此说明的含义是_。(分数:2.00)A.fun函数无返回值B.fun函数的返回值可以是任意的数据类型C.fun函数的返回值是无值型的指针类型D.指针 fun指向一个函数,该函数无返回值15.设有以下说明和语句:int x34,(*p)4;p=a;,则与表达式*(* p+2)等价的选项是_。(分数:1.00)A.a02B.
8、*(a+2)0C.(*a+2)0D.a2016.下面属于黑盒测试方法的是_。(分数:1.00)A.基本路径测试B.等价类划分C.判定覆盖测试D.语句覆盖测试17.以下程序依次把从终端输入的字符存放到 f文件中,用#作为结束输入的标识,则在横线处应填入的是_。 #includestdio.h main() FILE*fp; char ch; fp=fopen(“fname“,“w“); while(ch=getchar()!=“#“)fputc(_); fclose(fp); (分数:1.00)A.ch,“fname“B.fp,chC.chD.ch,fp18.有以下程序: #include st
9、dio.h #include stdlib.h int fun(int n) int *p; p=(int*)malloc(aizeof(int); *p=n; return *p; main( ) int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序的运行结果是_。(分数:2.00)A.0B.10C.20D.出错19.若有定义:int a10;,则对数组 a元素的正确引用是_。(分数:2.50)A.a10B.a3.5C.a(5)D.a10-1020.以下是 while语句的基本形式: while(表达式) 语句; 其中“表达式”_。(分数:2.50)A.
10、必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式21.有如下程序: #includestdio.h #includestring.h main() char *str=“0/n0123/4“: printf(“%d“,strlen(str); 程序运行后的输出结果是_。(分数:1.00)A.3B.6C.8D.722.以下不是合法 C语言转义字符的是_。(分数:1.00)A.“/c“B.“/a“C.“/h“D.“/r“23.有以下程序: #include stdio.h #define N 4 void fun(int aN,int b) int i
11、; for(i=0;iN;i+ +) bi = aii; main( ) int xN=1,2,3,4,5,6,7,8,9,10,yN,i; fun(x, y); for(i=0;iN;i+ +) printf(“%d,“, yi); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,24.以下叙述中错误的是_。(分数:1.00)A.用户定义的函数中可以没有 return语句B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值C.用户定义的函数中若没有 return语句
12、,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式25.设有以下定义: typedef union longi; int k5;char c;DATE; srtuct date int cat;DATEcow;double dog; too; DATE max; 则下语句的执行结果是 ( ) printf(“%d,“sizeof(struct date)+size of(max);(分数:1.00)A.25B.30C.18D.826.在下列选项中,没有构成死循环的程序段是_。(分数:2.00)A.int i=100;while(1) i=i%100+1;if(i100
13、)break;B.for(;);C.int k=1000;do+k;while(k=1000);D.int s=36:while(s);-s;27.有以下程序: #include stdio.h main( ) int a =2,3,5,4,i; for(i=0;i4;i+ +) switch(i%2) case 0: switch(ai%2) case 0:ai+ +;break; case 1:ai- -; break; case 1:ai=0; for(i=0:i4;i+ +) printf(“%d“,ai); printf(“/n“); 程序运行后的输出结果是_。(分数:2.50)A.
14、0 3 0 4B.2 0 5 0C.3 3 4 4D.3 0 4 028.数据库设计中反映用户对数据要求的模式是_。(分数:1.00)A.内模式B.概念模式C.外模式D.设计模式29.有以下程序: include stdio.h main( ) int i,a; for (i=0; i=10; i+) a=i; printf(“%d,%d/n“,i,a); 程序的运行结果是_。(分数:1.00)A.11,10B.10,10C.10,11D.11,1130.对下列二叉树进行中序遍历的结果是_。 (分数:1.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG31.以下叙
15、述中正确的是_。(分数:2.00)A.语言中的关键字不能作变量名,但可以作为函数名B.标识符的长度不能任意长,最多只能包含 16个字符C.标识符总是由字母、数字和下画线组成,且第一个字符不得为数字D.用户自定义的标识符必须”见名知义”,如果随意定义,则会出编译错误32.若 fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(分数:1.00)A.0B.1C.-1D.一个非 0值33.设定义以下结构体,结构体变量 p的出生年份赋值正确的语句是_。 struct st int x; int y; int z; ; struct worker char name20;
16、char sex; struct st birth; )p;(分数:2.00)A.x=1987B.birth.x=1987;C.birth.x=1987;D.x=1987;34.设有以下定义: typedef union longi; int k5;char c;DATE; srtuct date int cat;DATEcow;double dog; too; DATE max; 则下语句的执行结果是 ( ) printf(“%d,“sizeof(struct date)+size of(max);(分数:1.00)A.25B.30C.18D.835.算法中,对需要执行的每一步操作,必须给出
17、清楚、严格的规定这属于算法的_。(分数:2.00)A.正当性B.可行性C.确定性D.有穷性36.请选出以下程序的输出结果 _。 #include stdio.h sub(x, y, z) int x, y,*z; *z=y-x: main() int a, b, c; sub 10,5,sub(7,a,sub(a, b, printf(“%d,% d,/%d/n“, a, b, c); (分数:2.00)A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-737.以下正确的字符串常量是_。(分数:1.00)A.“B.“abc“C.Olympic GamesD.“/“38
18、.以下只有在使用时才为该类型变量分配内存的存储类型说明是_。(分数:2.50)A.auto和 staticB.auto和 registerC.register和 staticD.extern和 register39.定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是_。(分数:1.00)A.-369B.369C.0.369D.整数集合1,2,3,4,540.下列说法中,正确的是_。(分数:1.00)A.指针是一个变量B.指针中存放的可以是任何类型的值C.指针变量是变量地址D.指针变量占用存储空间二、程序填空题(总题数:1,分数:30.00)41.给定程序中,函数 fun的功能是
19、将 a和 b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含 9个以下数字字符。 例如,主函数中输入字符串 32486和 12345,在主函数中输出的函数值为 44831。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序如下。 #includestdio.h #includestring.h #includectype.h #define N 9 long ctod(char*s) long d=0; while(*s) if(
20、isdigit(*s) /*found*/ d=d*10+*s- 1; /*found*/ 2; return d; long fun(char *a,char *b) /*found*/ return 3; main() ( char s1N,s2N; do printtf“Input string s1:“);gets(s1); while(strlen(s1)N); do printf(“Input string s2:“);gets(s2); while(strlen(s2)N); printf(“The result is:%ld/n“,fun(s1,s2); (分数:30.00)三
21、、程序修改题(总题数:1,分数:30.00)42.给定程序 MODI1.C中函数 fun的功能是:按顺序给 s所指数组中的元素赋予从 2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在 w所指的数组中。若 s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,s 所指数组有 14个元素,则只对前 10个元素进行处理,不对最后的 4个元素求平均值。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include stdio.h #define SIZE 20 fun(double *s,double
22、*w) int k,i;double sum; for(k=2,i=0;iSIZE;i+) si=k;k+=2; /*found*/ sun=0.0; for(k=0,i=0;iSIZE;i+) sum+=si; /*found*/ if(i+1%5=0) wk=sum/5;sum=0;k+; return k; main() double aSIZE,bSIZE/5; int i,k; k=fun(a,b); printf(“The original data:/n“); for(i=0;iSIZE;i+) if(i%5=0) printf(“/n“); printf(“%4.0f“,ai)
23、; printf(“/n/nThe result:/n“); for(i=0;ik;i+) printf(“%6.2f“,bi); printf(“/n/n“); (分数:30.00)_四、程序设计题(总题数:1,分数:40.00)43.函数 fun的功能是将 s所指字符串中除了下标为奇数、同时 ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在 t所指的数组中。 例如,若 S所指字符串中的内容为“ABCDEFG12345”,其中,字符 A的 ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符 1的 ASCII码值为奇数,所在数组中的下标也
24、为奇数,因此不应当删除,其他依此类推。最后 t所指的数组中的内容应是“135”。 注意:部分源程序存在文件 PROG1.C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入编写的若干语句。 给定源程序如下。 #includestdio.h #includestring.h void fun(char*s,char t) main() char s100,t100; printf(“/nPlease enter string S:“): scanf(“%s“,s); fun(s,t); printf(“/nThe result is:%s/n“,t); (分数:
25、40.00)_二级 C语言模拟 653答案解析(总分:160.50,做题时间:90 分钟)一、选择题(总题数:40,分数:60.50)1.有以下程序(strcat 函数用以连接两个字符串) # include stdio.h # include string.h main() char a20=“ABCD/0EFG/0“ ,b=“IJK“; strcat(a,b);printf(“%s/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.ABCDE/0FG/0IJKB.ABCDIJK C.IJKD.EFGIJK解析:解析 C 语言中以字符“/0“作为字符串结束的标志。本题中字符串 a
26、实际为“ABCD”,函数strcat将串 a和串 b连接,所以选 B。2.以下 for循环体的执行次数是_。 #include stdio.h main() int i, j; for(i=0, j=i; i=j+1; i+ =2, j-)printf(“% d/n“, i); (分数:2.50)A.3B.2C.1 D.0解析:3.有以下程序: #include stdio.h main() int*p,x=100; p=x=*p+10; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.110 B.120C.100D.90解析:解析 程序执行过程为:定义指针
27、 p,指向变量 x,x=(* p)+10=110,输出 110,A 选项正确。4.有下列程序: main() int k=5; while(-k) printf(“%d“,k=1); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.1 B.2C.4D.死循环解析:解析 在程序语句中,k 的初始值为 5,进行第 1次 while循环后,k 自减 1为 4,非 0,执行循环体里的 printf语句,输出 k,此时 k的值变为 1。程序执行第 2次循环时,k 自减 1变为 0,为假,退出 while循环语句。所以程序的最后结果为 1。5.有以下程序: #includestdi
28、o.h #includestring.h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.lf/n“,a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ZhangDa,1202.0B.1002,ChangRong,1202.0C.100
29、1,ChangRong,1098.0D.1001,ZhangDa,1098.0 解析:解析 本题考查结构体的相关操作以及传值、传址的区别,该题中调用 f函数后,会生成参数 a的一个副本,而不会改变 a的值,所以 a值维持原值,选项 D正确。6.以下程序段完全正确的是_。(分数:1.00)A.int*p;scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p); D.int k,*p;*p=scanf(“%d“,p);解析:解析 scanf 函数参数列表,需要为指针,这个指针必须指向变量,所以答案选择 C。7.下列关于信息系统的叙述中,错
30、误的是_。(分数:2.50)A.广播电视是一种双向的、点到多点的信息交互系统 B.网络聊天是一种双向的、以信息交互为主要目的的系统C.电话是一种双向的、点对点的、以信息交互为主要目的的系统D.雷达是一种以感测和识别为主要目的的系统解析:解析 广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。8.以下叙述中正确的是_。(分数:2.50)A.关系运算符两边的运算对象可以是 C语言中任意合法的表达式 B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的解析:解析 逻辑真
31、值和假值分别对应非零和零;对于浮点变量 x和 y,表达式“x=y”是合法的;分支结构是根据表达式的真假来判断流程走向的。所以选择 A。9.下列程序输出结果是_。 #includestdio.h main() char a=“a“, “b“, “c“, “d“, “e“, “f“, “/0“; int i, j; i=sizeof(a); j=strlen(a); printf(“%d, %d“, i, j); (分数:2.50)A.7,7B.7,6 C.6,6D.6,7解析:解析 本题要注意 sizeof()和 strlen()的区别,sizeof()函数的功能是返回字符串所占的字节数,str
32、len()函数的功能是返回字符串长度,“/0“是一个转义符,它占存储空间,但不计入串的长度。10.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab) printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.3 B.1C.2D.0解析:解析 本题考查位运算符以及相关运算,为按位或, printf(“%f/n“,(int)(x*1000+0.5)/(double)1000); 则程序段的输出结果是_。(分数:1.00)A.5.170000B.5.175000C.5.169000 D.5.168000解析:解析
33、%f 的输出格式是以带小数点的数学形式输出浮点数。首先计算 x*1000,结果为 5168.94,然后+0.5,结果为 5169.44;然后进行强制类型转换,转换成整型为 5169,然后除以双精度数据 1000,结果也为双精度数据 5.169,输出时按照%f 的格式输出,所以输出结果为 5.169000。13.设有定义 int k=1,m=2;float f=7;,则以下选项中错误的表达式是 _。(分数:1.00)A.k=k=kB.-k+C.k%int(f) D.k=fm解析:解析 强制类型转换的一般形式为: (类型名) (表达式),而选项 C中只给表达式加了括号,并没有绐类型名也加上括号,所
34、以选项 C的表达式错误。14.程序中对 fun函数有如下说明: void * fun(); 此说明的含义是_。(分数:2.00)A.fun函数无返回值B.fun函数的返回值可以是任意的数据类型C.fun函数的返回值是无值型的指针类型 D.指针 fun指向一个函数,该函数无返回值解析:解析 C 语言中函数的定义分为有参函数的定义和无参函数的定义。无参函数的定义形式为: 类型标识符函数名() 说明部分 语句 有参函数的定义有两种形式: 类型标识符函数名(形式参数列表) 形式参数说明 说明部分 语句 或 类型标识符函数名(类型名 形参 1,类型名 形参 2,) 说明部分 语句 其中函数名为用户定义的
35、 C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是 C允许的任何类型,如 int、char、float、double 和指针类型等。当函数值为整型时类型标识符可以省略,如果函数没有返回值,类型标识符可以是 void型。当函数的形参多于一个时,各个形参之间用逗号分隔。15.设有以下说明和语句:int x34,(*p)4;p=a;,则与表达式*(* p+2)等价的选项是_。(分数:1.00)A.a02 B.*(a+2)0C.(*a+2)0D.a20解析:解析 (*p)4是指向有 4个元素的数组指针,a 为二位数组首地址,赋值给数组指针 p。题目中表达式*(*p+2)是对数组 a第
36、 1行第 3列元素的引用。a02是数组第 1行第 3列元素,与题目中等价,A选项正确。*(a+2)0是对数组第 3行第 1列元素的引用,B 选项错误。(*a+2)0是对数组第 1行第 3列元素的引用,C 选项错误。a20是数组第 3行第 1列元素,D 选项错误。16.下面属于黑盒测试方法的是_。(分数:1.00)A.基本路径测试B.等价类划分 C.判定覆盖测试D.语句覆盖测试解析:解析 等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类进行测试。基本路径测试、判定覆盖测试和语句覆盖测试都属于白盒测试。17.以下程序依次把从终端输入的字符
37、存放到 f文件中,用#作为结束输入的标识,则在横线处应填入的是_。 #includestdio.h main() FILE*fp; char ch; fp=fopen(“fname“,“w“); while(ch=getchar()!=“#“)fputc(_); fclose(fp); (分数:1.00)A.ch,“fname“B.fp,chC.chD.ch,fp 解析:解析 本题考查 fpute函数,该函数将字符 ch写到文件指针 fp所指向的文件的当前写指针的位置。函数格式:int fpute(int n,File*fp),答案为 D选项。18.有以下程序: #include stdio.
38、h #include stdlib.h int fun(int n) int *p; p=(int*)malloc(aizeof(int); *p=n; return *p; main( ) int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序的运行结果是_。(分数:2.00)A.0B.10C.20 D.出错解析:解析 malloc(sizeof(int)的作用是开辟一个长度为 sizeof(int)的存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给一个整型的指针变量 p,然后执行语句*p=n,使得*p 的值为 10,并通过 return返回
39、此值,即 a的值为 10。最后在主函数中通过 printf()函数输出 a+fun(10)=10+10=20。19.若有定义:int a10;,则对数组 a元素的正确引用是_。(分数:2.50)A.a10B.a3.5C.a(5)D.a10-10 解析:解析 本题考查了对一维数组引用的基本语法问题,读者需要清楚地了解引用一维数组的基本格式。20.以下是 while语句的基本形式: while(表达式) 语句; 其中“表达式”_。(分数:2.50)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式 解析:解析 本题考查 while表达式。while(
40、表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为 1。21.有如下程序: #includestdio.h #includestring.h main() char *str=“0/n0123/4“: printf(“%d“,strlen(str); 程序运行后的输出结果是_。(分数:1.00)A.3B.6C.8D.7 解析:解析 strlen()函数求得参数中字符串的长度(不包括字符串结束符“/0“)。程序定义一个字符指针变量 str,并使用字符串“0/n0123/4”初始化,然后将 str传给 st
41、rlen()函数,用 strlen()函数计算该字符串的长度,该字符串中的字符分别是:“0“、“/n“、“0“、“1“、“2“、“3“、“/4“、“/0“。其中“/4“表示菱形符号“。除了“/0“,其他字符都属于 strlen()函数的计算字符,结果为 7。故本题答案为 D选项。22.以下不是合法 C语言转义字符的是_。(分数:1.00)A.“/c“ B.“/a“C.“/h“D.“/r“解析:解析 C 语言中,/a表示响铃,/b表示退格,/r表示回车不换行,故答案为 A选项。23.有以下程序: #include stdio.h #define N 4 void fun(int aN,int b
42、) int i; for(i=0;iN;i+ +) bi = aii; main( ) int xN=1,2,3,4,5,6,7,8,9,10,yN,i; fun(x, y); for(i=0;iN;i+ +) printf(“%d,“, yi); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,0,7,0, B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,解析:解析 该程序首先在定义变量时,对二维数组 xN进行赋值操作;调用函数 fun,函数 fun的功能是将=维数组中的 a0儿 0、a11、a22和 a33赋值给一维数组。最后将输出一维数组1,0,7
43、,0,。24.以下叙述中错误的是_。(分数:1.00)A.用户定义的函数中可以没有 return语句B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return语句,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式解析:解析 本题重点考查函数返回值的相关知识,函数的值只能通过 return语句返回主调函数,在函数中允许有多个 return语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此 B选项正确。25.
44、设有以下定义: typedef union longi; int k5;char c;DATE; srtuct date int cat;DATEcow;double dog; too; DATE max; 则下语句的执行结果是 ( ) printf(“%d,“sizeof(struct date)+size of(max);(分数:1.00)A.25B.30 C.18D.8解析:26.在下列选项中,没有构成死循环的程序段是_。(分数:2.00)A.int i=100;while(1) i=i%100+1;if(i100)break;B.for(;);C.int k=1000;do+k;whi
45、le(k=1000); D.int s=36:while(s);-s;解析:27.有以下程序: #include stdio.h main( ) int a =2,3,5,4,i; for(i=0;i4;i+ +) switch(i%2) case 0: switch(ai%2) case 0:ai+ +;break; case 1:ai- -; break; case 1:ai=0; for(i=0:i4;i+ +) printf(“%d“,ai); printf(“/n“); 程序运行后的输出结果是_。(分数:2.50)A.0 3 0 4B.2 0 5 0C.3 3 4 4D.3 0 4 0 解析:解析 第一次循环 i为 0,i%2 为 0,执行 switch(a0%2)中的 case 0语句,a0+,a0的值变成 3;第二次循环 i的值为 1,i%2 为 1,执行 case 1:ai=0;所以 a1的值变成 0;第三次循环 i的值为 2,i%2 为 0,执行 switch(a2%2)中的 case 1语句,a2-,a2的值变成 4;第四次循环 i的值为3,i%2 为 1,执行 cas