1、二级 C语言笔试-35 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面对对象概念描述,不正确的是(分数:1.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性2.在结构化程序设计方法中,下面哪种内聚性最弱?(分数:1.00)A.逻辑内聚B.时间内聚C.偶然内聚D.过程内聚3.以下程序中函数 scmp的功能是返回形参指针 s1和 s2所指字符串中较小字符串的首地址#includestdio.h#includestring.hchar *scmp(char *s1,char *s
2、2)if(strcmp(s1,s2)0)return(s1);else return(s2);main()int i;char string20,str320;for(i=0;i3;i+)gets(stri);strcpy(string,scmp(str0,str1);/*库函数 strcpy对字符串进行复制*/strcpy(string,scmp(string,str2);printf(“%s/n“,string);若运行时依次输入:abcd、abba 和 abc三个字符串,则输出结果为(分数:1.00)A.abcdB.adbaC.abcD.abca4.有以下结构体说明和变量定义,如图所示,
3、指针 p、q、r 分别指向一个链表中的三个连续结点。struct nodeint data;tract node * next;*p,*q,*r;(分数:1.00)A.B.C.D.5.有以下程序fun(int a,int b) if(ab) return((分数:1.00)A.;else return(B.;seanf(“%d“,a=a-2;while(a!=n);printf(“%d/n“,s);若要使程序的输出值为 2,则应该从键盘给 n输入的值是(分数:1.00)A.-1B.-3C.-5D.010.已定义 c为字符型变量,则下列语句中正确的是(分数:1.00)A.C=97;B.C=“97
4、“;C.c=97;D.c=“a“;11.数据库系统可分为三级模式,下列选项中不属于数据库三级模式的是(分数:1.00)A.抽象模式B.外模式C.概念模式D.内模式12.若已定义的函数有返回值,则以下关于该函数调用叙述中错误的是(分数:1.00)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参13.设有下列二叉树:(分数:1.00)A.B.C.D.14.有以下程序main()int a33,*p,i;p=i9;i+)pi=i+1;printf(“%d/n“,“a12);程序运行后的输出结果是(分数:1.00)A.
5、3B.6C.9D.215.有以下程序#includestdio.hmain()printf(“%d/n“,NULL);程序运行后的输出结果是(分数:1.00)A.0B.1C.-1D.NULL没定义,出错16.设变量 x为 float型且已赋值,则以下语句中能将 x中的数值保留到小数点后两位,并将第三位四舍五入的是(分数:1.00)A.x=x*100+0.5/100.0;B.X=(x*100+0.5)/100.0;C.x=(int)(x*100+0.5)/100.0D.X=(x/100+0.5)*100.0;17.有以下程序struct sint x,y;data2=10,100,20,200;
6、main()struct s*p=data;printf(“%d/n“,+(p-x);程序运行后的输出结果是(分数:1.00)A.10B.11C.20D.2118.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x 的值不为 3的是(分数:1.00)A.if(ca) x=1; else if(ba) x=1; 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(a1)x=1;D.if(ab) x=b;if(bc) x=c;if(ca) x=a;19.已定义以下函数fun(i
7、nt *p)return *p;该函数的返回值是(分数:1.00)A.不确定的值B.形参 p中存放的值C.形参 p所指存储单元中的值D.形参 p的地址值20.以下选项中非法的表达式是(分数:1.00)A.0x100B.i=j= =0C.(char)(65+3)D.x+1=x+121.以下选项中可作为 C语言合法整数的是(分数:1.00)A.10110BB.0386C.0XffaD.x2a222.下列关于 C语言数据文件的叙述中正确的是(分数:1.00)A.文件由 ASCII码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可
8、按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件23.若程序中已包含头文件 stdio.h,以下选项中,正确运用指针变量的程序段是(分数:1.00)A.int *i=NULL; scanf(“%d“,i;B.float *f=NULL;*f=10.5;C.char t=m,*c=L=/0;24.以下选项中不能正确把 c1定义成结构体变量的是(分数:1.00)_25.设有如下程序段:int x=2002,y=2003;printf(“%d/n“,(x,y);则以下叙述中正确的是(分数:1.00)A.输出语句中格式说明符的个数少于输出项的
9、个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 200326.有以下程序#includestdio.h#define F(X,Y)(X)*(Y)main()int a=3,b=4;printf(“%d/n“,F(a+,b+);程序运行后的输出结果是(分数:1.00)A.12B.15C.16D.2027.有以下程序main()int k=4,n=0;for(;nk;)n+;if(n%3!=0)continue;K-;printf(“%d,%d/n“,k,n);程序运行后的输出结果是(分数:1.00)A.1,1B.2,2C.3,3D.4,428.已定义 ch为字符型变量
10、,以下赋值语句中错误的是(分数:1.00)A.ch=/;B.ch=62+3;C.ch=NULL;D.ch=/xaa;29.要求以下程序的功能是计算 (分数:1.00)A.B.C.D.30.以下数据结构中,属于线性数据结构的是(分数:1.00)A.集合B.线性表C.二叉树D.图31.以下不能定义为用户标识符的是(分数:1.00)A.scanfB.VoidC._3com_D.int32.下列函数定义中,会出现编译错误的是(分数:1.00)A.max(int x,int y,int*z)*z=xy?xy; B.int max(int x,y)int z;z=xy?xy;return z;C.max(
11、int x,int y)int z; z=xy?xy;return(z);D.int max(int x,int y)return(xy?xy);33.若 fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(分数:1.00)A.0B.1C.-1D.一个非 0值34.有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=b(分数:1.00)A.(m=aB.;pr35.有以下程序main()int a; char c=10;float f=100.0; double x;a=f/=c*(x=6.5);printf(“%d %d %3.1f %3
12、.1f/n“,a,c,f,x);程序运行后的输出结果是(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.536.有以下函数定义:void fun(int n,double x) 若以下选项中的变量都已正确定义并赋值,则对函数 fun的正确调用语句是(分数:1.00)A.fun(int y,double m);B.k=fun(10,12.5);C.fun(x,n);D.void fun(n,x);37.下列选项中正确的语句组是(分数:1.00)_38.以下能正确定义一维数组的选项是(分数:1.00)A.int num;B.
13、#define N 100int numN;C.int num0100;D.int N=100;int numN;39.已定义以下函数fun(char *p2,char *p1)while(*p2=*p1)!=0)P1+;p2+;函数的功能是(分数:1.00)A.将 p1所指字符串复制到 p2所指内存空间B.将 P1所指字符串的地址赋给指针 p2C.对 p1和 p2两个指针所指字符串进行比较D.检查 P1和 p2两个指针所指字符串中是否有/040.有以下程序void fun(char *a,char *b) a=b; ( *(分数:1.00)A.+; 41.对建立良好的程序设计风格,描述正确的
14、是(分数:2.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法即可C.充分考虑程序的执行效率D.程序的注释可有可无42.有以下程序段main()int a=5,*b,*c;c=b=bc;b+)s=s+1;则与上述程序段功能等价的赋值语句是(分数:2.00)A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;50.在数据库管理系统提供的数据语言中,负责数据的完整性、安全性的定义与检查以及并发控制、故障恢复等功能的是(分数:2.00)A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制语言二、填空题(总题数:19,分数:40.00)51.解题方案的准确而完整的描
15、述称为 【1】 。(分数:2.00)填空项 1:_52.在数据结构中,顺序存储结构的数据元素所占的存储空间是 【2】 的。(分数:2.00)填空项 1:_53.软件开发环境是全面支持软件开发全过程的 【3】 的集合。(分数:2.00)填空项 1:_54.数据库理论中,数据的独立性一般可分为物理独立性和 【4】 。(分数:2.00)填空项 1:_55.数据库系统中,实现各种数据管理功能的核心软件称为 【5】 。(分数:2.00)填空项 1:_56.以下程序运行后的输出结果是 【6】 。main()int p=30;printf(“%d/n“,(p/30?p/10:p%3);(分数:2.00)填空
16、项 1:_57.以下程序运行后的输出结果是 【7】 。main()char m;m=B+32; printf(“%c/n“,m);(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是 【8】 。main()int a=1,b=3,c=5;if(c=a+b) printf(“yes/n“);else printf(“no/n“);(分数:2.00)填空项 1:_59.以下程序运行后的输出结果是 【9】 。main()int i,m=0,n=0,k=0;for(i=9;i=11;i+)switch(i/10)case 0:m+;n+;break;case 10:n+;break;def
17、ault:k+;n+;printf(“%d%d%d/n“,m,n,k);(分数:2.00)填空项 1:_60.执行以下程序后,输出#号的个数是 【10】 。#includeatdiohmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);(分数:2.00)填空项 1:_61.以下程序的功能是调用函数 fun计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun(int n)int m=0,f=1,i;for(i=1;i=n;i+)m+=i*f;f= 【11】 ; return m;main()printf(“m=%d/n“,
18、 【12】 );(分数:4.00)填空项 1:_62.以下程序运行后的输出结果是 【13】 。main()int i,n=10,0,0,0,0;for(i=1;i4;i+)ni=ni-1*2+1;printf(“%d“,ni);(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 【14】 。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“);(分数:2.00)_64.以下程序运
19、行后的输出结果是 【15】 。int a=5;fun(int b) static int a=10;a+=b+;printf(“%d“,a) ;main()int c=20; fun(c) ;a+=c+;printf(“%d/n“,a) ;(分数:2.00)填空项 1:_65.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。【16】 (double,double);main()double x,y;seanf(“%1f%1f“,(分数:2.00)填空项 1:_66.以下程序运行后输入:3,abcde回车,则输出结果是 【17】 。#includestringhmove(char *
20、str,int n)char temp;int i;temp=strn-1;for(i=n-1;i0;i-)stri=stri-1;str0=temp;main()char s50;int n,i,z;scanf(“%d,%s“,in;i+)move(s,z);printf(“%s/n“,s);(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是 【18】 。fun(int x)if(x/20)fun(x/2);printf(“%d“,x);main()fun(6);(分数:2.00)填空项 1:_68.已有定义如下:struct nodeint data;struct node
21、*next;*P;以下语句调用 malloc函数,使指针 p指向一个具有 struct node类型的动态存储空间。请填空。p=(struct node *)malloc 【19】 ;(分数:2.00)填空项 1:_69.以下程序的功能是将字符串 s中的数字字符放入 d数组中,最后输出 d中的字符串。例如,输入字符串:abcl23edf456gh,执行程序后输出:123456。请填空。#includestdioh#includectype,hmain()char s80,d80;int i,j;gets(s);for(i=j=0;si!=/0;i+)if( 【20】 )dj=si;j+;dj=
22、/0;puts(d) ;(分数:2.00)填空项 1:_二级 C语言笔试-35 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面对对象概念描述,不正确的是(分数:1.00)A.任何对象都必须有继承性 B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性解析:解析有时为了保护某些特有的对象,可以通过定义其为私有属性达到不被继承的目的。2.在结构化程序设计方法中,下面哪种内聚性最弱?(分数:1.00)A.逻辑内聚B.时间内聚C.偶然内聚 D.过程内聚解析:解析内聚有很多种类,其中内聚性由弱到强的顺序为:偶然内聚、逻辑
23、内聚、时间内聚、过程内聚。3.以下程序中函数 scmp的功能是返回形参指针 s1和 s2所指字符串中较小字符串的首地址#includestdio.h#includestring.hchar *scmp(char *s1,char *s2)if(strcmp(s1,s2)0)return(s1);else return(s2);main()int i;char string20,str320;for(i=0;i3;i+)gets(stri);strcpy(string,scmp(str0,str1);/*库函数 strcpy对字符串进行复制*/strcpy(string,scmp(string,
24、str2);printf(“%s/n“,string);若运行时依次输入:abcd、abba 和 abc三个字符串,则输出结果为(分数:1.00)A.abcd B.adbaC.abcD.abca解析:解析字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符 ASCII码值较大时,该字符所在的字符串就是较大的字符串。主函数中调用了函数 scmp(),分析不难知道该函数的作用是返回参加比较的两个字符串中的较小的字符串,它的主函数中定义了一个二维字符数组来存放三个字符串。接着通过 for循环给每个字符串赋值,赋值后三个字符串分别为“abcd”、“abba”、“abc”,接着比较 str
25、0和 str1的大小,根据字符串大小比较标准可知 str0较小,然后通过函数 strcpy()把str0中的字符串,拷贝到 string中,然后比较 string和 str2)的大小,比较结果是 string较小,最后输出 string的值为“abcd”。4.有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。struct nodeint data;tract node * next;*p,*q,*r;(分数:1.00)A. B.C.D.解析:解析题目中要求将 q和 r所指结点的先后位置交换,即要求 p所指结点的指针域指向 r所指向的结点,r 所指向的结点
26、的指针域指向 q所指向的结点,q 所指向的结点的指针域指向 r所指向的结点。选项 A首先让 r所指向的指针的指针域指向 q所指向的结点,这样就将 r所指向的结点的指针域指向的结点丢失了。选项 B首先 q所指向的结点的指针域指向 r所指向的结点的指针域所指向的结点,然后,让 p所指向结点的指针域指向 r所指向的结点,最后让 r所指向的结点的指针域指向 q所指向的结点,满足要求。选项 C首先让 p所指向结点的指针域指向 r所指向的结点,然后让 q所指向的结点的指针域指向 r所指向的结点的指针域所指向的结点,最后让 r所指向的结点的指针域指向 q所指向的结点,满足要求。选项 D首先让 q所指向的结点
27、的指针域指向 r所指向的结点的指针域所指向的结点,然后,让 r所指向的结点的指针域指向 q所指向的结点,最后让 P所指向结点的指针域指向 r所指向的结点,满足要求。5.有以下程序fun(int a,int b) if(ab) return((分数:1.00)A.;else return(B.;seanf(“%d“,a=a-2;while(a!=n);printf(“%d/n“,s);若要使程序的输出值为 2,则应该从键盘给 n输入的值是(分数:1.00)A.-1B.-3 C.-5D.0解析:解析根据题目要求,最后要使输出的 s值为 2,在程序中改变。的值语句只有循环体中的 s+=1;语句,而初
28、始 9的值为 o,显然要使 s的值变为 2,该语句必须执行,两次,即 do-while循环中的循环体要执行两次,而在 do-while中,首先不进行条件而执行 do后面的循环体语句,然后再判断 while循环条件。所以说不管循环判断条件是否为真 s+=1;语句至少执行一次,根据分析,只需要 while后面括号的循环判断表达式的值为真一次且只能为真一次,将四个选项中的内容依次代入该程序中不难得到只有 n=-3刚好使循环判断条件 a!=n为真一次。10.已定义 c为字符型变量,则下列语句中正确的是(分数:1.00)A.C=97;B.C=“97“;C.c=97; D.c=“a“;解析:解析用单引号括
29、起来的一个字符称为字符常量,而选项 B和选项 D中用的是双引号,而用双引号括起来的字符为字符串常量。因为在 c语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的 ASCII代码放到存储单元中,所以 C语言使字符型数据和整型数据之间可以通用。而选项 A中,给字符型变量赋值时只能赋一个字符,而 9,7 作为字符时为两个字符且必须分别用单引号括起来。11.数据库系统可分为三级模式,下列选项中不属于数据库三级模式的是(分数:1.00)A.抽象模式 B.外模式C.概念模式D.内模式解析:解析数据库的三级模式是指概念模式、内模式和外模式。其中外模式又叫子模式,内模式又叫物理
30、模式。12.若已定义的函数有返回值,则以下关于该函数调用叙述中错误的是(分数:1.00)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参 解析:解析在 c语言中规定,无返回值的函数调用,可以作为表达式或表达式的一部分,也可以作为一条语句;而有返回值的函数调用只能作为一个函数的实参(即将其返回值传给相应的形参),而不能作为形参(因为形参是在函数定义时说明的)。13.设有下列二叉树:(分数:1.00)A.B.C. D.解析:解析二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历,遍历顺序应该为:访问根结
31、点-先序遍历左子树-先序遍历右子树。按照定义,先序遍历序列是 ABDCEF。14.有以下程序main()int a33,*p,i;p=i9;i+)pi=i+1;printf(“%d/n“,“a12);程序运行后的输出结果是(分数:1.00)A.3B.6 C.9D.2解析:解析主函数中首先定义了一个 3行 3列的二维数组,定义了一个整型变量指向它,直接通过 for循环给数组的每一个元素赋值,使得 a00=1、a01=2、a02=3、a10=4、a11=5、a12=6、a20=7、a21=8、a2 2=9。15.有以下程序#includestdio.hmain()printf(“%d/n“,NUL
32、L);程序运行后的输出结果是(分数:1.00)A.0 B.1C.-1D.NULL没定义,出错解析:解析在 C语言中 NULL的 ASCII码值为 0,而输出函数要求以整型格式输出,故最后的输出数为0。16.设变量 x为 float型且已赋值,则以下语句中能将 x中的数值保留到小数点后两位,并将第三位四舍五入的是(分数:1.00)A.x=x*100+0.5/100.0;B.X=(x*100+0.5)/100.0;C.x=(int)(x*100+0.5)/100.0 D.X=(x/100+0.5)*100.0;解析:解析实型变量中小数点的位数,选项 A中 0.5/100.0将保留小数点后六位,不满
33、足题目要求;选项 B和选项 D也将保留小数点后六位,不满足题目要求。17.有以下程序struct sint x,y;data2=10,100,20,200;main()struct s*p=data;printf(“%d/n“,+(p-x);程序运行后的输出结果是(分数:1.00)A.10B.11 C.20D.21解析:解析本题中定义了一个结构体数组 data2并初始化,主函数中定义了一个结构体类型指针变量并让它指向 data的首地址,由于 p指向第一个元素的地址,所以 p -x 相当于 data0x 即为 10,所以+(p-x)后的值为 11。18.有定义语句:int a=1,b=2,c=3
34、,x;,则以下选项中各程序段执行后,x 的值不为 3的是(分数:1.00)A.if(ca) x=1; else if(ba) x=1; 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(a1)x=1; D.if(ab) x=b;if(bc) x=c;if(ca) x=a;解析:解析选项 A首先判断 if语句条件中表达式的值“31”为假,然后执行最近的 else后面的语句,该 else后面又为 if-else语句,在这个 if-else语句中首先判断该 if语句条件中表达式的值“21”为假,程序执行其最
35、近的 else后面的语句,将 3赋值给 x。选项 B中首先判断 if语句条件中表达式的值“13”为真,然后执行最近的 else后面的语句“x=3”,后面的 else不再执行,最后 x的值为 3。选项 C中,首先执行第一条 if语句,由于“13”为真,执行此 if后面的语句“x=3”,接着执行第二条 if语句,由于“12”为真,执行此 if后面的语句“x=2”,接着执行第三条 if 语句,由于“11为假,后面的语句不执行,所以最后的 x值为 2不为 3。选项 D中;首先执行第一条 if语句,由于“ab”为真,执行此 if后面的语句“x=b”;接着执行第二条 if语句,由于“bc”,为真,执行此
36、if后面的语句“x=c”,接着执行第三条 if语句,由于“ca”为假,后面的语句不执行,所以最后的 x值为 c即为 3。19.已定义以下函数fun(int *p)return *p;该函数的返回值是(分数:1.00)A.不确定的值B.形参 p中存放的值C.形参 p所指存储单元中的值 D.形参 p的地址值解析:解析函数的返回值应该为 return后面的表达式的值,在本题中的表达式为 *p,*p 指的是形参p所指存储单元中的值。20.以下选项中非法的表达式是(分数:1.00)A.0x100B.i=j= =0C.(char)(65+3)D.x+1=x+1 解析:解析选项 D中将表达式的值赋给表达式,
37、在 c语言中是不允许给表达式赋值的。21.以下选项中可作为 C语言合法整数的是(分数:1.00)A.10110BB.0386C.0Xffa D.x2a2解析:解析在 C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项 A为二进制表示;选项 B是八进制表示法,但在八进制数中,各个位数只能为数字 0到 7 中的一个,而在选项 B中,有一个数字 8;选项 C为十六进制表示法正确;选项 D中也为十六进制表示法,但十六进制数以 0x开头。22.下列关于 C语言数据文件的叙述中正确的是(分数:1.00)A.文件由 ASCII码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C
38、 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 解析:解析C 语言可以读写二进制文件和文本文件两种:文件按数据的存放格式可分为二进制文件和文本文件两种,其中二进制文件中数据都是以二进制的形式存放。23.若程序中已包含头文件 stdio.h,以下选项中,正确运用指针变量的程序段是(分数:1.00)A.int *i=NULL; scanf(“%d“,i;B.float *f=NULL;*f=10.5;C.char t=m,*c=L=/0; 解析:解析选项 A定义了一个整型变量 i,并且初
39、始化让它指向 NULL,接着通过 scanf()函数,改变 i指向的存储空间的值,选项 A中首先定义了整型指针变量 i并初始化为 NULL,即表示指针 i不指向任何内存,即此时程序还没有为 i在内存中开辟存储单元,而在 scanf()函数中第二个参数是地址参数,显然在这里 i不是表示地址,所以下面的 scanf(“%d”,i)语句是不正确的;选项 B定义了一个浮点型变量f并初始化让它指向 NULL,而当一个指针变量指向 NULL以后不能再给它赋值,而接下来的程序中为其赋了一值;选项 C中首先定义了一个字符变量 t并给它赋初值m,然后定义一个字符型指针 c并让它指向了变量 t,这一部分正确,然后
40、接着用了一个语句“*c=nk;)n+;if(n%3!=0)continue;K-;printf(“%d,%d/n“,k,n);程序运行后的输出结果是(分数:1.00)A.1,1B.2,2C.3,3 D.4,4解析:解析在本程序的 for循环中,用到了一个 continue语句,continue 语句的作用是停止本次循环,即不执行循环体内 continue语句后面的其他语句,继续下次循环的条件判断。首先在 for循环中 n自加1(值变为 1),然后执行后面的 if语句,由于 if语句后面括号的表达式(1%3!=0)的值为真,程序执行continue语句,回到 for循环的开始部分,并且判断 fo
41、r循环中的条件表达式(nk)为真,重复执行“n+;”语句,如此循环直到 n=3时,if 语句判定条件中表达式(3%3!=0)的值为假,程序执行 if语句后面的“k-;”语句,此时 k的值为 3,不满足“nk”,退出 for循环。故最后的 k和 n的值为 3和3。28.已定义 ch为字符型变量,以下赋值语句中错误的是(分数:1.00)A.ch=/; B.ch=62+3;C.ch=NULL;D.ch=/xaa;解析:解析给字符型变量赋值只能赋一个字符,包括转义字符。选项 A中“/”为转义字符应该用“|”来表示;选项 B中将一个整数赋值给字符变量;选项 C将一个空值赋值给字符变量;选项 D将一个用十
42、六进制数表示的转义字符赋值给字符变量。29.要求以下程序的功能是计算 (分数:1.00)A.B.C. D.解析:解析程序中由于 n为整型,所以 1/n的结果始终为 0,故程序最后输出的结果为 0,其结果错误,原因为在表达式 1/n中 1和 n均为整型,所以应该将 1改为 1.0,这样表达式 1.0/n的值不为 0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为 s=s+1/n。30.以下数据结构中,属于线性数据结构的是(分数:1.00)A.集合B.线性表 C.二叉树D.图解析:解析所谓的线性结构:如果一个非空的数据结构满足下列两个条件,即1)有且只有一个根结点;2)每一个
43、结点最多有一个前件,也最多有一个后件。同时满足两个条件的只有线性表,而其他三种数据结构的结点可能存在多个前件或后件,所以不是线性结构。31.以下不能定义为用户标识符的是(分数:1.00)A.scanfB.VoidC._3com_D.int 解析:解析在 C语言中,合法的标识符由字母、数字和下划线组成,并且第 1个字符必须为字母或下划线。选项 D中 int为 C语言中的保留字,不能作为用户的标识符。32.下列函数定义中,会出现编译错误的是(分数:1.00)A.max(int x,int y,int*z)*z=xy?xy; B.int max(int x,y)int z;z=xy?xy;retur
44、n z;C.max(int x,int y)int z; z=xy?xy;return(z);D.int max(int x,int y)return(xy?xy);解析:解析本题考核的知识点是函数的定义方法。选项 B中在说明形参时,省略了第二个参数的类型,故选项 B编译不能通过。33.若 fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(分数:1.00)A.0 B.1C.-1D.一个非 0值解析:解析文件尾测试函数 feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,
45、需要进行文件尾测试,文件尾测试使用函数 feof(),它的功能是测试 fp指向的文件是否到达文件尾。若到达文件尾,返回值为非 0,否则返回值为 0。在本题中 fP指向的某文件还没有到了文件尾,因此返回 0。34.有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=b(分数:1.00)A.(m=aB.;pr解析:解析在“|”运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中,“|”左边的表达式 k=(n=bA) ,“21”为真,所以 n被赋值为 1,接着 k被赋值 1,即“|”运算符左边表达式为真,此时不再计算“|”右边的表达式,因此 m的值没有被改变仍为 0,
46、最后的输出结果 1,0。35.有以下程序main()int a; char c=10;float f=100.0; double x;a=f/=c*(x=6.5);printf(“%d %d %3.1f %3.1f/n“,a,c,f,x);程序运行后的输出结果是(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5 C.1 65 1.0 6.5D.2 65 1.5 6.5解析:解析主函数中先定义了一个整型变量 a,一个字符变量 c并赋初值 10,一个浮点型变量 f并赋初值 100.00和一个 double型 x,接着执行“a=f/=c*=(x=6.5)”,该语句从右向左计算,先把 6.5赋值给x(该括号表达式的值也为 6.5),此时 x的值的变为 6.5,然后执行“c*=(x=6.5)”相当于执行“c=c*(x=6.5)”,此时 c的值为 65,接着向左执行“f/=c*=(x=6.5)”,语句相当于执行“f=f/c”接着向最右边执行“a=f,由于 a是整型变量,所以 a最后取 f的整数部分为 1。程序最后输出的 a、c、f 和x的值分别