1、二级 C语言笔试-136 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下程序fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“,fun(7);程序执行后的输出结果是( )。(分数:1.00)A.7B.3C.2D.02.下面程序的输出是( )。main()int t=1;fun(fun(t);fun(int h)static int a3=1,2,3;int k;for(k=0;k3;k+)ak+=ak-h;for(k=0;k3;
2、k+)printf(“%d“,ak);printf(“/n“);return(ah);(分数:1.00)A.1,2,3,1,5,9,B.1,3,5,1,3,5,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,3.下列说法正确的是( )。(分数:1.00)A.在 C语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C语言中,数组元素的个数可以不确定,允许随机变动C.在 C语言中,数组元素的数据类型可以不一致D.在 C语言中,定义一个数组后,就确定了它所容纳的元素的个数4.下列函数的类型是( )。fun(double x)float y;y=3*x-4;return y;(
3、分数:1.00)A.intB.不确定C.voidD.float5.一些重要的程序设计语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用( )。(分数:1.00)A.栈B.堆C.数组D.链表6.下列叙述正确的是( )。(分数:1.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失7.表达式5-1的值是( )。(分数:1.00)
4、A.整数 4B.字符 4C.表达式不合法D.字符 68.下列程序执行后的输出结果是( )。void rune(int*a,int b)b0=*a+b;main()int a,b5;a=0;b0=3;func( char*s2=“ABdUG“:int t;t=strcmp(s1,s2);printf(“%d“,t);(分数:1.00)A.正数B.负数C.零D.不确定的值16.下列叙述中正确的是( )。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对17.有以下程序:void swap(char*x,char
5、*y)char t;t=*x;*x=*y;*y=t;main()char*s1=“abe“,*s2=“123“;swap(s1,s2);printf(“%s,%s/n“,s1,s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abe,123C.1bc,a23D.321,cba18.下列程序执行后的输出结果是( )。main()char x=0xFFFF;printf(“%d/n“,x-);(分数:1.00)A.-32767B.FFFEC.-1D.-3276819.设有以下语句:int a=1,b=2,c;c=a(b2);执行后,c 的值为( )。(分数:1.00)A
6、.6B.7C.8D.920.下列程序的输出结果是( )。#includestdio.h#includedstring.hvoid fun(int b)static int i=0;dobi+=bi+1;while(+i2);main()int k,a5=1,3,5,4,9;fun(a);for(k=0;k5;k+)printf(“%d“,ak);(分数:1.00)A.13579B.48579C.48549D.4899921.下列程序的输出结果是( )。main()int p8=11,12,13,14,15,16,17,18),i=0,j=0;while(i+7)if(pi%2)j+=pi;pr
7、intf(“%d/n“,j);(分数:1.00)A.42B.45C.56D.6022.下面的函数调用语句中 func函数的实参个数是( )。func(f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)(分数:1.00)A.3B.4C.5D.823.表达式0x11 的值是( )。(分数:1.00)A.0xFFEEB.0x71C.0x0071D.0xFFE124.下列程序中 C的二进制值是( )。char a=2,b=4,c;c=ab2;(分数:1.00)A.00000011B.00010100C.00011100D.000i100025.为了避免在嵌套的条件语句 if else
8、中产生二义性,C 语言规定,else 子句总是与( )配对。(分数:1.00)A.缩排位置相同 ifB.其前面最近的 ifC.其后面最近的 ifD.同一行上的 if26.按照“先进后出”原则组织数据的结构是( )。(分数:1.00)A.队列B.栈C.双向链表D.二叉树27.下列程序的运行结果为( )。#define MAX(x,y)(x)(y)?(x):(y)main()int a=2,b=3, c=1,d=3,t;printf(“%d/n“,(MAX(a+b,c+d)*100);(分数:1.00)A.500B.5C.4D.40028.以三级模式为框架形式所组成的 3种数据库中,真实存在于计算
9、机外存的数据库是( )。(分数:1.00)A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库29.有以下程序:main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j=0;j=3;j+)x+; x+; printf(“x=%d/n“,x);程序执行后的输出结果是( )。(分数:1.00)A.x=4B.x=8C.x=6D.x=1230.数据库管理系统(DBMS)中用来定义模式、内模式和外模式的语言为( )。(分数:1.00)A.CB.BasicC.DDLD.DML31.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于
10、C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的功能32.下列程序的运行结果是( )。int y=5,x=14;y=(x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);(分数:1.00)A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y-2733.若有以下程序段,w 和 k都是整型变量:|w=k:LB:if(w=0)go to LE;w-:printf(“*“)goto LB:LE;|则不能与上面程序段等价的
11、循环语句是( )。(分数:1.00)A.for(w=k;w!=0;w-)printf(“*“);B.for(w=k;w;-w)printf(“*“);C.w=k:while(w-!=0)printf(“*“);D.w=k;w+;dow-;printf(“*“);while(w!=0);34.下列程序输出的结果是( )。main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%d/n“,d*y);(分数:1.00)A.3B.3.2C.0D.3.0735.设在 C语言中,float 类型数据占 4字节,则 double类型数据占( )字节。(分
12、数:1.00)A.1B.2C.8D.436.有下列程序:main()int y=10;doy-;while(-y);printf(“%d/n“,-y);当执行程序时,输出的结果是( )。(分数:1.00)A.-1B.1C.4D.037.若有下列定义(设 int类型变量占 2字节):int i=8,j=9;则下列语句:printf(“i=%d,j=%d/n“,i,j);输出的结果是( )。(分数:1.00)A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,938.有以下程序:main()int a=1,b=3,c=5,*p;int *p1= switch(n+)default
13、:printf(“error“);break;casea:easeA:caseb:caseB:printf(“good“);break;casec:caseC:printf(“pass“);cased:caseD:printf(“warn“);(分数:4.00)填空项 1:_50.以下程序的输出结果是_。main()int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%d/n“,a,b);(分数:4.00)填空项 1:_51.要求使下列程序输出 5个整数,请填空。for(i=0;i=_;printf(“%d/n“,i+=2););(分数:4.00)填空项 1:_5
14、2.在宏定义#define P13.14159 中,用宏名 PI代替一个_。(分数:4.00)填空项 1:_53.下列程序的输出结果是_。#includestdio.hsb(int s,int b)static int n=3;b=sn:n-; return(b);main()int s=1,5,6,8;int i,x=0;for(i=0;i4;i+)x=sb(s,x);printf(“%d“,x);printf(“/n“);(分数:4.00)填空项 1:_54.下面 rotate函数的功能是:将 n行 n列的矩阵 A转置 A,例如(分数:8.00)填空项 1:_二级 C语言笔试-136 答案
15、解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下程序fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“,fun(7);程序执行后的输出结果是( )。(分数:1.00)A.7B.3C.2 D.0解析:解析 在函数 fun(int x)中,有个 if语句判断,如果参数 x等于 0或 1时,返回值。否则进入下面的 p=x-fun(x-2)递归函数,当在主函数中调用 fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(
16、3)=7-(5-(3-fun(1)=7-(5-(3-3)-7-5=2”,所以最后的输出结果为 2。2.下面程序的输出是( )。main()int t=1;fun(fun(t);fun(int h)static int a3=1,2,3;int k;for(k=0;k3;k+)ak+=ak-h;for(k=0;k3;k+)printf(“%d“,ak);printf(“/n“);return(ah);(分数:1.00)A.1,2,3,1,5,9,B.1,3,5,1,3,5,C.1,3,5,0,4,8,D.1,3,5,-1,3,7, 解析:解析 本题考查双重函数调用及 for循环使用,fun 函数
17、中第一个 for循环语句的作用是给数组a赋值。当第一次调用 fun函数时,把实参 1传给形参,输出 a数组的元素为 1,3,5;第二次调用 fun函数时,由于数组 a为静态局部变量,故输出 a数组的元素为-1,3,7。3.下列说法正确的是( )。(分数:1.00)A.在 C语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C语言中,数组元素的个数可以不确定,允许随机变动C.在 C语言中,数组元素的数据类型可以不一致D.在 C语言中,定义一个数组后,就确定了它所容纳的元素的个数 解析:解析 在 C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也
18、就确定了,并且同一个数组中所有元素都是同一类型。4.下列函数的类型是( )。fun(double x)float y;y=3*x-4;return y;(分数:1.00)A.int B.不确定C.voidD.float解析:解析 本题考查函数值的类型。在函数调用时,尽管 y的类型是 float,x 的类型是 double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为 int型,所以计算后的 y的类型是 int型。5.一些重要的程序设计语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用( )。(分数:1.00)A.栈 B.堆C.数组D.链表解
19、析:解析 在允许过程的递归调用的程序设计语言中,由于 C语言中栈的特性为先进后出,因此用栈来实现递归调用中的存储分配。6.下列叙述正确的是( )。(分数:1.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:解析 在 C语言中,有两种对文件的存取方式:顺序存取和直接存取。如果以“a”的方式对已打开的文件进行写操作后,则原文件中内容将保存,新的数据写在原有内
20、容之后。如果以“a+”的方式为读和写操作而打开文件,则可以对文件进行读/写,而且在读和写操作之间不必关闭文件。可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。7.表达式5-1的值是( )。(分数:1.00)A.整数 4 B.字符 4C.表达式不合法D.字符 6解析:解析 在 C语言中,字符都是变为其对应的 ASCII码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符 5和字符 1的 ASCII码值相差仍是 4。8.下列程序执行后的输出结果是( )。void rune(int*a,int b)b0=*a+b;main()int a,b5;a=0;b0=3;func( ch
21、ar*s2=“ABdUG“:int t;t=strcmp(s1,s2);printf(“%d“,t);(分数:1.00)A.正数 B.负数C.零D.不确定的值解析:解析 本题考查字符串比较函数和两个字符串比较的原则两个知识点。(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的 ASCII码值相同,则继续比较下一对字符,若它们的 ASCII码值不同,则 ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串的全部 i个字符与另一个字符串的前 i个字符相同,则字符串较长的较大。(2)strcrop(s1,s2)的返回值,当 s1s2 时,返回
22、值为负数;当 s1=s2时,返回 0;当 s1s2时,返回值为正数。16.下列叙述中正确的是( )。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:解析 程序调试由程序开发者完成,是诊断和改正程序中的错误的过程。软件测试由专门的测试人员完成,是发现错误而执行程序的过程。软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。17.有以下程序:void swap(char*x,char*y)char t;t=*x;*x=*y;*y=t;mai
23、n()char*s1=“abe“,*s2=“123“;swap(s1,s2);printf(“%s,%s/n“,s1,s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abe,123C.1bc,a23 D.321,cba解析:解析 本题考查 swap函数,它的作用是把 x、y 所指的内容互换,其他的不变,因此当执行完调用函数后,仅仅a与1互换,其他的没有变。18.下列程序执行后的输出结果是( )。main()char x=0xFFFF;printf(“%d/n“,x-);(分数:1.00)A.-32767B.FFFEC.-1 D.-32768解析:解析 因为 x=0
24、x FFFF=11111111,因此当以整型形式输出时对应的数为-1。19.设有以下语句:int a=1,b=2,c;c=a(b2);执行后,c 的值为( )。(分数:1.00)A.6B.7C.8D.9 解析:解析 本题考查两个知识点,按位异或和左移。把 b左移 2位化成二进制 c=a(b2)=a(0000102)=a001000=0000001001000=9,故选择 D。20.下列程序的输出结果是( )。#includestdio.h#includedstring.hvoid fun(int b)static int i=0;dobi+=bi+1;while(+i2);main()int
25、k,a5=1,3,5,4,9;fun(a);for(k=0;k5;k+)printf(“%d“,ak);(分数:1.00)A.13579B.48579C.48549 D.48999解析:解析 本题考查 do-while循环,在 fun函数中,首先定义了静态变量 i=0,do-while 循环要实现的功能是以 b0=b0+b1,b1=b1+b2,其他元素不变的规则重新给 b数组赋值。在主函数中,通过调用 fun函数,按上面的规则对数组 a重新赋值,最后输出数组 a。21.下列程序的输出结果是( )。main()int p8=11,12,13,14,15,16,17,18),i=0,j=0;whi
26、le(i+7)if(pi%2)j+=pi;printf(“%d/n“,j);(分数:1.00)A.42B.45 C.56D.60解析:解析 C 语言中数组的下标默认为 0,因此数组 p的下标从 0开始,所以 p8的范围为:07。第 1次循环 i=0,执行循环,得出 i=1,因此 pi为 p1=12,12%2=0,不执行后面的语句;接着进行第 2次循环,此时 i=1,小于 7执行循环,并且 i自加,得 i=2,因此 pi为 p2=13,13%2=1,执行后面的语句;依此类推最后退出循环。最后 j的值为:j=13+15+17=45。22.下面的函数调用语句中 func函数的实参个数是( )。fun
27、c(f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)(分数:1.00)A.3 B.4C.5D.8解析:解析 实参是在调用时传递该函数的参数。故选 A。23.表达式0x11 的值是( )。(分数:1.00)A.0xFFEE B.0x71C.0x0071D.0xFFE1解析:解析 本题主要考查按位求反运算:十六进制整型常量的形式是以数字 0x开头的十六进制字符串;按位求反运算的规则是:将二进制表示的运算对象按位取反,即将 1变 0,将 0变 1。24.下列程序中 C的二进制值是( )。char a=2,b=4,c;c=ab2;(分数:1.00)A.00000011 B.0001
28、0100C.00011100D.000i1000解析:解析 本题主要考查右移运算和按位异或。把 b化为二进制数为 00000100,右移两位后为00000001,a 的二进制为 00000010,两者异或为 00000011。25.为了避免在嵌套的条件语句 if else中产生二义性,C 语言规定,else 子句总是与( )配对。(分数:1.00)A.缩排位置相同 ifB.其前面最近的 if C.其后面最近的 ifD.同一行上的 if解析:解析 C 语言规定,在 if else语言中,else 总是与它前面的最近的 if配对。26.按照“先进后出”原则组织数据的结构是( )。(分数:1.00)
29、A.队列B.栈 C.双向链表D.二叉树解析:解析 栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除,是按先进后出的原则组织数据的。27.下列程序的运行结果为( )。#define MAX(x,y)(x)(y)?(x):(y)main()int a=2,b=3, c=1,d=3,t;printf(“%d/n“,(MAX(a+b,c+d)*100);(分数:1.00)A.500 B.5C.4D.400解析:解析 本题考查参数的宏的定义运算符:(x)(y)?(x):(y),当表达式为真时输出 x,否则输
30、出y,调用(MAX(a+b,c+d)*100 时,(a+b=5)(c+d=4),所以输出 a+b=5,所以 x=5*100。28.以三级模式为框架形式所组成的 3种数据库中,真实存在于计算机外存的数据库是( )。(分数:1.00)A.概念数据库B.用户数据库 C.物理数据库D.逻辑数据库解析:解析 以内模式为框架所组成的数据库叫物理数据库;以概念模式为框架所组成的数据叫概念数据库;以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。29.有以下程序:main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j=0;j=3
31、;j+)x+; x+; printf(“x=%d/n“,x);程序执行后的输出结果是( )。(分数:1.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 当 i=0时,i2 成立,执行第一个 for循环 x自加为 1,接着执行第二个 for循环,j=0时 j=3 成立,此时 if不成立执行 x+后,x 为 2,接着 j=1时,j=3 成立,继续循环,此时 if成立,continue是跳出本次循环继续下一次循环,不再执行 x+了,接着 j=2时,j=3 成立,此时 if不成立,执行其后的语句,当 j=4时,退出第二个循环,接着执行其后的 x+,x 为 4,当 i=1时,i2 成立,执
32、行第一个循环,x=5,此时接着执行其后的语句,即第二个循环,j=0 时 j3 成立,此时 if不成立,x+后,x 为 6,接着 j为 1时,j=3 成立,继续循环,此时 if成立不再执行 x+了,接着 j=2时,j=3 成立,此时 if不成立,执行其后的 x+,x 为 7,j=3 时,j=3 成立,此时 if成立,不再执行其后的语句了,当 j=4时,退出第二个循环,执行循环外部的语句,所以 x为 8,故选 B选项。30.数据库管理系统(DBMS)中用来定义模式、内模式和外模式的语言为( )。(分数:1.00)A.CB.BasicC.DDL D.DML解析:解析 数据定义语言(Data Defi
33、nition Language,DDL)是 SQL语言的一部分,用来定义模式、内模式和外模式。31.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于 C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头 C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的功能解析:解析 本题考查对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#includestdio.h头文件,预处理的作用就是实现宏定义和条件编译。32.下列程序的运行结果是( )。int y=5,x=14;y
34、=(x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);(分数:1.00)A.x=27,y=27B.x=12,y=13C.x=15,y=14 D.x=y-27解析:解析 逗号表达式的解题思路是从左到右,依次求解,整个逗号表达式的值就是最后一个表达式的值。表达式(x=3*y,x+1)中,依次是 x=3*y=3*5=15,表达式 x+1=16,但没有给 x或 y赋值,所以 x还是等于15;第 3个表达式 x-1=15-1=14,所以 y的值为 14。33.若有以下程序段,w 和 k都是整型变量:|w=k:LB:if(w=0)go to LE;w-:printf(“*“)
35、goto LB:LE;|则不能与上面程序段等价的循环语句是( )。(分数:1.00)A.for(w=k;w!=0;w-)printf(“*“);B.for(w=k;w;-w)printf(“*“);C.w=k:while(w-!=0)printf(“*“); D.w=k;w+;dow-;printf(“*“);while(w!=0);解析:解析 当循环结束时,w 的值应为-1,而其他选项中 w的值为 0,故选择 C选项。34.下列程序输出的结果是( )。main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%d/n“,d*y);(分数:1
36、.00)A.3B.3.2C.0 D.3.07解析:解析 根据赋值运算的类型转换规则,先将 double型的常量 1.2转换为 int型,因为 x的类型是int,则 x的值为 1;执行语句 y=(x+3.8)/5.0时即先将整型变量 x的值 1转换为 double型 1.0,然后3.8相加得 4.8,进行除法运算 4.8/5.0结果为 0,即变量 y的值为 0,d*y 的值也为 0,故选 C选项。35.设在 C语言中,float 类型数据占 4字节,则 double类型数据占( )字节。(分数:1.00)A.1B.2C.8 D.4解析:解析 在 C语言中各种数据类型在内存中所占的字节数与机器的位
37、数有关,16 位机中(也就是在标准 C中),若 int类型上占 2字节,则 float类型数据占 4字节,double 类型数据占 8字节。36.有下列程序:main()int y=10;doy-;while(-y);printf(“%d/n“,-y);当执行程序时,输出的结果是( )。(分数:1.00)A.-1B.1C.4D.0 解析:解析 本题考查 do-while循环。当-y 是 0(即 y是 0)时结束循环,输出-y 先将 y的值减 1再输出 y的值。37.若有下列定义(设 int类型变量占 2字节):int i=8,j=9;则下列语句:printf(“i=%d,j=%d/n“,i,j
38、);输出的结果是( )。(分数:1.00)A.i=8,j=9B.i=%d,j=%d C.i=%8,j=%9D.8,9解析:解析 本题考查函数的输出格式。在 printf函数的格式说明符中有两个“%”说明;将第 1个%后面的字符原样输出,并不输出其对应的变量值。38.有以下程序:main()int a=1,b=3,c=5,*p;int *p1= switch(n+)default:printf(“error“);break;casea:easeA:caseb:caseB:printf(“good“);break;casec:caseC:printf(“pass“);cased:caseD:pri
39、ntf(“warn“);(分数:4.00)填空项 1:_ (正确答案:passwarn)解析:解析 本题考查 switch-case语句,当 n+后,表达式的值为c,n 的值自加为d,因此执行casec,输出 pass,接着执行 cased,输出 warn,故填 passwarn。50.以下程序的输出结果是_。main()int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%d/n“,a,b);(分数:4.00)填空项 1:_ (正确答案:2,1)解析:解析 根据程序依次执行“a=a+b;b=a-b;a=a-b;”即 a=1+2=3,b=3-2=1,a=3-1=2
40、,最后 a的值为 2,b 的值为 1,故填 2,1。51.要求使下列程序输出 5个整数,请填空。for(i=0;i=_;printf(“%d/n“,i+=2););(分数:4.00)填空项 1:_ (正确答案:8)解析:解析 本题考查基本的 for循环条件,i+=2 也可表示为 i=i+2,表示 i每次递增 2,从 0开始,输出 5个整数,则需要的条件是 i=8。52.在宏定义#define P13.14159 中,用宏名 PI代替一个_。(分数:4.00)填空项 1:_ (正确答案:字符串)解析:解析 本题考查#define 格式:#define 标识符 字符串。53.下列程序的输出结果是_
41、。#includestdio.hsb(int s,int b)static int n=3;b=sn:n-; return(b);main()int s=1,5,6,8;int i,x=0;for(i=0;i4;i+)x=sb(s,x);printf(“%d“,x);printf(“/n“);(分数:4.00)填空项 1:_ (正确答案:8651)解析:解析 本题考查程序输出,程序运行时,第一次循环,i=0,调用 sb(x,x)子函数,此时n=3,x=sn=s3=8,n-变为 2;第二次循环,i=1,调用 sb(s,x)子函数,因此将 n定义为静态变量,所以此时 n=2,返回 x=sn=s2=6;第三次循环,i=2,调用 sb(s,x)子函数,此时 n=1,返回 x=sn=s1=5;第四次循环,i=3,调用 sb(s,x)子函数,此时 n=0,返回 x=sn=s0=1。54.下面 rotate函数的功能是:将 n行 n列的矩阵 A转置 A,例如(分数:8.00)填空项 1:_ (正确答案:j1 aij=aji)解析:解析 本题是求 A的转置矩阵,即沿着主对角线将元素 aij和ji的值对换。所以外层循环 i从 0到 N-1,内层循环到对角线即可,也就是 i不包括,因此,应填 j1 和 aij=aji。