1、二级 C 语言笔试-61 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.在 E-R 图中,用来表示实体之间联系的图形是( )。(分数:1.00)A.矩形B.椭圆形C.菱形D.平行四边形2.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。(分数:1.00)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参3.有以下程序:#include stdio.hmain()int x=3,y=2,z=1;printf(“%d/n“,x/y程序运行后的
2、输出结果是( )。(分数:1.00)A.3B.2C.1D.04.已定义 ch 为字符型变量,以下赋值语句中错误的是( )。(分数:1.00)A.ch=/;B.ch=62+3;C.ch=NULL;D.ch=/xaa;5.下面选项中不属于面向对象程序设计特征的是( )。(分数:1.00)A.继承性B.多态性C.类比性D.封装性6.有以下程序:#include stdio.hmain()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);程序运行后的输出结果是( )。(
3、分数: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.57.以下程序中函数 scmp 的功能是返回形参指针 s1 和 s2 所指字符串中较小字符串的首地址。#include stdio.h#include string.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(str
4、0,str1); /*库函数 strcpy 对字符串进行复制*/strcpy(string,scmp(string,str2);printf(“%s/n“,string);若运行时依次输入:abcd、abba 和 abc 三个字符串,则输出结果为( )。(分数:1.00)A.abcdB.abbaC.abcD.baca8.以下程序的功能是计算: (分数:1.00)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n;D.printf(“%6.4f/n“,s);9.以下选项小可作为 C 语言合法整数的是( )。(分数:1.00)A.10110BB.0386C.0XffaD.x2a2
5、10.有定义:int a=1,b=2,c=3,x;则以下选项中各程序段执行后,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 (a1) x=1;D.if (ab) x=b;if (bc) x=c;if (ca) x=a;11.以下不能正确定义二维数组的选项是( )。(分数:1.00)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2,3;D.int
6、a2=1,2,3,4;12.下列叙述中正确的是( )。(分数:1.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构13.有以下程序:#include stdio.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.2014.在下列选项中,不是一个算法一般应该具有的基本特征的是( )。(分数:1.00)A.确定性B.可行性C.无穷性D.拥有足够的情报15.有以下程序段:main()int a=5,*b
7、,*c;c=b=程序在执行了 c=b=语句后,表达式*c 的值是( )。(分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值D.变量 b 的地址16.在结构化方法中,软件功能分解属于软件开发中的( )阶段。(分数:1.00)A.详细设计B.需求分析C.总体设计D.编程调试17.下列选项中正确的语句组是( )。(分数:1.00)A.char s8; s=“Beijing“;B.char *s; s=“Beijing“;C.char s8; s=“Beijing“;D.char *s; s=“Beijing“;18.有以下程序:#include stdio.hmain()
8、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,419.有以下程序:#include stdio.hstruct sint x,y; data2=10,100,20,200;main()struct s *p=data;printf(“%d/n“,+(p-x);程序运行后的输出结果是( )。(分数:1.00)A.10B.11C.20D.2120.有以下程序:#include stdio.h#include strin
9、g.hmain()char str20=“Hello“,“Beijing“,*P=str0;printf(“%d/n“,strlen(p+20);程序运行后的输出结果是( )。(分数:1.00)A.0B.5C.7D.2021.有以下程序:#include stdio.hmain()printf(“%d/n“,NULL)“程序运行后的输出结果是( )。(分数:1.00)A.0B.1C.-1D.NULL 没定义,出错22.下列关于 C 语言数据文件的叙述中正确的是( )。(分数:1.00)A.文件由 ASCII 码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写
10、二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件23.在一棵二叉树上第 5 层的结点数最多是( )。(分数:1.00)A.8B.16C.32D.1524.在关系数据库中,用来表示实体之间联系的是( )。(分数:1.00)A.树结构B.网结构C.线性表D.二维表25.有以下程序:#include stdio.hmain()int a33,*p,i;p=for(i=0;i9;i+) pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是( )。(分数:1.00)A.3B.6C.9D.
11、226.以下选项中非法的表达式是( )。(分数:1.00)A.0=x100B.i=j= =0C.(char)(65+3)D.x+1=x+127.有以下函数定义: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);28.若已定义 c 为字符型变量,则下列语句中正确的是( )。(分数:1.00)A.c=97B.c=“97“;C.c=97;D.c=“a“;29.以下不能定义
12、为用户标识符的是( )。(分数:1.00)A.scanfB.VoidC._3com_D.int30.数据处理的最小单位是( )。(分数:1.00)A.数据B.数据元素C.数据项D.数据结构31.下列函数定义中,会出现编译错误的是( )。(分数:1.00)A.max(int x,int y,int *z)*z=xy?x:y;B.int max(int x,y)int z;z=xy?x:y;return z;C.max(int x,int y)int z;z=xy? x:y; return(z);D.int max(int x,int y)return(xy? x:y);32.程序流程图(PFD)
13、中的箭头代表的是( )。(分数:1.00)A.数据流B.控制流C.调用关系D.组成关系33.有以下程序:#include stdio.hmain()int s=0,a=1,n;scanf(“%d“,do s+=1;a=a-2;while(a!=n);printf(“%d/n“,s);若要使程序的输出值为 2,则应该从键盘给 n 输入的值是( )。(分数:1.00)A.-1B.-3C.-5D.034.以下能正确定义一维数组的选项是( )。(分数:1.00)A.int num;B.#define N 100int numN;C.int num0100;D.int N=100;int numN;35
14、.以下选项中不能正确把 cl 定义成结构体变量的是( )。(分数:1.00)A.typedef structint red;int green;int blue;COLOR;COLOR cl;B.struct color clint red;int green;int blue;C.struct colorint red;int green;int blue;cl;D.structint red;int green;int blue;cl;36.软件调试的日的是( )。(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能37.有以下程序:#include stdio.
15、hfun(int a, int b)if(ab) return((分数:1.00)A.;else return(B.;p2+;此函数的功能是( )。(分数:1.00)A.将 p1 所指字符串复制到 p2 所指内存空间B.将 p1 所指字符串的地址赋给指针 p2C.对 p1 和 p2 两个指针所指字符串进行比较D.检查 p1 和 p2 两个指针所指字符串中是否有/039.若程序中已包含头文件 stdio.h,以下选项能正确运用指针变量的程序段是( )。(分数:1.00)A.int *i=NULL;scanf(“%d“,i);B.float *f=NULL;*f=10.5;C.char t=m,*
16、c;*c=D.long *L;L=/0;40.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为 ( )。(分数:1.00)A.0B.1C.-1D.一个非 0 值41.若有定义:int *p3;则以下叙述中正确的是( )。(分数:2.00)A.定义了一个基类型为 int 的指针变量 p,该变量具有三个指针B.定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针C.定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素D.定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int 类型元素42.已定义以下函数
17、:fun(int *p)return *p;该函数的返回值是( )。(分数:2.00)A.不确定的值B.形参 p 中存放的值C.形参 p 所指存储单元中的值D.形参 p 的地址值43.有以下结构体说明和变量定义,如下图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。(分数:2.00)A.r-next=q;q-next=r-next;p-next=r;B.q-next=r-next;p-next=r;r-next=q;C.p-next=r;q-next=r-next;r-next=p;D.q-next=r-next;r-next=q;p-next=r;44.若有如下程序段,其中 s,a
18、,b,c 均已定义为整型变量,且 a,c 均已赋值(c 大于 0):s=a;for(b=1;b=c;b+) s=s+1;则与上述程序段功能等价的赋值语句是( )。(分数:2.00)A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;45.有定义:int x,y;若要通过 scanf(“%d,%d“,k=(n=b(分数:2.00)A.|(m=aB.;(*(分数:2.00)A.+;printf(“%d/n“,(x,y);则以下叙述中正确的是( )。(分数:2.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 20
19、0350.设变量 x 为 float 型且已赋值,则以下语句中能将 x 中的数值保留到小数点后两位,并将第三位四舍五入的是( )。(分数:2.00)A.x=x*100+0.5/100.0;B.x=(x*100+0.5)/100.0C.x=(int)(x*100+0.5)/100.0;D.x=(x/100+0.5)/100.0;二、填空题(总题数:19,分数:40.00)51.若按功能划分,软件测试的方法通常分为白盒测试方法和 【1】 测试方法。(分数:2.00)填空项 1:_52.关系模型的数据操作即是建立在关系上的数据操作,一般有 【2】 、增加、删除和修改四种操作。(分数:2.00)填空项
20、 1:_53.在最坏情况下,冒泡排序的时间复杂度为 【3】 。(分数:2.00)填空项 1:_54.在面向对象方法中,信息隐蔽是通过对象的 【4】 性来实现的。(分数:2.00)填空项 1:_55.数据库系统的三级模式分别为 【5】 模式、内部级模式与外部级模式。(分数:2.00)填空项 1:_56.以下程序运行后的输出结果是 【6】 。#include stdio.hint 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)填空
21、项 1:_57.以下程序运行后的输出结果是 【7】 。#include stdio.hmain()char m;m=B+32;printf(“%c/n“,m);(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是 【8】 。#include stdio.hmain()int a=1,b=3,c=5;if (c=a+b) printf(“yes/n“);else printf(“no/n“);(分数:2.00)填空项 1:_59.以下程序的功能是将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123
22、456。请填空。#include stdio.h#include ctype.hmain()char s80,d80; int i,j;gets(s);for(i=j=0;si! =/0;i+)if( 【9】 ) dj=si; j+;dj=/0;puts(d);(分数:2.00)填空项 1:_60.已有定义如下:struct nodeint data;struct node *next;*p;以下语句调用 malloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。请填空。p=(struct node *)malloc( 【10】 );(分数:2.00)填空项 1
23、:_61.以下程序运行后,若输入:3,abcde 回车,则输出结果是 【11】 。#include stdio.h#include string.hmove(char *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“,z=strlen(s);for(i=1;i=n;i+) move(s,z);printf(“%s/n“,s);(分数:2.00)填空项 1:_62.以下程序运行后的输出结果是 【12】 。#in
24、clude stdio.hmsin()int i,n=0,0,0,0,0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(“%d“,ni);(分数:2.00)填空项 1:_63.执行以下程序后,输出“#”的个数是 【13】 。#include stdio.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+) putchar(#);(分数:2.00)填空项 1:_64.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。#include stdio.hint fun ( int n)int m=0,f=
25、1,i;for(i=1;i=n;i+)m+=i*f; f= 【14】 ;return m;main()printf(“m=%d/n“, 【15】 );(分数:4.00)填空项 1:_65.请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。#include stdio.h【16】 (double,double);main()double x,y;scanf(“%If%If“,printf(“%If/n“,max(x,y);double max(double a,double b)return(ab ? a:b);(分数:2.00)填空项 1:_66.以下程序运行后的输出结果是 【17】
26、 。#include stdio.hmain()int p=30;printf(“%d/n“,(p/30 ? p/10:p%3);(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是 【18】 。#include stdio.hmain()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;default: k+;n+;printf(“%d%d%d/n“,m,n,k);(分数:2.00)填空项 1:_68.以下程序运行后的输出结果是 【19】 。(注:如果结果中含有回
27、车,可加一空格写在一行,例如:1 1 11 1 11 1 1可以写成:1 1 1 1 1 1 1 1 1。#include stdio.hmala()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)填空项 1:_69.以下程序运行后的输出结果是 【20】 。#include stdio.hfun(int x)if(x/20) fun(x/2);printf(“%d“,x);ma
28、in()fun(6); (分数:2.00)填空项 1:_二级 C 语言笔试-61 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.在 E-R 图中,用来表示实体之间联系的图形是( )。(分数:1.00)A.矩形B.椭圆形C.菱形 D.平行四边形解析:解析 在 E-R 图中,矩形表示实体集,椭圆形表示属性,菱形表示实体之间的联系。2.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。(分数:1.00)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的
29、形参 解析:解析 本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式:函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数 max 是表达式的一部分,将其值乘以 5 后赋给 c。故选项 C)正确。函数调用作为一个函数的实参,例如:m=max(a,max(b,c);其中 max(b,c)是一次函数调用,它的值作为 max 另一次调用的实参
30、。故选项 B)正确。函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项 D)错误。3.有以下程序:#include stdio.hmain()int x=3,y=2,z=1;printf(“%d/n“,x/y程序运行后的输出结果是( )。(分数:1.00)A.3B.2C.1D.0 解析:解析 B.ch=62+3;C.ch=NULL;D.ch=/xaa;解析:解析 字符型变量用来存放字符常量,且只能存放一个字符。赋值反斜杠线“/”,必须用转义字符实现,即 ch=/,所以选项 A)错误;字符型变量可以赋 0255 之间的 ASCII 码
31、值,整型数据和字符型数据有时可以通用,所以选项 B)正确;可以将 NULL 赋给一个字符型变量, NULL 代表一个空字符,相当于 0,选项 C)正确;/xaa表示的是 12 位 16 进制数所代表的字符,所以选项 D)正确。5.下面选项中不属于面向对象程序设计特征的是( )。(分数:1.00)A.继承性B.多态性C.类比性 D.封装性解析:解析 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。面向对象技术的三个重要特性是封装性、继承性和多态性。6.有以下程序:#include stdio.hmain()i
32、nt 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解析:解析 本题考查复合赋值运算符。本题中先计算 c 的值,c=c*(x=6.5)=10*6.5= 65;然后计算 f的值,f=f/c=100.0/65=1.538462;最后计算 a 的值,a=f,a 取 f 的整数部分,即为 1。7.以下程序中函数 scm
33、p 的功能是返回形参指针 s1 和 s2 所指字符串中较小字符串的首地址。#include stdio.h#include string.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,str2);printf(“%s/
34、n“,string);若运行时依次输入:abcd、abba 和 abc 三个字符串,则输出结果为( )。(分数:1.00)A.abcdB.abba C.abcD.baca解析:解析 本题考查返回指针值的函数。一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。函数 strcmp(字符串 1,字符串 2)的作用是比较字符串 1 和字符中 2。如果字符串 1=字符串 2,函数值为 0;如果字符串 1,字符串 2,函数值为一正整数;如果字符串 1字符串2,函数值为一负整数。本题程序中 scmp 函数的作用是比较 s1 和 s2 的大小,对 strcmp 函数的返回值进行判断
35、,如果字符串 1字符串 2,则返回字符串 1 的值,反之返回字符串 2 的值。所以 main 函数中 scmp(str0,str1)的返回值是 abba,通过 strcpy 函数把返回值 abba 复制到 string 中。当执行 scmp(string,str2)时,scrap 函数的返回值为 abba,再次复制到 string 中,最后 string 的值为 abba。8.以下程序的功能是计算: (分数:1.00)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n; D.printf(“%6.4f/n“,s);解析:解析 该程序的运行结果是 1.0000,算法错误。在 s
36、=s+1/n 中,因为 n 为整型,所以循环中 1/n始终为 0。这就是本题算法错误的原因。应把 s=s+1/n 改为 s=s+1.0/n。9.以下选项小可作为 C 语言合法整数的是( )。(分数:1.00)A.10110BB.0386C.0Xffa D.x2a2解析:解析 整数可以用十进制、八进制或十六进制表示,并分为有符号数、无符号数和长整型数,由此可知选项 A)错;选项 B),用 0386 表示八进制错误,因为八进制数字为 07 八个数字,含有 8 是不对的;数字前加“0x”表示十六进制数,所以 D)不对。10.有定义:int a=1,b=2,c=3,x;则以下选项中各程序段执行后,x
37、的值不为 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 (a1) x=1; D.if (ab) x=b;if (bc) x=c;if (ca) x=a;解析:解析 选项 A),因为前面两个条件都不满足,所以执行 x=3。选项 B),a3 成立,执行 x=3。选项 C),a3 成立,执行 x=3;a2 成立,执行 x=2;a1 不成立,不执行 x=1,所以执行此段程序后x=2。选项 D),ab 成立,
38、执行 x=b,此时 x=2;bc 成立,执行 x=c,此时 x=3; ca 不成立,不执行x=a,所以执行此段程序后 x=3。11.以下不能正确定义二维数组的选项是( )。(分数:1.00)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2,3;D.int a2=1,2,3,4; 解析:解析 选项 A)定义的数组按行各数组元素分别是:1,0,2,0;选项 B)定义的数组按行各数组元素分别是:1,2,3,4;选项 C)定义的数组按行各数组元素分别是:1,0,2,3;因为定义数组时,第一维的长度可以不指定,第二维的长度必须指定,所以选项 D)错。12.下列叙述
39、中正确的是( )。(分数:1.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:解析 根据数据结构中各数据元素之间关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。13.有以下程序:#include stdio.h#define F(x,y) (x)*(y)main()int a=3,b=4;printf(“%d/n“,F(a+,b+);程序运行后的输出结果是( )。(分数:1.00)A.12 B.15C.16D.20解析:解析 本题考查带参数的宏定义。对 F(a+
40、,b+)展开后,宏的返回值为 34=12,这里a+,b+都是先使用变量值,再自增。14.在下列选项中,不是一个算法一般应该具有的基本特征的是( )。(分数:1.00)A.确定性B.可行性C.无穷性 D.拥有足够的情报解析:解析 作为一个算法,一般应具有的基本特征有:可行性、确定性、有穷性、拥有足够的情报。15.有以下程序段:main()int a=5,*b,*c;c=b=程序在执行了 c=b=语句后,表达式*c 的值是( )。(分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值 D.变量 b 的地址解析:解析 本题考查指向指针的指针。*c 表示 c 间接指向的对象的地
41、址,而*c 是 c 间接指向的对象的值。在 c* s=“Beijing“;B.char *s; s=“Beijing“;C.char s8; s=“Beijing“;D.char *s; s=“Beijing“; 解析:解析 本题考查字符串的定义和赋初值。选项 A)、C)错误,字符数组的赋值可以逐个字符赋给数组中各元素,也可以定义字符数组时整个字符串赋初值。选项 B)、D)是给字符指针赋值,正确的格式是char *s;s=“Beijing“;选项 B)不对。18.有以下程序:#include stdio.hmain()int k=4,n=0;for( ;nk;)n+;if(n%3! =0) c
42、ontinue;k-;printf(“%d,%d/n“,k,n);程序运行后的输出结果是( )。(分数:1.00)A.1,1B.2,2C.3,3 D.4,4解析:解析 本题考查循环和 continue 语句,continue 语句的功能是结束本次循环。n 从 0 开始循环,判断 n%3! =0 是否成立,如果成立,结束本次循环,继续下一次 for 循环;否则执行 k-,并继续下一次for 循环,直至循环结束。在程序中,当 n 取 1,2 时,不执行 k-,当 n 取 3 时,执行 k-,k 变为 3,循环结束,输出 k,n 的值分别为 3,3。19.有以下程序:#include stdio.h
43、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解析:解析 本题考查对外部存储类型的结构体变量进行初始化。初始化后,data0x 的值为 10,data0y 的值为 100。输出+(p-x)时,+(p-x)就相当于+data0.x,这时 data0.x 先自增,再使用,所以输出 11。20.有以下程序:#include stdio.h#include string.hmain()char str20=
44、“Hello“,“Beijing“,*P=str0;printf(“%d/n“,strlen(p+20);程序运行后的输出结果是( )。(分数:1.00)A.0B.5C.7 D.20解析:解析 本题考查字符数组和指针的运用。strlen 是测试字符串长度的函数,函数的值为字符串的实际长度,不包括/0在内。str20=“Hello“,“Beijing“定义了一个 2 行 20 列的数组,数组的首地址是p=for(i=0;i9;i+) pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是( )。(分数:1.00)A.3B.6 C.9D.2解析:解析 本题考查指向数组元素的指针
45、变量。p=B.k=fun(10,12.5);C.fun(x,n); D.void fun(n,x);解析:解析 本题考查函数调用。函数调用时,实参前不需加类型说明,选项 A)错误;题目中的函数没有返回值,所以选项 B)错误;函数调用前不需要加类型说明,选项 D)错误。28.若已定义 c 为字符型变量,则下列语句中正确的是( )。(分数:1.00)A.c=97B.c=“97“;C.c=97; D.c=“a“;解析:解析 C 语言中,字符型数据和整型数据之间可以通用。一个字符数据既可以字符形式输出,也可以整数形式输出,所以把整型数据赋给字符型变量,直接用 c=97 即可,所以选项 C)正确。由于题
46、目要求选出正确的语句,选项 A)少分号,不能构成语句,因此错误。B)、D)是将一个字符串赋给一个字符变量,所以错误。29.以下不能定义为用户标识符的是( )。(分数:1.00)A.scanfB.VoidC._3com_D.int 解析:解析 标识符是 C 语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由 132 个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与 C 关键字相同,并区分大小写。选项 D)错误,因为 int 是 C 语言中的关键字。30.数据处理的最小单位是(
47、 )。(分数:1.00)A.数据B.数据元素C.数据项 D.数据结构解析:解析 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C)。31.下列函数定义中,会出现编译错误的是( )。(分数:1.00)A.max(int x,int y,int *z)*z=xy?x:y;B.int max(int x,y)int z;z=xy?x:y;return z;C.max(int x,int y)int z;z=xy? x:y; return(z);D.int max(int x,int y)return(xy? x:y);解析:解析 在选项 B)中,定义 max 函数时,形参只定义了 x