1、国家二级(C 语言)机试模拟试卷 145及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中错误的是( )。(分数:2.00)A.算法的时间复杂度与问题规模无关B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关2.设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为( )。(分数:2.00)A.190B.20C.19D.903.下列叙述中正确的是( )。(分数:2.00)A.带链栈的栈底指针是随栈的操作而动态变化的B.若带链队列的队头指针与队尾指针相同
2、,则队列为空C.若带链队列的队头指针与队尾指针相同,则队列中至少有一个元素D.带链栈的栈底指针是固定的4.设棵树的度为 3,共有 27个结点,其中度为 3,2,0 的结点数分别为 4,1,10。该树中度为 1的结点数为( )。(分数:2.00)A.12B.13C.11D.不可能有这样的树5.下面描述中正确的是( )。(分数:2.00)A.好的软件设计应是高内聚低耦合B.内聚性和耦合性无关C.内聚性是指多个模块间相互连接的紧密程度D.耦合性是指一个模块内部各部分彼此结合的紧密程度6.某系统总体结构如下图所示 (分数:2.00)A.5B.7C.4D.87.下面属于应用软件的是( )。(分数:2.0
3、0)A.人事管理系统B.Oracle数据库管理系统C.C+编译系统D.ios操作系统8.下面选项中不是关系数据库基本特征的是( )。(分数:2.00)A.不同的列应有不同的数据类型B.不同的列应有不同的列名C.与行的次序无关D.与列的次序无关9.工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是( )。(分数:2.00)A.多对多B.一对多C.多对一D.一对一10.学生和课程的关系模式定义为 S(S#,Sn,sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C 撑,cn,P 撑)(其属性分别为课程号、课程名、先选课);
4、SC(S#,C#,G)(其属性分别学号、课程号和成绩)。关系中包含对主属性传递依赖的是( )。(分数:2.00)A.S#Sd,SdDcB.S#SdC.S#Sd,(S#,C#)GD.C#P#,(S#,C#)G11.以下叙述中正确的是( )。(分数:2.00)A.计算机能直接运行未经编译的 C语言程序B.循环结构、选择结构、顺序结构是结构化程序的三种基本结构C.复杂算法不能使用 N-S流程图来描述D.计算机能够直接处理不超过 20行源码的简单 C语言程序12.以下说法正确的是( )。(分数:2.00)A.C语言程序运行时可以从键盘上读入用户输入的 C源程序并附加到本程序的尾部一并执行B.C语言程序
5、运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令C.C语言程序运行时可以从键盘上读入用户输入的 c源程序并逐行执行D.C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤13.若有程序段 char c;double d:scanf(“lfc“,&d,&c);如果想把 23 输入给变量 d,字符f输入给变量 c,程序运行时正确的输入是( )。(分数:2.00)A.23fB.23fC.23fD.23f14.设 a、b、c 是已定义的整型变量且已正确赋初值,以下赋值语句中,错误的是( )。(分数:2.00)A.a=(b=3)=1;B.a=(b=0)+c+0;C.
6、a=b=c+0;D.a=0+(b=c=0);15.若有定义:int a=3;double b=01263;char ch=a;,则以下选项中,叙述有错的是( )。(分数:2.00)A.逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果B.运算符只能对整数类型的变量进行运算C.语句 ch=(unsigned int)a+b;是对 a与 b之和进行强制类型转换,结果赋值给变量 chD.复合运算:a*=b+ch 是将变量 b、ch 之和与 a相乘,结果再给 a赋值16.以下可以正确且安全的用作用户标识符的一组选项是( )。(分数:2.00)A._32int,long64B.Switch,uns
7、ignedC.Abc,getchD.3break,enter17.若有定义:char ch;int a;double d;,当输入为 12345 67891036 时,以下选项中能给各个变量正确输入数据的是( )。(分数:2.00)A.scanf(“dclf“,&a,&ch,&d);B.scanf(“5d2c721f“,&a,&ch,&d);C.scanf(“dclf“,a,ch,d);D.scanf(“5d2c721f“,&a,&ch,&d);18.以下选项中,合法的 C语言实数是( )。(分数:2.00)A.31e31B.2e1C.E09D.123E19.以下叙述正确的是( )。(分数:2
8、.00)A.#includestdioh是 C程序的一条语句B.使用符号可以将一条#include 命令写在多行里C.一个#include 行可以包含多个文件,文件名用逗号分开D.一个#include 行可以包含多个文件,且最后一个文件起作用20.与数学式 (x 2 -y 2 )cos(45) 对应的 C语言表达式是( )。(分数:2.00)A.(poW(x,2)-pow(y,2)*cos(31415926*45180)B.(poW(2,x)-pow(2,y)*cos(31415926*45180)C.(x*x-y*y)*cos(45)D.(x 2 -y2 2 )*cos(45)21.以下程序
9、拟实现计算 s=1+2*2+3*3+n*n+,直到 s1000 为止。#includestdiohmain()int s,n;s=1;n=1;don=n+1;s=s+n*n;while(s1000);printf(“s=dn“,s);程序运行后,不能得到正确结果,以下修改方案正确的是( )。(分数:2.00)A.把 n=n+1;改为 n=n*n;B.把 s=1;改为 s=0;C.把 n=1;改为 n=0;D.把 while(s1000);改为 while(s=1000);22.有如下程序#includestdiohmain()char a,b;int i;a=3:b=A;for(i=0;i6;
10、i+)if(i2)putchar(a+i);else putchar(b+i);程序运行后的输出结果是( )。(分数:2.00)A.AB56EFB.A4C6E8C.B4D6F8D.A5C7E923.设有定义:int sum=100,i; 以下选项中,能够实现 sum-=1+2+3+10的程序段是( )。(分数:2.00)A.for(i=0;i=10;) sum=sum-i+;B.i=0; do sum=sum-+1: while(i=10);C.i=0; while(i sum=sum-+i;D.i=1; for(;i10;i+) sum=sum-i+;24.有下列程序#includestdi
11、ohmain()int a=123456,b;while(a)b=a10;a=10;switch(b)default:printf(“d“,b+);case1;case2:printf(“d“,b+);break;case3:printf(“d“,b+);break;case4:printf(“d“,b+);程序执行后的输出结果是( )。(分数:2.00)A.76654321B.112345667C.67564321D.65432125.有以下程序#includestdiohmain()char i,j,n;for(i=1;i=9;i+)if(i3)continue;for(j=0;j=9;j
12、+)if(j2llJ=4)continue;n=(i-0)*10+j-0;printf(“d“,n);if(i=4)break;printf(“n“);程序运行后的输出结果是( )。(分数:2.00)A.32 33 42 43B.30 31 40 41C.34 35 44 45D.35 36 45 4626.以下叙述中正确的是( )。(分数:2.00)A.无论指针变量 P具有何种基类型,表达式 p=p+1都代表指针 p移动一个字节B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值C.指针变量的赋值操作:p=0;是非法的D.通过指针变量存取某个变量值的方式称为“直接存取”方式27.有以
13、下程序#includestdiohvoid swap(int*a,int*b)int t,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“d,d,“,*a,*b);main()int i=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“d,d,d,d“,i,j,*p,*q);程序执行后的输出结果是( )。(分数:2.00)A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,328.对于函数声明 void fun(float array,int*ptr);以下叙述正确的是( )。(分数:
14、2.00)A.函数 fun的参数 array,ptr 都是指针变量B.函数 fun的参数 array是数组名,ptr 是指针变量,它们有本质区别C.调用函数 fun时,实参数组元素个数可以比形参 array数组元素个数多D.调用函数 fun时,传送给形参 array的应是数组的所有元素29.以下叙述中正确的是( )。(分数:2.00)A.x41和101都是转义字符常量B.与都是字符串常量C.是空的字符串,“是空字符 NULLD.n 和n都是回车字符30.以下选项中,能够正确利用随机函数 rand(),产生一个英文字母的表达式是( )。(分数:2.00)A.rand()2=0?rand()A:r
15、and()aB.rand()26+A|rand()26+aC.rand()26+A&rand()26+aD.rand()2=0?rand()26+A:rand()26+a31.若有定义,int a=3,*p=&a,*q=&p;,则以下叙述中错误的是( )。(分数:2.00)A.q是指针变量,*q 就是变量 aB.P是指针变量,p 指向变量 aC.q指向变量 p,所以*q 指向变量 aD.*p与*q 都代表变量 a32.有下列程序#includestdiohvoid f(int x,int n)if(n1)printf(“d“,xn-1);f(x,n-1);printf(“d“,xn-1);el
16、seprintf(“d“,xn-1);main()int a4=1,2,3,4;f(a,4);程序执行后的输出结果是( )。(分数:2.00)A.1234321B.43211234C.4321234D.1234432133.有以下不完整函数 int fun(char*p)ehar*t=p;while(*t+);return(_);该函数的功能是:计算 p所指字符串占用内存单元的个数,作为函数值返回。return 语句下划线处应填入的是( )。(分数:2.00)A.t-pB.*tC.*t-*pD.t34.有下列程序#includestdioh#includestringhmain()char v
17、410=“efg“,“abed“,“mnopq“,“hijkl“,*p4,*t;inti,j;for(i=0;i4;i+)Pi=vi;for(i=0;i3;i+)for(j=i+1;j4;j+)if(strcmp(pi,pi)0)t=pi;pi=Pi;pi=t;for(i=0;i4;i+)printf(“s“,pi);程序执行后的输出结果是( )。(分数:2.00)A.efg abcd hijkl mnopqB.abcd efg hijkl mnopqC.mnopq hijkl efg abedD.efg abed mnopq hijkl35.有以下程序#includestdioh#defin
18、e S1(z)4*z+4*(z)#define S2(x,y)4*(x)*(y)+y*xmain()int a=1,b=2;printf(“d,“,S1(a+b);printf(“d,“,S2(a,b)+S1(3);printf(“d“,S2(3+a,b+3);程序执行后的输出结果是( )。(分数:2.00)A.18,34,100B.24,34,92C.24,34,100D.18,34,9236.如图所示:带有头结点的单向链表 head,其三个数据结点 A、B、c 的连接关系见图。 (分数:2.00)A.*(*p)next-next-dtB.Pp-next-next-dtC.(*(*(*p)n
19、ext)next)dtD.(*(p-next-next)dt37.设有定义#includestdioh#includestdlibhtypedef struetint x,y;T;typedef struetint x,y;*USER;USER fun()USER p;p=(USER)malloc(sizeof(T);p-x=1:p-y=2:return p;函数 fun返回值的类型是( )。(分数:2.00)A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针38.有以下宏定义及调用#define HA2#define HB(a)(HA+1)*ax=HA*(HA
20、+HB(2);则以下判断正确的是( )。(分数:2.00)A.宏定义不允许嵌套B.x的值是 6C.x的值是 16D.宏调用不允许嵌套39.若以“a+”方式打开一个已存在的文件,以下叙述正确的是( )。(分数:2.00)A.文件打开时,原有文件内容不被删除,可以进行添加和读操作B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作C.文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作D.文件打开时,原有文件内容被删除,只可进行写操作40.有下列程序#includestdiohmain()FILE*fp;int i,a6=1,2,3,4,5,6;
21、fp=fopen(“ddat“,“w+b“);for(i=0;i6;i+)fwrite(&ai,sizeof(int),1,fp);rewind(fp);fread(&a3,sizeof(int),3,fp);fclose(fp);for(i=0;i6;i+)printf(“d,“,ai);程序执行后的输出结果是( )。(分数:2.00)A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,1,2,3,二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun的功能是:从形参 ss所指字符串数组中,删除所有串长超过 k的字符串,
22、函数返回剩余字符串的个数。ss 所指字符串数组中共有 N个字符串,且串长小于 M。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#includestdioh#includestringh#deftne N5#defineM 10int fun(char(*ss)M,int k)int i,j=0,len;*found*for(i=O;i【1】;i+)len=strden(ssi);*found*if(1en=【2】)*found*strcpy(ssj+,【3】);return j;main
23、()char xNM=t“Beijing“,“Shanghai“,“Tianjin“,“Nanjing“,“Wuhan“;int i,f;pIintf(“nThe original stringnn“);for(i=0;iN;i+)puts(xi);printf(“n“);f=fun(x,7);printf(“The string witch length is less than or equal to7:n“);for(i=0;if;i+)puts(xi);printf(“n“);(分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中函数 fun的功能是:用冒
24、泡法对 6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不得增行或删行,也不得更改程序的结构!#includestdioh#includestringh#define MAXLINE20fun(char*pstr6)int i,j;char*p;for(i=0;i5;i+)*found*for(j=i+1,j6,j+)if(strcmp(*(pstr+i),*(pstr+j)0)p=*(pstr+i);*found*(pstr+i)=pstr+j;*(pstr+j)=p;main()int i;char*pstr6,str6MAXLI
25、NE;for(i=0;i6;i+)pstri=stri;printf(“nEnter6string(1string at each line):n“);for(i=0;i6;i+)scanf(“s“,pstri);fun(pstr);printf(“The strings after sorting:n“);for(i=0;i6;i+)printf(“sn“,pstri);(分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.规定输入的字符串中只包含字母和*号。请编写函数 fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:“*A*BC*
26、DEF*G*”,删除后,字符串中的内容应当是:“*A*BC*DEF*G”。在编写函数时,不得使用 C语言提供的字符串函数。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。#includestdiohvoid fun(ehar,*a)main()char s81;void NONO();printf(“Enter a string:n“);gets(s);fun(s);printf(“The string after deleted:n“);puts(s);NONO();void NONO()*本函数用于打
27、开文件,输入数据,调用函数,输出数据,关闭文件。*FILE*=in,*out;int i;char s81;in=fopen(“indat“,“r“);out=fopen(“outdat“,“w“);for(i=0;i10;i+)fscanf(in,“s“,s);fun(s);fprintf(out,“sn“,s);felose(in);fclose(out);(分数:2.00)_国家二级(C 语言)机试模拟试卷 145答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中错误的是( )。(分数:2.00)A.算法的时间复杂度与问题规模无关
28、 B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关解析:解析:算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关。算法的空间复杂度指执行这个算法所需要的内存空间。为降低算法的空间复杂度,主要应减少输入数据所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计。算法执行时所需要的计算机资源越多算法复杂度越高,因此算法的复杂度和问题规模成正比
29、。算法设计时要考虑算法的复杂度,问题规模越大越是如此。 算法的时间复杂度与空间复杂度没有必然的联系。算法的空间复杂度与算法运行输出结果的数据量无关。故本题答案为 A选项。2.设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为( )。(分数:2.00)A.190 B.20C.19D.90解析:解析:对长度为 n的线性表排序,在最坏情况下,冒泡排序需要比较的次数为 n(n-1)2。本题中n=20,20(20-1)2=190。故本题答案为 A选项。3.下列叙述中正确的是( )。(分数:2.00)A.带链栈的栈底指针是随栈的操作而动态变化的 B.若带链队列的队头指针与队尾指针相同,则队列为空C.
30、若带链队列的队头指针与队尾指针相同,则队列中至少有一个元素D.带链栈的栈底指针是固定的解析:解析:由于带链栈利用的是计算机存储空间中的所有空闲存储结点,因此随栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则首尾指针相同。故本题答案为 A选项。4.设棵树的度为 3,共有 27个结点,其中度为 3,2,0 的结点数分别为 4,1,10。该树中度为 1的结点数为( )。(分数:2.00)A.12 B.13C.11D.不可能有这样的树解析:解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。根据题意,度为 3的树第 1层 1个根结点,第 2层 3个子结点
31、,每个子结点下各 3个子结点,所以第 3层共 9个子结点,前 3层共 13个结点。第 3层有一个结点度为 2即有 2个子结点,本层其他结点各 1个子结点;即第 4层共 10个结点。前 4层共 23个结点。第 4层中的两个结点下各有一个子结点,即第 5层有 2个结点,此 2个结点下各有一个子结点。 第 3层有 8个度为 1的结点,第 4层有 2个度为 1的结点,第 5层有 2个度为 1的结点,8+2+2=12。故本题答案为 A选项。5.下面描述中正确的是( )。(分数:2.00)A.好的软件设计应是高内聚低耦合 B.内聚性和耦合性无关C.内聚性是指多个模块间相互连接的紧密程度D.耦合性是指一个模
32、块内部各部分彼此结合的紧密程度解析:解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为A选项。6.某系统总体结构如下图所示 (分数:2.00)A.5 B.7C.4D.8解析:解析:模块的扇出是指本模块的直属下层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇入是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为 3,功能 2模块扇出数为 3,功能 3模块
33、扇出数为 2,功能 22 扇出数目为 2,故最大扇出数为 3。功能 222 有 2个上级模块调用,为最大扇入数。3+2=5。故本题答案为 A选项。7.下面属于应用软件的是( )。(分数:2.00)A.人事管理系统 B.Oracle数据库管理系统C.C+编译系统D.ios操作系统解析:解析:系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,包括各种系统开发、维护工具软件。应用软件是为了应用于特定的领域而开发的软件。人事管理系统属于应用软件。Oracle 数据库管理系统、C+编译系统、ios 操作系统是系统软件。故本题答案为 A选项。8.下面选项中不是关系数据库基本特征的
34、是( )。(分数:2.00)A.不同的列应有不同的数据类型 B.不同的列应有不同的列名C.与行的次序无关D.与列的次序无关解析:解析:在关系数据库中,二维表由行数据组成,每行数据包含若干属性值,每个属性都有指定的类型和取值范围。数据行数是有限的,每行数据互不相同(元组唯一性),每行的次序可以任意交换(元组的次序无关性);表中属性名(列各)各不相同即字段名不重复,属性名(列名)次序可任意交换。故本题答案为 A选项。9.工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是( )。(分数:2.00)A.多对多 B.一对多C.多对一D.一对一解析:解析:零件
35、可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为 A选项。10.学生和课程的关系模式定义为 S(S#,Sn,sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C 撑,cn,P 撑)(其属性分别为课程号、课程名、先选课);SC(S#,C#,G)(其属性分别学号、课程号和成绩)。关系中包含对主属性传递依赖的是( )。(分数:2.00)A.S#Sd,SdDc B.S#SdC.S#Sd,(S#,C#)GD.C#P#,(S#,C#)G解析:解析:设 X、Y、Z 是关系 R中互不相同的属性集合,存在 XY(Y!X),YZ,则称
36、z传递函数依赖于 X。在关系 S中 S#Sd,SdDc。则 Dc传递函数依赖于 S#。故本题答案为 A选项。11.以下叙述中正确的是( )。(分数:2.00)A.计算机能直接运行未经编译的 C语言程序B.循环结构、选择结构、顺序结构是结构化程序的三种基本结构 C.复杂算法不能使用 N-S流程图来描述D.计算机能够直接处理不超过 20行源码的简单 C语言程序解析:解析:任何 C语言程序,无论简单或复杂,都必须经过编译、链接生成可执行文件才能由计算机运行,选项 A、D 错误;结构化程序的三种基本结构是顺序结构、选择结构和循环结构,选项 B正确;N-S流程图是描述算法的很好的工具,复杂的算法也是可以
37、描述的,选项错误;本题答案为 B。12.以下说法正确的是( )。(分数:2.00)A.C语言程序运行时可以从键盘上读入用户输入的 C源程序并附加到本程序的尾部一并执行B.C语言程序运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令C.C语言程序运行时可以从键盘上读入用户输入的 c源程序并逐行执行D.C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤 解析:解析:C 语言运行前,需要将 C程序编译、链接,生成可执行程序文件,在运行可执行文件时,只能从键盘读入用户输入的字符或数据,依据程序的逻辑,来改变程序运行的步骤,选项 D正确;不能从键盘读入 C源程序并附
38、加到本程序的尾部一并执行,选项 A错误;也不能直接读入二进制指令并执行,选项B错误;也不能读入 C源程序并逐行运行,选项 C错误,本题答案为 D。13.若有程序段 char c;double d:scanf(“lfc“,&d,&c);如果想把 23 输入给变量 d,字符f输入给变量 c,程序运行时正确的输入是( )。(分数:2.00)A.23fB.23f C.23fD.23f解析:解析:由于变量 c是字符变量,所以选项 A中的空格会赋给变量 c,丢弃 f;选项 C会将单引号“赋给变量 c,丢弃 f;选项 D会将空格赋给变量 c,丢弃单引号“”和 f;本题答案为 B。14.设 a、b、c 是已定
39、义的整型变量且已正确赋初值,以下赋值语句中,错误的是( )。(分数:2.00)A.a=(b=3)=1; B.a=(b=0)+c+0;C.a=b=c+0;D.a=0+(b=c=0);解析:解析:C 语言中赋值运算符具有右结合性,且括号内的表达式优先级最高,所以选项 A中首先运算b=3,将 3赋给 b,表达式的值为 3,然后再将 1赋给 3,这种逻辑是错误的,3 是常量,不能被赋值,本题答案为 A。15.若有定义:int a=3;double b=01263;char ch=a;,则以下选项中,叙述有错的是( )。(分数:2.00)A.逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果B.运
40、算符只能对整数类型的变量进行运算C.语句 ch=(unsigned int)a+b;是对 a与 b之和进行强制类型转换,结果赋值给变量 ch D.复合运算:a*=b+ch 是将变量 b、ch 之和与 a相乘,结果再给 a赋值解析:解析:逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果,选项 A正确;运算符是求模运算符,只能对整数类型的变量进行运算,选项 B正确;复合运算 a:lc=b+ch 中,先计算 b+ch的值,再将 a与 b+ch之和相乘,结果苒赋值给 a,选项 D正确;语句 ch=(unsigned int)a+b中,括号优先级最高,所以首先将 a强制转换成无符号整型,再与 b
41、相加,结果赋值给 ch,选项 C错误;本题答案为 C。16.以下可以正确且安全的用作用户标识符的一组选项是( )。(分数:2.00)A._32int,long64 B.Switch,unsignedC.Abc,getchD.3break,enter解析:解析:C 语言中,合法的标识符是由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 D中的 3break错误;用户标识符不能是 C语言中的关键字或函数,选项 B中的 unsigned是关键字,不是合法的用户标识符;选项 C中的 getch是库函数名,不是合法的用户标识符;C 语言区分字母大小写,选项 B中的 Switch是合法的用
42、户标识符;选项 A中的两个标识符都是合法的用户标识符,所以本题答案为 A。17.若有定义:char ch;int a;double d;,当输入为 12345 67891036 时,以下选项中能给各个变量正确输入数据的是( )。(分数:2.00)A.scanf(“dclf“,&a,&ch,&d); B.scanf(“5d2c721f“,&a,&ch,&d);C.scanf(“dclf“,a,ch,d);D.scanf(“5d2c721f“,&a,&ch,&d);解析:解析:scanf()函数是标准输入函数,其中双引号之间的内容是格式控制串,后面是输入参数列表。其中输入参数列表中各项都必须是变量
43、地址,所以选项 C错误;在 scanf()函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,所以选项 B、D 错误;选项 A是正确的,按照 A的输入格式,12345 赋值给 a,空格赋值给 ch,67891036 赋值给 d;本题答案为 A。18.以下选项中,合法的 C语言实数是( )。(分数:2.00)A.31e31B.2e1 C.E09D.123E解析:解析:C 语言中,实数有两种表示形式:十进制小数形式和指数形式,本题各选项都是以指数形式表示。当实数以指数形式表示:尾数 E(或 e)整型指数。其中尾数是小数形式的实型常量,E 或 e是指数形式的标
44、识,又称为阶码标识;整型指数表示指数的大小。C 语言规定,E 或 e之前的尾数必须要有数字,E或 e之后的整型指数必须是整数,且 E或 e前后以及数字之间不得插入空格 lo综上:本题答案为 B。19.以下叙述正确的是( )。(分数:2.00)A.#includestdioh是 C程序的一条语句B.使用符号可以将一条#include 命令写在多行里 C.一个#include 行可以包含多个文件,文件名用逗号分开D.一个#include 行可以包含多个文件,且最后一个文件起作用解析:解析:C 语言中语句必须是以“;”结尾,#include 是文件包含的宏定义,不属于 C语言的语句,选项 A错误;一
45、个#include 只可以包含一个文件,如果需要包含多个文件,必须使用多个#include 命令行,选项 C、D 错误;#include 命令如果太长,可以使用符号将命令写成多行,选项 B正确,本题答案为 B。20.与数学式 (x 2 -y 2 )cos(45) 对应的 C语言表达式是( )。(分数:2.00)A.(poW(x,2)-pow(y,2)*cos(31415926*45180) B.(poW(2,x)-pow(2,y)*cos(31415926*45180)C.(x*x-y*y)*cos(45)D.(x 2 -y2 2 )*cos(45)解析:解析:x 的平方在 C语言中有 2种表
46、示方法:pow 函数和 x*x,选项 D错误;pow()菌数第一个参数是底数,第二个参数是指数,所以 x的平方是 pow(x,2),选项 B错误;余弦值需要使用 COS函数,数学上,360 度等价于 2,所以 45度转换成整数是 14,选项 C错误;本题答案为 A。21.以下程序拟实现计算 s=1+2*2+3*3+n*n+,直到 s1000 为止。#includestdiohmain()int s,n;s=1;n=1;don=n+1;s=s+n*n;while(s1000);printf(“s=dn“,s);程序运行后,不能得到正确结果,以下修改方案正确的是( )。(分数:2.00)A.把 n=n+1;改为 n=n*n;B.把 s=1;改为 s=0;C.把 n=1;改为 n=0;D.把 while(s1000);改为 while(s=1000); 解析:解析:题意中,需要求得 n平方和并赋给 s,直到 s大于 1000为止。题目的程序中使用dowhile()循环来实现,每次循环都是将 n自增 1后求平方,再累加给 s,while 循环条件是当 s大于1000时,才继续循环,所以本题程序的运行结果是 1+2