1、二级 C 语言笔试-36 及答案解析(总分:107.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.以下程序的输出结果是int f()static int i=0;int s=1;s+=i; i+;return s;main ( )int i,a=0;for (i=0;i5; i+) a+=f();printf ( “%d/n“ ,(分数:1.00)A.;2.有以下程序#include string.hstruct STUint hum;float TotalScore;void f(struct STU p)struct STU s2=20044,550,2004
2、5,537;p.num=s 1.num;p.TotalScore-s1.TotalScore;main()struct STU s2-20041,703,20042,580;f(s0);printf(“%d %3.0f/n“,s0.num,s0.TotalScore);程序运行后的输出结果是(分数:1.00)A.20045 537B.20044550C.20042580D.20041 7033.若有以下说明和定义typede int *INTEGER;INTEGER p, *q;以下叙述正确的是(分数:1.00)A.p 是 int 型变量B.p 是基类型为 int 的指针变量C.q 是基类型为
3、 int 的指针变量D.程序中可用 INTEGER 代替 int 类型名4.下列关于栈的描述正确的是(分数:1.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素。C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素5.有以下程序:#define f(x) x*xmain ( )int i;i=f (4+4) /f (2+2);printf ( “%d/n“, i );执行后输出结果是(分数:1.00)A.28B.22C.16D.46.有以下程序int a=2;int f(int n)static int a=3
4、;int t=0;if(n%2) static int a=4; t+=a+;else static int a=5; t+=a+;return t+a+;main ( )int s=a, i;for (i=0;i3; i+) s+=f (i)print f (“%d/n“ , s );程序运行后的输出结果是(分数:1.00)A.26B.28C.29D.247.下列叙述中正确的足(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令8.编制一个好的程序,首先要保证它的正确性和可靠性,还应强
5、调良好的编程风格,在书写功能性注释时应考虑(分数:1.00)A.仅为整个程序作注释B.仅为每个模块作注释C.为程序段作注释D.为每个语句作注释9.有以下程序main ( )int x=102, y=012;print f ( “%2d, %2d/n“ ,x,y);执行后输出结果是(分数:1.00)A.10,01B.02,12C.102,10D.02,1010.有以下程序main ( )int k=5,n=0;while (k0)switch (k)default : break;case 1 : n+=k;case 2 :case 3 : n+=k;k-;printf (“%d/n“,n);程
6、序运行后的输出结果是(分数:1.00)A.0B.4C.6D.711.有以下程序main ( )unsigned char a,b;a=4 | 3;b=4 printf (“%d %d/n“ ,a,b);执行后的输出结果是(分数:1.00)A.7 0B.0 7C.1 1D.43 012.有以下程序main ( )int i,s=0;for (i=1;i10; i+=2) s+=i+1;print f ( “%d/n“, s);程序执行后的输出结果是(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和13.若变量 a 是
7、 int 类型,并执行了语句:a=A+1.6;,则正确的叙述是(分数:1.00)A.a 的值是字符 CB.a 的值是浮点型C.不允许字符型和浮点型相加D.a 的值是字符A的 ASCII 值加上 114.指出下面不正确的赋值语句(分数:1.00)A.a+;B.a=b;C.a+=b;D.a=1,b=1;15.设有以下说明语句typedef structint n;char ch8;PER;(分数:1.00)A.PER 是结构体变量名B.PER 是结构体类型名C.typedef struct 是结构体类型D.struct 是结构本类型名16.设有以下定义int a=0; double b=1.25;
8、 char c=A;#define d 2则下面语句中错误的是(分数:1.00)A.a+;B.b+;C.c+;D.d+;17.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是(分数:1.00)A.p=1;B.*q=2;C.q=p;D.*p=5;18.若程序中定义了以下函数:double myadd(double a,double b)return (a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(分数:1.00)A.double myadd(doublea,b);B.double myadd(double,double);C.doub
9、le myadd(doubleb,doublea);D.double myadd(doublex,double y);19.关系数据库的概念模型是_的集合。(分数:1.00)A.关系模型B.关系模式C.关系子模式D.存储模式20.以下能正确定义的数组并正确赋初值的语句是(分数:1.00)A.int N=5,bNN;B.int a12=1,3 ;C.int c2=1,2,3,4;D.int d32=1,2,3,4;21.有以下程序段int n, t=1,s=0;scanf ( “%d“ , do s=s+t; t=t-2; while (t ! =n);为使此程序段不陷入死循环,从键盘输入的数据
10、应该是(分数:1.00)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数22.有以下程序:fun (int a, int b)if (ab) return ((分数:1.00)A.;else return(B.;“ , 则以下选项中各程序段执行后,x 的值不为 3(分数:1.00)A.if(ca)x=1; else if(ba)x=2:else x=3;B.if(a3)x=3:else if(a2)x=2; else x=1;C.if(a3) x=3;if(a2) x=2;if(al)x=1;D.if(ab) x=b;if(bc) x=cif(ca) x=a;24.有以下程序main
11、( )char a = “abcdefg“, b 10 =“abcdefg“;printf (“%d %d/n“ ,sizeof ((分数:1.00)A.,sizeof (B.);25.若有定义“int*p3;“,则以下叙述中下确的是(分数:1.00)A.定义了一个基类型为 int 的指针变量 p,该变量具有三个指针B.定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类犁为 int 的指针C.定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素D.定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int 类型元素26.有以下程序#define P 3void
12、 F(int x) return(pxx);main()pritnf(“%d/n“,F(3+5); 程序运行后的输出结果是(分数:1.00)A.192B.29C.25D.编译出错27.有以下程序main()int i=10,j=1;printf(“%d,%/d/n“,i-,+j);执行后输出的结果是(分数:1.00)A.9,2B.10,2C.9,1D.10,128.有以下程序main()int s=0, a=1, n;scanf ( “%d“, dos+=l; a=a-2; while (a! =n);print f ( “%d/n“ , s );若要使程序的输出值为 2,则应该从键盘给 n
13、输入不敷出值是(分数:1.00)A.-1B.-3C.-5D.029.有以下程序#include stdio.hmain()FILE *fp;int i,k,n;fp=fopen(“data.dar“, “w+“);for(i=1;i6;i+)fprintf(fp,“%d “,1);if(i%3=0)fprintf(fp, “/n“);rewind(fp);fscanf(fp, “%d%d“, printf. (“%d %d/n“,k,n);fclose(fp);程序运行后的输出结果是(分数:1.00)A.0 0B.123 45C.1 4D.1 230.有以下程序int f(int b 4)in
14、t i,j,s=0;for(j=0; j4; j+)i=j;if (i2) i=3-j;s+=bi j;return s;main ( )int a4 4 =1,2,3,4, 0,2,4,6, 3,6,9,12), 3,2,1,0;print f ( “%d/n“ , f((分数:1.00)A.);puts (ps+4);* (ps+4)=0;puts (s);程序运行后的输出结果是(选项 D 中的第一行是空行)(分数:1.00)A.n/NoYes/NoB./NoYesC.n/NoYes/NoD./NoYes32.有以下程序int a=2;int f(int *(分数:1.00)A.scanf
15、 ( “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=456,p=789D.123 456 78934.若要说明一个类型名 STP,使得定义语句 STP s;等价于 char *s;, 以下选项中正确的是(分数:1.00)A.typedef STP char *s;B.typedef *char STP;C.typedef STP *char;D
16、.typedef char* STP;35.下列选项中正确的语句是(分数:1.00)_36.下列对于软件测试的描述中正确的是(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的日的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则37.C 语占中,函数值类型的定义可以缺省,此时函数值的隐含类型是(分数:1.00)A.voidB.intC.floatD.double38.在数据库管理系统提供的数据语言中,负责数据的模式定义与数据的物理存取构建的是(分数:1.00)A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制语
17、言39.有以下程序:#include stdio.hmain()FILE *fp; int i, k=0, n=0;fp=fopen(“d1.dat“,“w“);for(i=l;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);执行后输出结果是(分数:1.00)A.1 2B.123 0C.1 23D.0 040.在深度为 5 的满二叉树中,结点的个数为(分数:1.00)A.32B.31C.16D.1541.以下程序段中,不
18、能正确赋字符串(编译时系统会提示错误)的是(分数:1.00)A.char s10=“abcdefg“;B.char t=“abcdefg“,*s=t;C.char s10; s=“abcdefg“;D.char s10;strcpy(s,“abcdefg“);42.有以下程序段int m=0,n=0; char c=a;scanf (“%d%c%d“, printf (“%d, %c, %d/n“, m, c, n);若从键盘上输入:10A10回车,则输出结果是(分数:1.00)A.10,A,10B.10,a,10C.1O,a,0D.10,A,043.在结构化方法中,软件功能分解属于下列软件开
19、发中的阶段是(分数:1.00)A.详细设计B.需求分析C.总体设计D.编程调试44.有以下程序main ( )int k=4, n=0;for ( ; nk;)n+;if (n%3 !=0) continue;k- ; print f ( “%d, %d/n“, k, n);程序运行后的输出结果是(分数:1.00)A.1, 1B.2, 2C.3, 3D.4, 445.有以下程序int f(int n)if (n=l) return 1;else return f(n-1)+1;main ()int i,j=0;for(i=i;i3;i+) j+=f(i);printf “%d/n“, j );
20、程序运行后的输出结果是(分数:1.00)A.4B.3C.2D.146.用树形结构来表示实体之间联系的模型称为(分数:1.00)A.关系模型B.层次模型C.网状模型D.数据模型47.数据的存储结构是指(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示48.若有如下程序段,其中 s. a. b. c 均已定义为整型变量,且 a. c 均已赋值(c 大于 0)s=a;for (b=1;b =c;b+) s=s+1;则与上述程序段功能等价的赋值语句是(分数:1.00)A.s=a+b;B.s=a+c;C.s=s+c;D.s=
21、b+c;49.设有如下说明typedef struct STlong a; int b; char c2; NEW;则下面叙述中正确的是(分数:1.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型D.NEW 是一个结构体变量50.有以下程序void sum (int a)a0-a-1+a1; main ( )int a10=1,2,3,4,5,6,7,8,9,10;sum(printf (“%d/n“ ,a2 );程序运行后的输出结果是(分数:1.00)A.6B.7C.5D.8二、填空题(总题数:19,分数:57.00)51.算法执行过程中所需要的基本运算次数
22、称为算法的 1。(分数:3.00)填空项 1:_52.数据的 1 结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。(分数:3.00)填空项 1:_53.数据流图的类型有 1 和事务型。(分数:3.00)填空项 1:_54.在关系数据库中,将数据表示成二维表,每一个二维表称为 1。(分数:3.00)填空项 1:_55.在数据库理论中,数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应修改应用程序,称为 1。(分数:3.00)填空项 1:_56.若从键盘输入 58,则以下程序输出的结果是_。main )int a;scanf (“%d“ ,if
23、(a50) print f (“%d“ ,a);if (a40) print f (“%d“ ,a);if (a30) printf (“%d“ ,a);(分数:3.00)填空项 1:_57.以下程序运行后的输出结果是_。main ( )char m;m = B + 32;printf (“%e/n“ ,m);(分数:3.00)填空项 1:_58.以下程序运行后的输出结果是_。maininn a=1. b=3. c=5:if (c=a+b)printf ( “yes/n);elseprintf (“no/n);(分数:3.00)填空项 1:_59.以下程序运行后的输出结果是_。main ()i
24、nt a.b,c;a=10; b=20; c=(a%b)|a/b1);printf(“%d %d %d n“ ,a,b,c);(分数:3.00)填空项 1:_60.以下程序运行后的输出结果是_。main ( )int a4 4=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18;int i=0.j=0,s=0;while (i+4 if (i = 2 | i = 4)continue;j =0;dos += ai j:j+;while (j4);printf ( “%d/n“, s);void fun(int x, int y)(分数:3.00)填空项 1:_61.
25、以下程序运行后的输出结果是_。void fun(int x, int y)x=x+y; y=x-y; x=x-y;printf(“%d,%d,“,x,y);main ( )int x=2,y=3;fun(x,y);printf(“%d,%d/n“,x,y);(分数:3.00)填空项 1:_62.以下程序运行后的输出结果是_。main()char a=“123456789“,*p;int i=0;p=a;while(*p)if (i%2 = 0)*p=*;p+; i+;puts(a);(分数:3.00)填空项 1:_63.以下程序运行后的输出结果是_。main()int i,n=0,0,0,0,
26、0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(“%d“,ni);(分数:3.00)填空项 1:_64.以下程序运行后的输出结果是_。main()/ int i,j,a3=1,2,3,4,5,6,7,8,9;for (i=0;i3;i+)for(j=i+1;j3;j+) aji=0;for (i=0;i3;i+)for (j=0;j3;j+) printf(“%d “,aij);printf(“/n“);(分数:3.00)填空项 1:_65.以下程序运行后的输出结果是_。int f(int a,int n)if(n=l)return f(a,n-1)+an-1;else
27、return 0;main )int aa5=1, 2, 3, 4, 5, s;s=f(aa,5);printf%d/n“,s);(分数:3.00)填空项 1:_66.下列程序的运行结果是_。 #include string.hchar *ss(char *s)return s+strlen(s)/2; main()char *p,*str=“abcdefgh“;p=ss(str); printf(%s/n“,p);(分数:3.00)填空项 1:_67.下面程序的运行结果是_。#define N 10#define s(x) x*x#define f(x) (xx)main()int i1,i
28、2;i1-1000/s(N); i2=1000/f(N);printf(“%d %d/n“,i1,i2);(分数:3.00)填空项 1:_68.以下程序的输出结果是_。#define MCRA (m) 2*m#define MCRB (n,m) 2*MCRA (n)+mmain()int i-2,j=3;printf(“%d/n“,MCRB(j,MCRA(i);(分数:3.00)填空项 1:_69.以下函数 rotate 的功能是:将 a 所指 N 行 N 列的二维数组中的最后一行放到 b 所指二维数组的第 0 列中,把 a 所指二维数组中的第 0 行放到 b 所指二维数组的最后一列中, b
29、所指二维数组中其他数据不变。#define N 4void rotate(int aN,int bN)int i,j;for(i=0; iN; i+)biN-1=_;_=aN-1i;(分数:3.00)填空项 1:_二级 C 语言笔试-36 答案解析(总分:107.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.以下程序的输出结果是int f()static int i=0;int s=1;s+=i; i+;return s;main ( )int i,a=0;for (i=0;i5; i+) a+=f();printf ( “%d/n“ ,(分数:1.00)A.;解
30、析:解析 本题考核的知识点是静态变量 static 的应用。在 C 语言中声明为 static 型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留; 因而可以继续使用存储单元中原来的值。本题中函数 f()中定义了一个 static 型变量i,故每调用一次函数 f(),i 的值加 1,返回 s 的值等于 i,在主函数中用了一个 for 循环,该循环执行了 5 次,每次都调用 f()函数,将其返回值累加到变量 a 中,故悬后 a 的值为 1
31、+2+3+4+5=15。所以,4 个选项中 D 为所选。2.有以下程序#include string.hstruct STUint hum;float TotalScore;void f(struct STU p)struct STU s2=20044,550,20045,537;p.num=s 1.num;p.TotalScore-s1.TotalScore;main()struct STU s2-20041,703,20042,580;f(s0);printf(“%d %3.0f/n“,s0.num,s0.TotalScore);程序运行后的输出结果是(分数:1.00)A.20045 53
32、7B.20044550C.20042580D.20041 703 解析:解析 把结构体变量作为一个参数传递给函数时,传递的是实参结构体变量的值,系统将为结构体类型的形参开辟相应的存储单元,并将实参中各成员的值赋给对应的形参成员。因此,改变形参变量的内容不会影响实参,即传值调用。所以本题的函数 f()没有对传递的结构体 s0作任何改动,结果还是20041 703。应该选择 D。3.若有以下说明和定义typede int *INTEGER;INTEGER p, *q;以下叙述正确的是(分数:1.00)A.p 是 int 型变量B.p 是基类型为 int 的指针变量 C.q 是基类型为 int 的指
33、针变量D.程序中可用 INTEGER 代替 int 类型名解析:解析 INTEGER 是类型名,由它来间接定义 p 和*q 的类型,因此,p 是基类型为 int 的指针变量,故选项 A 不正确,选项 B 正确, q 是二级指针变量,它指向基类型是 int 的指针变量,故选项 C,D 不正确。所以 4 个选项中 B 正确。4.下列关于栈的描述正确的是(分数:1.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素。C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:解析 栈是一种特殊的线性表,其插入与删除运算
34、都只在线性表的一端进行。由此可见,选项A、选项 B 和选项 D 错误,正确答案是选项 C。5.有以下程序:#define f(x) x*xmain ( )int i;i=f (4+4) /f (2+2);printf ( “%d/n“, i );执行后输出结果是(分数:1.00)A.28 B.22C.16D.4解析:解析 本题考核的知识点是宏定义的简单应用。本题中首先将所有的宏替换掉,则表达式为i=4+4*4+4/2+2*2+2,故最后输出的 i 的值为 28。所以,4 个选项中选项 A 符合题意。6.有以下程序int a=2;int f(int n)static int a=3;int t=
35、0;if(n%2) static int a=4; t+=a+;else static int a=5; t+=a+;return t+a+;main ( )int s=a, i;for (i=0;i3; i+) s+=f (i)print f (“%d/n“ , s );程序运行后的输出结果是(分数:1.00)A.26B.28C.29 D.24解析:解析 全局变量的生存期是整个程序的运行期间,作用域是从变量定义的位置开始,到整个源文件结束止。但是,若全局变量和某一函数或语句块中的局部变量同名,则在该函数或语句块中,此全局变量被屏蔽,即在该函数或语句块内,访问的是局部变量,与同名的全局变量不发
36、生任何关系。静态局部变量的生存期与全局变量相同,作用域和局部变量一样都是整个函数成语旬块内有效。程序第一行定义了一个全局变量 a,在 f()函数开头也定义了一个静态局部变量 a,而且在后面 if 语句的两个子句中都定义了静态局部变量 a。这 4 个变量 a 虽然名字一样,但却是 4 个独立的变量,而且在整个程序运行期都存在。在主函数中,在定义变量 s 时将 s 初始化为全局变量 a 的值 2,然后使用一个 for 循环分别调用了 3 次f(0)、f(1)、f(2),并将得到的值累加到变量 s 中。第 1 次调用 n=0 为偶数,执行 else 子句,此时 t 累加的是 else 子句中的变量
37、a,所以执行后 else 子句中的 a 变为 6,t 变为 5,然后 return 语句中的 a 是函数 f()开头定义的 a,执行后函数开头的 a 变为 4,所以返回值是 5+3=8。第 2 次调用 n 为 1 是奇数,执行 if 子句,所以 t 变为 4, if 子句中的 a 变为 5,然后返回时函数开头的 a 变为 5,返回值是 4+4=8。第 3 次调用 n 为 2 是偶数,又执行 else 子句,else 子句中的 a 现在还是上次执行后的值 6,所以 t=6,然后返回时加上函数开头的 a 的当前值 5, 最后返回 11。所以 s 最终的值是 2+8+8+11=29。故应该选择C。7
38、.下列叙述中正确的足(分数:1.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 本题考核软件维护的概念维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段,在软件交付使用后,还需要进行维护。软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。综上所述,本题的正确答案是 A,其余选项的说法错误。8
39、.编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑(分数:1.00)A.仅为整个程序作注释B.仅为每个模块作注释C.为程序段作注释 D.为每个语句作注释解析:解析 功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不是每条语句。9.有以下程序main ( )int x=102, y=012;print f ( “%2d, %2d/n“ ,x,y);执行后输出结果是(分数:1.00)A.10,01B.02,12C.102,10 D.02,10解析:解析
40、本题考核的知识点是输出函数 printf()的应用。 本题中, printf(%2d,%2d/n”,x,y)表示输出形式是十进制整数,域宽是 2,而在 C 语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出因此最后的输出值为 102 和 10,所以,4 个选项中选项 C 符合题意。10.有以下程序main ( )int k=5,n=0;while (k0)switch (k)default : break;case 1 : n+=k;case 2 :case 3 : n+=k;k-;printf (“%d/n“,n);程序运行后的输出结果是(分数:1.00)A.0B.4C.6D.7
41、解析:解析 本题考查的是 switch 语句。switch 语句中的 case 或 default 只是一种入口标号,它并不形成一种子句的概念。当满足其中某个标号的条件而进入 switch 语句中时,如果没碰到 break 语句,将一直执行到 switch 语句的结尾。题目中使用了一个 while 循环使 k 从 5 递减到 1,当 k=5 或 4 的时候从default 标号进入 switch,碰到 break;语句立即跳出,没有改变 n:当 k=3 时,执行了一次 n+=k;k=2 时,也执行了一次 n+=k;k=1 时,执行了两次 n+=k;所以最终 n 的值为 3+2+1+1=7。故应
42、该选择 D。11.有以下程序main ( )unsigned char a,b;a=4 | 3;b=4 printf (“%d %d/n“ ,a,b);执行后的输出结果是(分数:1.00)A.7 0 B.0 7C.1 1D.43 0解析:解析 本题考核的知识点是位运算。在位与运算符“for (i=1;i10; i+=2) s+=i+1;print f ( “%d/n“, s);程序执行后的输出结果是(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和 解析:解析 本题考核的知识点是 for 循环语句和复合赋值+=运算
43、符的应用。本题中, i 赋初值为 1,并对其每次进行加 2 操作,即 i 每次均为 110 之间的奇数,s+=i+1,即 s=s+i+1,相当于 s 等于原来的s 每次加上 110 之间的偶数,直到 i10 不成立当 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+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 符合题意。13.若变量 a 是 int 类型,并执行了语句
44、:a=A+1.6;,则正确的叙述是(分数:1.00)A.a 的值是字符 CB.a 的值是浮点型C.不允许字符型和浮点型相加D.a 的值是字符A的 ASCII 值加上 1 解析:解析 本题考核的知识点是不同变量的类型的混合运算。在 C 语言中规定允许不同类型的量进行运算,但在运算时需转换成高级的类型进行运算。在表达式中有字符型和实型参加运算时,统一转换为实型再运算,当运算结果存入变量时再转换为该变量的类型。所以,4 个选项中 D 为所选。14.指出下面不正确的赋值语句(分数:1.00)A.a+;B.a=b; C.a+=b;D.a=1,b=1;解析:解析 本题考核的知识点是赋值语句的正确使用。C
45、语言中赋值语句是由赋值表达式加“;”构成的赋值表达式的形式为:变量:表达式;。选项 A 中 a+相当于 a+1,是赋值语句;选项 C 和选项 D也是赋值语句只有选项 B 不是,因为选项 B 中“=”符号是等于的意思,并不是赋值运算符,所以,4个选项中 B 符合题意。15.设有以下说明语句typedef structint n;char ch8;PER;(分数:1.00)A.PER 是结构体变量名B.PER 是结构体类型名 C.typedef struct 是结构体类型D.struct 是结构本类型名解析:解析 本题考核的知识点是如何使用 typedef 定义新的类型。本题通过 typedef
46、在定义一个结构体类型的同时,把它自定义成类型名 PER,故 PER 是结构体类型名。所以,4 个选项中 B 为所选。16.设有以下定义int a=0; double b=1.25; char c=A;#define d 2则下面语句中错误的是(分数:1.00)A.a+;B.b+;C.c+;D.d+; 解析:解析 本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2 定义了 d 为常数 2,不能在对 d 进行自加运算故选项 D 是个不正确的语句,所以, 4 个选项中选项 D 符合题意。17.设有定义:int n=0
47、,*p=,则以下选项中,正确的赋值语句是(分数:1.00)A.p=1;B.*q=2;C.q=p;D.*p=5; 解析:解析 本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在 C 语言中有两个有关指针的运算符:并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(分数:1.00)A.double myadd(doublea,b); B.double myadd(double,double);C.double myadd(doubleb,doublea);D.double myadd(doublex,double y);解析:解析 本题考核的知识点