1、二级 C 语言笔试 69 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.执行下面程序段的结果是( )。 int x=23; do printf(“%2d“,x-); while(! x);(分数:1.00)A.输出 321B.输出 23C.不输出任何内容D.陷入死循环2.有以下程序: #include stdio.h union pw int i; char ch2; a; main() a.ch0=13; a.ch1=0; printf(“%d/n“,a.i); 程序的输出结果是(注意:ch0在低字节,ch1在高字节)( )。(分
2、数:1.00)A.13B.14C.208D.2093.以下程序的输出结果是( )。 #include stdio.h main() int i,x33=9,8,7,6,5,4,3,2,1,*p= for(i=0;i4;i+=2) printf(“%d“,pi); (分数:1.00)A.52B.51C.53D.974.以下选项中属于 C 语言数据类型的是( )。(分数:1.00)A.复数型B.逻辑型C.双精度型D.集合型5.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算以及( )。(分数:1.00)A.数据的存储结构B.计算方法C.数据映象D.逻辑存储6.请读程序
3、: #include stdio.h #define SUB(X,Y) (X)*Y main() int a=3,b=4; printf(“%d/n“,SUB(a+,b+); 上面程序的输出结果是( )。(分数:1.00)A.12B.15C.16D.207.关系模型允许定义三类数据约束,下列不属于数据约束的是( )。(分数:1.00)A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定义的完整性约束8.若 x 是 int 型变量,且有下面的程序段: for(x=3;x6;x+) printf(x%2)?(“*%d“):(“#%d/n“),x); 此程序段的输出结果是( )。(分数:
4、1.00)A.*3 #4 *5B.#3 *4 #5C.#3 *4#5D.* 3#4 *59.若有以下说明和语句,则四个选项中是对 c 数组元素的正确引用的是( )。 int c45,(*cp)5; cp=c;(分数:1.00)A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)10.设有如下的程序段: char str=“Hello“; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为( )。(分数:1.00)A.oB./0C.不确定的值D.o的地址11.C 语言中,下列叙述正确的是( )。(分数:1.00)A.不能使用 do-while
5、 语句构成的循环B.do-while 语句构成的循环,必须用 break 语句才能退出C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环12.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( )。(分数:1.00)A.软件投机B.软件危机C.软件工程D.软件产生13.下面各语句行中,能正确地给字符串赋值的语句行是( )。(分数:1.00)A.char st4=“ABCDE“;B.char s5=A,B,C,D,E;C.char *s=“ABCDE“;D.ch
6、ar *s; scanf(“%s“,*;14.开发大型软件时,产生困难的根本原因是( )。(分数:1.00)A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重15.数据库、数据库系统和数据库管理系统之间的关系是( )。(分数:1.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.三者没有明显的包含关系16.下列描述中不正确的是( )。(分数:1.00)A.字符型数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算符“=”
7、对字符型数组进行整体赋值17.请读程序: #include stdio.h main() int a,b; for(a = 1,b = 1 ;a = 100;a+) if(b=20) break; if(b%3 =1) b +=3;continue; b-=5; printf(“%d/n“,a); 上面程序的输出结果是( )。(分数:1.00)A.7B.8C.9D.1018.请选出可用作 C 语言用户标识符的一组( )。(分数:1.00)A.void define WORDB.a3_b3 _123 IFC.For _abc caseD.2a DO sizeof19.以下程序的运行结果是( )。
8、 #include stdio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12; int *p=a+5,*q=NULL; *q=8(p+5); printf(“%d %d/n“, *p,*q); (分数:1.00)A.运行后报错B.6 6C.6 11D.5 520.下面程序的输出结果是( )。 #include stdio.h int m=13; int fun2(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; printf(“%d/n“,fun2(a,b)/m); (分数:1.00)A.1B
9、.2C.7D.1021.下面不属于软件设计原则的是( )。(分数:1.00)A.抽象B.模块化C.自底向上D.信息隐蔽22.请读程序: #include stdio.h func(int a, int b) int c; c=a+b; return c; main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(“%d/n“,r); 上面程序的输出结果是( )。(分数:1.00)A.11B.20C.21D.3123.以下程序的输出结果是( )。 #include stdio.h main() int i; for(i=1;i5;i+) if
10、(i%2) printf(“*“); else continue; printf(“#“); printf(“$/n“);(分数:1.00)A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$24.串的长度是( )。(分数:1.00)A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于 0D.串中所含字符的个数25.以下程序的输出结果是( )。 #include stdio.h main() int n=4; while(n-) printf(“%d “,-n); (分数:1.00)A.2 0B.3 1C.3 2 1D.2 1 026.已知字符 0 的
11、ASCII 码为十六进制的 30,现有程序如下: #include stdio.h main() union unsigned char c; unsigned int i4; z; z.i0=0x39; z.i1=0x36; printf(“%c/n“,z.c); 此程序的输出结果是( )。(分数:1.00)A.6B.9C.0D.327.读程序: #include stdio.h f(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); pri
12、ntf(“%d/n“,x); 上面程序的输出结果是( )。(分数:1.00)A.720B.120C.24D.628.执行下面程序中的输出语句后,a 的值是( )。 #include stdio.h main() int a; printf(“%d/n“,(a=3*5,a*4);(分数:1.00)A.15B.20C.10D.6029.请读程序: #include stdio.h #include string.h main() char *s1=“AbCdEf“, *s2=“aB“; s1+; s2+; printf(“%d/n“,strcmp(s1,s2); 上面程序的输出结果是( )。(分数
13、:1.00)A.正数B.负数C.零D.不确定的值30.在 C 语言中,下列各选项为不正确的 int 类型的常数足( )。(分数:1.00)A.32768B.0C.037D.0xAF31.以下不属于面向对象的基本特点的是( )。(分数:1.00)A.分类性B.多态性C.继承性D.封装性32.以下程序的输出结果是( )。 #include stdio.h #include string.h main() char str12=s,t,r,i,n,g; printf(“%d/n“,strlen(str) ); (分数:1.00)A.6B.7C.11D.1233.以下程序的输出结果是( )。 #inc
14、lude stdio.h int fan(int); main() int w=5; fun(w); printf(“/n“); fun(int k) if(k0) fun(k-1); printf(“%d“,k); (分数:1.00)A.5 4 3 2 1B.0 1 2 3 4 5C.1 2 3 4 5D.5 4 3 2 1 034.以下说法中正确的是( )。(分数:1.00)A.#define 和 printf 都是 C 语句B.#define 是 C 语句,而 printf 不是C.printf 是 C 语句,但#define 不是D.#define 和 printf 都不是 C 语句3
15、5.请选出以下程序的输出结果( )。 #include stdio.h sub(int *s,int y) static int t=3; y=st;t-; main() int a=1,2,3,4,i,x=0; for(i=0;i4;i+) sub(a,x);printf(“%d“,x); printf(“/n“); (分数:1.00)A.1234B.4321C.0000D.444436.若有以下的说明和语句,则在执行 for 语句后,*(*(pt+1)+2)表示的数组元素是( )。 int t33,*Pt3,k; for(k=0;k3;k+) ptk=(分数:1.00)A.t20B.t22
16、C.t12D.t2137.语句:printf(“%d/n“,12的输出结果是( )。(分数:1.00)A.12B.8C.6D.01238.设有以下语句: char str412=“aaa“,“bbbb“,“ccccc“,“dddddd“,*strp4; int i; for(i=0;i4;i+) strpi=stri; 下列选项不是对字符正确引用的是(其中 0k4)( )。(分数:1.00)A.strpB.strC.* strpD.* strp39.请选出以下程序的输出结果( )。 #include stdio.h #define MIN(x,y) (xy)? x:y main() int i
17、,j,k; i=10;j=15; k=10*MIN(i,j); printf(“%d/n“,k); (分数:1.00)A.15B.100C.10D.15040.设有说明语句如下: static char str=“Beijing“; 若执行下列输出语句: printf(“%d/n“,strlen(strcpy(str,“China“);则输出结果为( )。(分数:1.00)A.5B.7C.12D.1441.请读程序: #include stdio.h int a=2,4,6,8,; main() int i; int *p=a; for( i=0;i4;i+) ai=*p+; priatf(“
18、%d/n“,a2); 上面程序的输出结果是( )。(分数:2.00)A.6B.8C.4D.242.以下程序的输出结果是( )。 #include stdio.h main() int a=-1,b=1,k; if(+a0) else printf(“%d %d/n“,b,a); (分数:2.00)A.-1 1B.0 1C.1 0D.0 043.在计算机中,算法是指( )。(分数:2.00)A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法44.有以下程序: #include stdio.h main() int c; while(c=getchar() )! =/n) swit
19、ch(c-2) case 0: case 1: putchar(c+4); case 2:putehar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; 运行程序,从第一列开始输入以下数据: 2473回车则程序的输出结果是( )。(分数:2.00)A.668977B.668966C.66778777D.668876645.下列 SQL 语句中,用于修改表结构的是( )。(分数:2.00)A.ALTERB.CREATEC.UPDATED.INSERT46.若已定义:int a9,*p=a;并在以后的语句中未改变 p 的值,
20、下列选项中不能表示 a1地址的表达式是( )。(分数:2.00)A.p+1B.a+1C.a+D.+p47.设有以下语句: char a=3,b=6,c; c=ab2;则 c 的二进制值是( )。(分数:2.00)A.00011011B.00010100C.00011100D.0001100048.以下程序的输出结果是( )。 #include stdio.h main() int k=17; printf(“%d,%o,%x/n“,k,k,k); (分数:2.00)A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,1149.读下面程序段(字符串内没有空格字
21、符): printf(“%d/n“,strlen(“ATS/n012/1/“);其输出结果是( )。(分数:2.00)A.11B.10C.9D.850.以下选项中,能定义 s 为合法的结构体变量的是( )。(分数:2.00)A.typedef struct abc double a; char b10; s;B.struct double a; char b10; s;C.struct ABC double a; char b10; ABC s;D.typedef ABC double a; char b10; ABC s;二、B填空题/B(总题数:18,分数:40.00)51.如果一个工人可
22、管理多个设施,而一个设施只可被一个工人管理,则实体“工人”与实体“设备”之间存在U 【1】 /U联系。(分数:2.00)填空项 1:_52.算法的复杂度主要包括U 【2】 /U复杂度和空间复杂度。(分数:2.00)填空项 1:_53.关系数据库管理系统能实现的专门关系运算包括选择、连接和U 【3】 /U。(分数:2.00)填空项 1:_54.若按功能划分,软件测试的方法通常分为白盒测试方法和U 【4】 /U测试方法。(分数:2.00)填空项 1:_55.数据的逻辑结构在计算机存储空间中的存放形式称为数据的U 【5】 /U。(分数:2.00)填空项 1:_56.表示“整数 x 的绝对值大于 5”
23、时值为“真”的 C 语言表达式是U 【6】 /U。(分数:2.00)填空项 1:_57.函数 pi 的功能是根据以下近似公式求 值: (分数:2.00)填空项 1:_58.设在主函数中有以下定义和函数调用语句,且函数 fun 为 void 型,请写出函数 fun 的首部U 【8】 /U。要求形参名为 b。 main() double s1022; int n; fun(s); (分数:2.00)填空项 1:_59.以下程序的输出结果是U 【9】 /U。 #include stdio.h void fun() static int a=0; a + =2; printf(“%d“,a); mai
24、n() int cc; for(cc = 1;cc 4; cc+) fun(); printf(“/n“); (分数:2.00)填空项 1:_60.下列程序的运行结果是U 【10】 /U。 #include stdio.h main() union EXAMPLE struct int x; int y; in; int a; int b; e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf(“%d,%d/n“,e.in.x,e.in.y); (分数:2.00)填空项 1:_61.函数 mycmp(char *s,char *t)的功能
25、是比较字符串 s 和 t 的大小,当 s 等于 t 时返回 0,当 st 时返回正值,当 st 时返回负值。请填空。 mycmp( char *s,char *t) while ( *s=*t) if(*s= =/0) return 0; +s; +t; return(U 【11】 /U); (分数:2.00)填空项 1:_62.若有以下定义和语句,则使指针 p 指向值为 36 的数组元素的表达式是U 【12】 /U。 int a10=19,23,44,17,37,28,49,36,*p; p=a;(分数:2.00)填空项 1:_63.下面的语句要使指针 p 指向一个 double 类型的动态
26、存储单元,请填空。 p =U 【13】 /U malloc(sizeof(double);(分数:2.00)填空项 1:_64.以下程序的输出结果是U 【14】 /U。 #include stdio.h #define MAX(x,y) (x)(y)? (x):(y) main() int a=5,b=2,c=3,d=3,t; t = MAX(a+b,c+d)*10; printf(“%d/n“,1); (分数:2.00)填空项 1:_65.执行以下程序段后,s 的值为U 【15】 /U。 static char ch=“600“; int a,s=0; for(a=0;cha=0a+) s=
27、10*s+cha-0;(分数:2.00)填空项 1:_66.在对文件进行操作的过程中,若要求文件的位置指针重新指向文件的开头,应当调用的函数是U 【16】 /U函数。(分数:2.00)填空项 1:_67.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是U 【17】 /U。 #include stdio.h #include string.h main() char str1=“How do you do“, *p1=str1; strcpy(str1+strlen(str1)/2,“es she“); printf(“%s/n“,p1); (分数:2.00)填空项 1:_68.以下函
28、数 inverse 的功能是使一个字符串按逆序存放,请填空。 inverse(char str) char m; int i,j; for(i=0,j=strlen(str);istrlen(str)/2; U【18】 /U,j-) m=stri; stri=U 【19】 /U; U 【20】 /U; (分数:6.00)填空项 1:_二级 C 语言笔试 69 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.执行下面程序段的结果是( )。 int x=23; do printf(“%2d“,x-); while(! x);(分数:1.00
29、)A.输出 321B.输出 23 C.不输出任何内容D.陷入死循环解析:解析 x-是先使用 x 的值,后进行自减运算,所以输出的结果应当为 23。2.有以下程序: #include stdio.h union pw int i; char ch2; a; main() a.ch0=13; a.ch1=0; printf(“%d/n“,a.i); 程序的输出结果是(注意:ch0在低字节,ch1在高字节)( )。(分数:1.00)A.13 B.14C.208D.209解析:解析 根据共用体的定义可知:共用体 a 的成员 i 和成员 ch2共用同一段内存空间,所以,当程序给 a.ch0和 a.ch1
30、赋值后,实际上,共用体成员 i 的值就确定为 13 了,所以打印输出的结果应当为 13。3.以下程序的输出结果是( )。 #include stdio.h main() int i,x33=9,8,7,6,5,4,3,2,1,*p= for(i=0;i4;i+=2) printf(“%d“,pi); (分数:1.00)A.52B.51C.53 D.97解析:解析 本题的考查点是通过指针引用数组元素。i=0 时,输出 P0,也就是 x11,输出5;i=2 时,输出 p2,即 P2+0,也就是 x20,输出 3。4.以下选项中属于 C 语言数据类型的是( )。(分数:1.00)A.复数型B.逻辑型
31、C.双精度型 D.集合型解析:解析 C 语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类,其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种。5.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算以及( )。(分数:1.00)A.数据的存储结构 B.计算方法C.数据映象D.逻辑存储解析:解析 数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。6.请读程序: #include stdio.h #define SUB(X,Y) (X)*Y main()
32、 int a=3,b=4; printf(“%d/n“,SUB(a+,b+); 上面程序的输出结果是( )。(分数:1.00)A.12 B.15C.16D.20解析:解析 本题的考查点是宏定义。a+的形式应当先使用 a 值,然后 a 才进行自加 1 运算,所以程序在进行 SUB()乘法运算的时候,仍取 a,b 的原值,最后输出的结果是 12。7.关系模型允许定义三类数据约束,下列不属于数据约束的是( )。(分数:1.00)A.实体完整性约束B.参照完整性约束C.域完整性约束 D.用户自定义的完整性约束解析:解析 关系模型允许定义三类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完
33、整性约束。前两种完整性约束由关系数据库系统支持,用户自定义的完整性约束则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。8.若 x 是 int 型变量,且有下面的程序段: for(x=3;x6;x+) printf(x%2)?(“*%d“):(“#%d/n“),x); 此程序段的输出结果是( )。(分数:1.00)A.*3 #4 *5B.#3 *4 #5C.#3 *4#5D.* 3#4 *5 解析:解析 本题考查条件运算符。如果 x%2 非 0,输出*和循环变量的值;如果 x%2 为 0,输出#和循环变量的值。当循环变量为 3 和 5 时,分别输出*3 和
34、*5,当循环变量为 4 时,输出#4 后换行。9.若有以下说明和语句,则四个选项中是对 c 数组元素的正确引用的是( )。 int c45,(*cp)5; cp=c;(分数:1.00)A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2) 解析:解析 本题考查数组元素的引用。语句 cp=c;将数组 c 的首行地址赋给了指针数组 cp。选项 A)的 cp+1 是指将数组 c 的首行地址加 1,即为第二行地址;选项 B)的*c(cp+3)是地址,等于数组 c 的首地址加 3 的内存单元的内容,不是对数组元素的引用;选项 c)的*(cp+1)+3 是地址,等于数组 c 的首地址加1
35、 的内存单元中存放的值加 3,不是对数组元素的引用。10.设有如下的程序段: char str=“Hello“; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为( )。(分数:1.00)A.oB./0 C.不确定的值D.o的地址解析:解析 本题考杏字符数组的结束标志。ptr=str 是将串 str 的首地址赋给了指针变量 ptr,所以ptr+5 指向字符串 str 的第六个数组元素,即是串的隐含结束标志/0,*(ptr+5)=/0,最后的结果为/0。11.C 语言中,下列叙述正确的是( )。(分数:1.00)A.不能使用 do-while 语句构成的循环B
36、.do-while 语句构成的循环,必须用 break 语句才能退出C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环 解析:解析 本题考查 do-while 语句。C 语言支持 do-while 语句,选项 A)错误;do-while 构成的循环,当 while 语句中的表达式值为零时结束循环,故选项 B)、C)都是错误的。12.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( )。(分数:1.00)A.软件投机B.软件危机 C.软件工程D.软件产生解析:
37、解析 软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。13.下面各语句行中,能正确地给字符串赋值的语句行是( )。(分数:1.00)A.char st4=“ABCDE“;B.char s5=A,B,C,D,E;C.char *s=“ABCDE“; D.char *s; scanf(“%s“,*;解析:解析 选项 A)字符串的赋值产生越界错误,不正确;选项 B)是字符数组的赋值,而不是字符串的赋值;选项 D)中 scanf 的列表项必须为变量的地址。14.开发大型软件时,产生困难的根本原因
38、是( )。(分数:1.00)A.大系统的复杂性 B.人员知识不足C.客观世界千变万化D.时间紧、任务重解析:解析 软件的显著特点是规模庞大,复杂度超线性增长。在开发大型软件时,要保证高质量极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。15.数据库、数据库系统和数据库管理系统之间的关系是( )。(分数:1.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统 C.数据库管理系统包括数据库和数据库系统D.三者没有明显的包含关系解析:解析 数据库系统包括数据库和数据库管理系统。16.下列描述中不正确的是( )。(分数:1.00)A.字符型数组中
39、可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出 D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值解析:解析 本题考查对数组的理解。C 语言规定只能逐个引用数组元素,而不能一次引用整个数组。对于字符数组,可以将整个字符串一次输入或输出。所以,选项 C)不正确。17.请读程序: #include stdio.h main() int a,b; for(a = 1,b = 1 ;a = 100;a+) if(b=20) break; if(b%3 =1) b +=3;continue; b-=5; printf(“%d/n“,a); 上面程序
40、的输出结果是( )。(分数:1.00)A.7B.8 C.9D.10解析:解析 本题考查 break 语句和 continue 语句。程序要输山循环结束时循环变量 a 的值,执行第一次循环时,条件(b%3=1)为真,b=4,继续下一次循环,如此反复,当 b=22 时,条件 (b=20)为真,跳出循环,此时共循环 8 次,即 a=8。18.请选出可用作 C 语言用户标识符的一组( )。(分数:1.00)A.void define WORDB.a3_b3 _123 IF C.For _abc caseD.2a DO sizeof解析:解析 C 语言规定,标识符只能由字母、数字和下划线三种符号组成,而
41、且第一个字符必须是字母或下划线。A)中的 void 与 C 语言的关键字重名,不合法;C)中的 case 和 C 语言的关键字重名,不合法;D)中的 2a 是数字开头,而且 sizeof 与 C 语言的关键字重名,不合法。19.以下程序的运行结果是( )。 #include stdio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12; int *p=a+5,*q=NULL; *q=8(p+5); printf(“%d %d/n“, *p,*q); (分数:1.00)A.运行后报错 B.6 6C.6 11D.5 5解析:解析 本题的考查点是通过指针引用数组元素
42、。程序中没有给 q 分配存储单元,只是给它赋了一个 NULL,所以程序的运行结果是:6 11 NULL pointer assignment,也就是运行后报错。20.下面程序的输出结果是( )。 #include stdio.h int m=13; int fun2(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; printf(“%d/n“,fun2(a,b)/m); (分数:1.00)A.1B.2 C.7D.10解析:解析 本题考查函数的调用。函数 fun2 的作用是将形参 x 和 y 的值相乘后减去 3,在 fun2 中的变
43、量 m 是一个局部变量,它的值在 fun2 函数内有效;在主函数中的 m 指的是全局变量,其值为 13,所以fun2(a,b)/m 的值为(7*5-3)/13,即 2。21.下面不属于软件设计原则的是( )。(分数:1.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。22.请读程序: #include stdio.h func(int a, int b) int c; c=a+b; return c;
44、 main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(“%d/n“,r); 上面程序的输出结果是( )。(分数:1.00)A.11B.20C.21 D.31解析:解析 函数 func 的作用是返回两个形参的和,第一个形参是 x,y 分别自减和自增后的和 13,第二个形参的值为 8(根据语法规则,应当先使用,后自增),所以 func 的返回值为 13+8= 21。23.以下程序的输出结果是( )。 #include stdio.h main() int i; for(i=1;i5;i+) if(i%2) printf(“*“); els
45、e continue; printf(“#“); printf(“$/n“);(分数:1.00)A.*#*#*#$B.#*#*#*$C.*#*#$ D.#*#*$解析:解析 程序中当 i 不能整除 2 时输出*,然后输出#,能够整除 2 时将结束本次循环,进入到下一次循环。当循环结束后,输出$。24.串的长度是( )。(分数:1.00)A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于 0D.串中所含字符的个数 解析:解析 串的长度是指串中字符的个数,且其字符个数可以为 0。25.以下程序的输出结果是( )。 #include stdio.h main() int n=4; while(n-) printf(“%d “,-n); (分数:1.00)A.2 0 B.3 1C.3 2 1D.2 1 0解析:解析 n-是先使用后自减,-n 是先自减后使用。n=4 时,执行 n-后,n 变为 3,执行-n 后,n 变为 2,所以,第一次输出时,n 为 2;同上过程,第二次输出时,n 为 0。26.已知字符 0 的 ASCII 码为十六进制的 30,现有程序如下: #include stdio.h main() union unsigne