1、二级 C语言分类模拟题 556及答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.函数调用 strcat(strcpy(str1, str2), str3)的功能是_。(分数:2.50)A.将字符串 str1复制到字符串 str2中后再连接到字符串 str3之后B.将字符串 str1连接到字符串 str2之后再复制到字符串 str3之后C.将字符串 str2复制到字符串 str1之后再将字符串 str3连接到字符串 str1之后D.将字符串 str2连接到字符串 str1之后再将字符串 str1复制到字符串 str3中2.有以下程序 #inclu
2、destdio.h void f(int*q) int i=0; for(;i5;i+)(*q)+; main() int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.6,2,3,4,5,B.2,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,3.有下列程序段: typedef struct NODE int num;structNODE*next; OLD; 下列叙述中正确的是_。(分数:3.00)A.以上的说明形式非法B.NODE是一个结构体类型C.OLD是一个结
3、构体类型D.OLD是一个结构体变量4.下列语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“;B.char ss20=“right?“;C.char*ss6;ss1=“right?“;D.char*ss=“right?“;5.以下选项中叙述错误的是_。(分数:1.00)A.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值B.在同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程序函数的性能不可以说明为 static型变量6.有以下程序: #includestdio
4、.h #includestdlib.h int fun(int n) int *p; p=(int*)malloc(sizeof(int); *p=n; return *p; main() int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序运行后的输出结果是_。(分数:1.00)A.0B.10C.20D.出错7.有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数): #includestdio.h #includestring.h main() char a10=“abc“, b10=“012“, c10=“xyz“; strcp
5、y(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是_。(分数:1.00)A.a12xyzB.12yzC.a2yzD.bc2yz8.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合9.以下程序运行后的输出结果是 #includestdio.h void f(int *P); main() int a5=1, 2, 3, 4, 5, *r=a; f(r); printf(“%d/n“, *r); void f(int *P) P=p+3; printf(“%d, “, *P); (分数:2
6、.00)A.1,4B.4,4C.3,1D.4,110.下列描述中正确的是(分数:1.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合11.以下程序的输出结果是_。 #includestdio.h struct st intx;int *y; *p; int dt4=1,2,3,4); struct st aa4=2, main() p=aa; printf(“%d/n“,+(p-x); (分数:2.00)A.1B.2C.3D.412.下述程序的输出结果是_。 # includestdio.h main() int i;
7、 for(i=1;i=10;i+) if(i*i=20)(i*1=100) break; printf(“%d/n“,i*i); (分数:1.00)A.49B.36C.25D.6413.有下列二叉树,对此二叉树前序遍历的结果为 _ 。 (分数:2.00)A.XZCYABB.XYZABCC.XYABCZD.XYAZBC14.以下不能输出字符 A的语句是(注:字符 A的 ASCII码值为 65,字符 a的 ASCII码值为 97)_。(分数:2.00)A.printf(“%c/n“,“a“-32);B.printf(“%d/n“,“A“);C.printf(“%c/n“,65);D.printf(
8、“%c/n“,“B“-1);15.有以下程序 #includestdio.h main() unsigned char a=8, c; c=a3; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:2.00)A.32B.16C.1D.016.有以下程序: #includestdio.h int fun(char s) int n=0; while(*s=“9“ s+; return(n); main() char s10=“6“, “1“, “*“, “4“, “*“, “9“, “*“, “0“, “*“; printf(“%d“, fun(s); 程序运行的结果是_。
9、(分数:2.50)A.9B.61490C.61D.517.下列定义变量的语句中错误的是_。(分数:2.00)A.int_int;B.double int_;C.char For;D.float US $;18.下列程序的运行结果为_。 #includestdio.h void abc(char*str) int a,b,i,j; for(i=j=0;stri!=“/0“;i+) if(stri!=“a“) strj+=stri; strj=“/0“; void main() char str=,abcdef“; abc(str); printf(“str=%s“,str); (分数:2.50)
10、A.str=bcdefB.str=abcdefC.str=aD.str=ab19.以下选项中非法的字符常量是_。(分数:1.00)A.“/101“B.“/65“C.1/xff“D.“/019“20.以下数组定义中错误的是_。(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=0;C.int x23=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;21.下面说明不正确的是 _ 。(分数:1.00)A.chara10=“china“;B.chara10,*p=a;p=“chiua“;C.char*a;a=“china“;D.chara10,*p;p=a
11、=“china“;22.有以下程序: #include stdio.h void fun(int a, int b) int t; t=a; a=b; b=t; main() int c10=1,2,3,4,5,6,7,8,9,0, i; for(i=0; i10; i+=2) fun(ci, ci+1); for(i=0; i10; i+) printf(“%d,“, ci); printf(“/n“); 程序的运行结果是_。(分数:2.00)A.1,2,3,4,5,6,7,8,9,0,B.2,1,4,3,6,5,8,7,0,9,C.0,9,8,7,6,5,4,3,2,1,D.0,1,2,3
12、,4,5,6,7,8,9,23.有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母: #include stdio.h #include void fun(char *p)int i=0;while(pi)if(pi=“i+ +;main( )char s1100=“ab cd EFG!“;fun(s1);printf(“%s/n“,s1);程序运行后的输出结果是_。 A.ab cd EFg! B.Ab Cd EFg! C.ab cd EFG! D.aB cD EFG!A B C D D解析 调用 fun函数后,实参数组名 s1传给形参指针 p,p 也指向数组
13、 sl。fun 函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-“a“+“A“;即 pi-1=pi-1=32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。(分数:2.00)A.ab cd EFg!B.Ab Cd EFg!C.ab cd EFG!D.aB cD EFG!24.下列叙述中错误的是_。(分数:1.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统
14、的支持25.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图B.数据字典(DD)C.数据流程图(DFD 图)D.判定表26.以下关于逻辑运算符两侧运算对象的叙述中正确的是_。(分数:1.00)A.可以是任意合法的表达式B.只能是整数 0或非 0整数C.可以是结构体类型的数据D.只能是整数 0或 127.若有定义:double a=22;int i=0, k=18;,则以下不符合 C语言规定的赋值语句是_。(分数:1.00)A.i=(a+k)=(i+k);B.i=a%11;C.a=a+, i+;D.i=!a;28.有以下函数 int fun(char*s) char
15、*t=s; while(*t+); return(t-s); 该函数的功能是_。(分数:1.00)A.计算 s所指字符串占用内存字节的个数B.比较两个字符串的大小C.计算 s所指字符串的长度D.将 s所指字符串复制到字符串 t中29.在面向对象方法中,不属于“对象”基本特点的是_。(分数:2.00)A.一致性B.分类性C.多态性D.标识唯一性30.有以下程序: #includestdio.h main() int x=0x13; printf(“INT:%d/n“,x+1); 程序运行后的输出结果是_。(分数:1.00)A.INT:14B.INT:13C.INT:12D.INT:2031.执行
16、下列程序中的输出语句后,a 的值是 _ 。 main() int a; printf(“%d/n“,(a=2*3,a*5,a+7); (分数:2.00)A.17B.37C.6D.1332.以下关于字符串处理的叙述正确的是_。(分数:1.00)A.进行字符串复制时,目的串的存储空间必须足够大B.两个字符串进行比较时,短的一个必定比长的一个小C.计算一个字符串的长度时,应包含串尾的结束标志D.两个字符串连接时,对存储空间的大小没有要求33.有以下程序: #include stdio.h int a=1,b=2; void fun1(int a,int b) printf(“%d%d“,a,b);
17、void fun2() a=3;b=4; main( ) fun1(5,6);fun2(); printf(“%d%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.5 6 1 2B.3 4 5 6C.1 2 5 6D.5 6 3 434.交换两个变量的值,不允许用临时变量,应该使用下列_位运算符。(分数:2.50)A. for(i=0;in;i+)sum+=xi; return sum; main() int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4); printf(“%d/n“,s); 程序执行后的输出结果是_。(分数
18、:1.00)A.55B.50C.45D.6036.以下叙述中正确的是_。(分数:2.00)A.语句 int a3=1,2,4,5;是错误的初始化形式B.语句 int a43=1,2,4,5;是错误的初始化形式C.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵D.语句 int a43=1,2,4,5;是错误的初始化形式37.以下关于 fclose(fp)函数的叙述正确的是_。(分数:1.00)A.当程序中对文件的所有写操作完成之后,必须调用 fclose(fp)函数关闭文件B.当程序中对文件的所有写操作完成之后,不一定要调用 fclose(fp)函数关闭文件C.只有对文件进行输入操作之
19、后,才需要调用 fclose(fp)函数关闭文件D.只有对文件进行输出操作之后,才能调用 fclose(fp)函数关闭文件38.下列关于栈的叙述正确的是_。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据39.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto和 staticB.extern和 registerC.auto和 registerD.static和 register40.以下定义语句中正确的是_。(分数:2.50)A.float a=1,*b=B.int a=b=0;C.ch
20、ar A=65+1,b=“b“;D.double a=0.0;b=1.1;二级 C语言分类模拟题 556答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.函数调用 strcat(strcpy(str1, str2), str3)的功能是_。(分数:2.50)A.将字符串 str1复制到字符串 str2中后再连接到字符串 str3之后B.将字符串 str1连接到字符串 str2之后再复制到字符串 str3之后C.将字符串 str2复制到字符串 str1之后再将字符串 str3连接到字符串 str1之后 D.将字符串 str2连接到字符串 str1之
21、后再将字符串 str1复制到字符串 str3中解析:解析 strcat(s1,s2)函数的功能是把 s2字符串连接到 s1字符串末尾,strcpy(s1,s2)是把 s2字符串复制到 s1字符串,要保证 s1的容量。2.有以下程序 #includestdio.h void f(int*q) int i=0; for(;i5;i+)(*q)+; main() int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.6,2,3,4,5, B.2,2,3,4,5,C.1,2,3,4,5,D.2
22、,3,4,5,6,解析:解析 f 函数将 a0自增 5次,所以答案选择 A。3.有下列程序段: typedef struct NODE int num;structNODE*next; OLD; 下列叙述中正确的是_。(分数:3.00)A.以上的说明形式非法B.NODE是一个结构体类型C.OLD是一个结构体类型 D.OLD是一个结构体变量解析:4.下列语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“; B.char ss20=“right?“;C.char*ss6;ss1=“right?“;D.char*ss=“right?“;解析:解析 数组定义
23、后,不可以对数组整体赋值,s 是二维数组,因 ss1是一维字符数组,即字符串,字符串赋值可以使用“strcpy(ss1,“right“);”这样的形式,而 A选项中对二维数组中的第“1”维(相当于一个一维数组)赋值是不可以的。B 选项和 D选项是定义时对数组初始化,这是可以的。在 C选项中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。5.以下选项中叙述错误的是_。(分数:1.00)A.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 B.在同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程
24、序函数的性能不可以说明为 static型变量解析:解析 静态变量不是每调用一次就赋一次初值,而是将需要定义许多相同的具有相同属性的值时,使用静态变量来节省空间,所以 A选项错误。6.有以下程序: #includestdio.h #includestdlib.h int fun(int n) int *p; p=(int*)malloc(sizeof(int); *p=n; return *p; main() int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序运行后的输出结果是_。(分数:1.00)A.0B.10C.20 D.出错解析:解析 malloc(
25、sizeof(int)的作用是开辟一个长度为 sizeof(int)的存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了一个整型的指针变量 p。然后执行语句*p=n;使得*p 的值为 10,并通过 return返回此值,即 a的值为 10。然后在主函数中输出 a+fun(10)=10+10=20。所以选择 C选项。7.有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数): #includestdio.h #includestring.h main() char a10=“abc“, b10=“012“, c10=“xyz“; strcpy(a+1, b+2
26、); puts(strcat(a, c+1); 程序运行后的输出结果是_。(分数:1.00)A.a12xyzB.12yzC.a2yz D.bc2yz解析:解析 第一次执行字符串的复制函数 a的值是 a2,第二次执行的是字符串的连接函数,所以运行结果为 a2yz。8.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析 软件设计中,模块划分应遵循的准则是高内聚低耦合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的准则,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性高,易于理解和维护。模
27、块之间的耦合应尽可能地低,模块的内聚应尽可能地高,因此本题答案为 B。9.以下程序运行后的输出结果是 #includestdio.h void f(int *P); main() int a5=1, 2, 3, 4, 5, *r=a; f(r); printf(“%d/n“, *r); void f(int *P) P=p+3; printf(“%d, “, *P); (分数:2.00)A.1,4B.4,4C.3,1D.4,1 解析:解析 本题解题的关键是:实参和形参之间发生的是单向值传递,形参指针 p的指向发生了改变,但并不影响实参指针 r的指向。指针 r指向数组的第一个元素 a0,并把 a
28、0的地址传递给形参 p,执行“p=p+3;“后,指针 p指向元素 a3,输出*p 的值即输出元素 a3的值 4。由于形参 p的指向发生改变并不影响实参 r,所以 r仍然指向 a0,*r 的值即为元素 a0的值 1。所以程序的输出结果为 4,1。10.下列描述中正确的是(分数:1.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合 解析:解析 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。选项 D的描述正确。11.以下程序的输出结果是_。 #includestdio.h struct
29、 st intx;int *y; *p; int dt4=1,2,3,4); struct st aa4=2, main() p=aa; printf(“%d/n“,+(p-x); (分数:2.00)A.1B.2C.3 D.4解析:12.下述程序的输出结果是_。 # includestdio.h main() int i; for(i=1;i=10;i+) if(i*i=20)(i*1=100) break; printf(“%d/n“,i*i); (分数:1.00)A.49B.36C.25 D.64解析:解析 当 if执行到第一个满足(i*i=20)(i*1=100)这个条件的 i出现时,通
30、过 break语句跳出循环,执行下面的 printf语句。13.有下列二叉树,对此二叉树前序遍历的结果为 _ 。 (分数:2.00)A.XZCYABB.XYZABCC.XYABCZD.XYAZBC 解析:解析 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。14.以下不能输出字符 A的语句是(注:字符 A的 ASCII码值为 65,字符 a的 ASCII码值为 97)_。(分数:2.00)A.printf(“%c/n“,“a“-32);B.printf(“%d/n“,“A“); C.printf(“%c/n“,
31、65);D.printf(“%c/n“,“B“-1);解析:解析 B 选项输出的格式为%d,即为整型格式,所以输出字符 A的 ASCII码值 65,而不是字符A。由于大写字母比和其对应的小写字母的 ASCII码值小 32,所以 A选项正确。字符 A的 ASCII码值就是65,所以以%c 格式输出可以输出字符 A,所以 C选项正确。由于字符 A的 ASCII码值比字符 B的小 1,所以 D选项正确。15.有以下程序 #includestdio.h main() unsigned char a=8, c; c=a3; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:2.00
32、)A.32B.16C.1 D.0解析:解析 无符号整型变量 a的值为 8,二进制表示为 00001000,右移 3位后为 00000001,即十进制的 1,因此输出 1。16.有以下程序: #includestdio.h int fun(char s) int n=0; while(*s=“9“ s+; return(n); main() char s10=“6“, “1“, “*“, “4“, “*“, “9“, “*“, “0“, “*“; printf(“%d“, fun(s); 程序运行的结果是_。(分数:2.50)A.9B.61490C.61 D.5解析:解析 在 fun函数中,wh
33、ile 循环的功能是逐个取字符数组 s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量 n中,并返回变量 n的值。17.下列定义变量的语句中错误的是_。(分数:2.00)A.int_int;B.double int_;C.char For;D.float US $; 解析:解析 C 语言规定,变量命名必须符合标识符的命名规则。D 选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以 For不是关键字 for。18.下列程序的运行结果为_。 #includestd
34、io.h void abc(char*str) int a,b,i,j; for(i=j=0;stri!=“/0“;i+) if(stri!=“a“) strj+=stri; strj=“/0“; void main() char str=,abcdef“; abc(str); printf(“str=%s“,str); (分数:2.50)A.str=bcdef B.str=abcdefC.str=aD.str=ab解析:解析 本题考查函数调用的参数传递。通过函数 abc的执行,将字符串中的字母 a去掉,保留剩下的,由于是通过指针调用,所以改变字符串的结果。19.以下选项中非法的字符常量是_。
35、(分数:1.00)A.“/101“B.“/65“C.1/xff“D.“/019“ 解析:解析 在选项中,“/019“,以 0开头的数都为八进制数,而八进制的表示数字是 07,所以答案选择 D。20.以下数组定义中错误的是_。(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=0;C.int x23=1,2,3,4,5,6; D.int x23=1,2,3,4,5,6;解析:解析 C 选项中 x23定义的是一个 2行 3列的二维数组,而在给数组元素赋值时却赋成了 3行,因此错误。21.下面说明不正确的是 _ 。(分数:1.00)A.chara10=“china“;B.c
36、hara10,*p=a;p=“chiua“;C.char*a;a=“china“;D.chara10,*p;p=a=“china“; 解析:解析 C 语言中操作一个字符串常量的方法有: 把字符串常量存放在一个字符数组之中。 用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。 当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。 本题选项 D) 错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。22.有以下程序: #include stdio.h void fun(int a, int b) int t; t=a; a=b; b=
37、t; main() int c10=1,2,3,4,5,6,7,8,9,0, i; for(i=0; i10; i+=2) fun(ci, ci+1); for(i=0; i10; i+) printf(“%d,“, ci); printf(“/n“); 程序的运行结果是_。(分数:2.00)A.1,2,3,4,5,6,7,8,9,0, B.2,1,4,3,6,5,8,7,0,9,C.0,9,8,7,6,5,4,3,2,1,D.0,1,2,3,4,5,6,7,8,9,解析:解析 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中
38、,形参的值发生改变,而实参中的值不会变化,所以数组 c中的元素的值并没有变化,选择 A。23.有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母: #include stdio.h #include void fun(char *p)int i=0;while(pi)if(pi=“i+ +;main( )char s1100=“ab cd EFG!“;fun(s1);printf(“%s/n“,s1);程序运行后的输出结果是_。 A.ab cd EFg! B.Ab Cd EFg! C.ab cd EFG! D.aB cD EFG!A B C D D解析 调用
39、fun函数后,实参数组名 s1传给形参指针 p,p 也指向数组 sl。fun 函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-“a“+“A“;即 pi-1=pi-1=32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。(分数:2.00)A.ab cd EFg!B.Ab Cd EFg!C.ab cd EFG!D.aB cD EFG! 解析:解析 调用 fun函数后,实参数组名 s1传给形参指针 p,p 也指向数组 sl。fun 函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一
40、个字符是小写字母,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-“a“+“A“;即 pi-1=pi-1=32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。24.下列叙述中错误的是_。(分数:1.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持解析:解析 数据库应用系统中的核心问题是设计一个能满足用户需求、性能良好的数据库,这就是数据库设计,因此本题答案为 A。25.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00
41、)A.系统结构图 B.数据字典(DD)C.数据流程图(DFD 图)D.判定表解析:解析 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。26.以下关于逻辑运算符两侧运算对象的叙述中正确的是_。(分数:1.00)A.可以是任意合法的表达式 B.只能是整数 0或非 0整数C.可以是结构体类型的数据D.只能是整数 0或 1解析:解析 C 语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择 A选项。27.若有定义:double a=22;int i=0, k=18;,则以下不符合 C语言规定的赋值语句是_。(分数:1.00)A.i=(a+k)=
42、(i+k);B.i=a%11; C.a=a+, i+;D.i=!a;解析:解析 取模运算符“%”,二元运算符,具有左结合性,参与运算的量均为整型。选项 B中的 a变量是 double实型,不符合规定。所以选择 B选项。28.有以下函数 int fun(char*s) char*t=s; while(*t+); return(t-s); 该函数的功能是_。(分数:1.00)A.计算 s所指字符串占用内存字节的个数B.比较两个字符串的大小C.计算 s所指字符串的长度 D.将 s所指字符串复制到字符串 t中解析:解析 首先 char *s接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针c
43、har*t,while(*t+)不断循环,直到*t 为“/0“,再将 t-1,这时字符指针 t指向字符串的最后一个字符,又因为 s指向字符数组的首地址即字符串的首地址,所以 return(t-s)便是返回字符数组中字符串的长度。故本题答案为 C。29.在面向对象方法中,不属于“对象”基本特点的是_。(分数:2.00)A.一致性 B.分类性C.多态性D.标识唯一性解析:解析 在面向对象方法中,对象的基本特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为 A。30.有以下程序: #includestdio.h main() int x=0x13;
44、 printf(“INT:%d/n“,x+1); 程序运行后的输出结果是_。(分数:1.00)A.INT:14B.INT:13C.INT:12D.INT:20 解析:解析 0x13 是十六进制数,%d 需要输出十进制数,先将 0x13换算成十进制:161+16 0 3=16+3=19,输出 INT=x+1=20。31.执行下列程序中的输出语句后,a 的值是 _ 。 main() int a; printf(“%d/n“,(a=2*3,a*5,a+7); (分数:2.00)A.17B.37C.6 D.13解析:解析 本题考查逗号表达式。本题的返回值是 a+7,a=2*3=6,a+7=13(注意:
45、本题问的是 a的值,而不是程序的输出值)。32.以下关于字符串处理的叙述正确的是_。(分数:1.00)A.进行字符串复制时,目的串的存储空间必须足够大 B.两个字符串进行比较时,短的一个必定比长的一个小C.计算一个字符串的长度时,应包含串尾的结束标志D.两个字符串连接时,对存储空间的大小没有要求解析:解析 两个字符串进行比较时,按照字符串中相同位置的字符 ASCII码顺序进行比较,故选项 B错误;字符串需要包含串尾的结束标志,但是计算字符串长度时,不包含串尾的结束标志,故选项 C错误;要将字符串 s2连接到 s1后面,串 s1所在存储空间必须可以存储字符串 s1和字符串 s2连接后构成新串的字
46、符,故选项 D错误。故答案选 A选项。33.有以下程序: #include stdio.h int a=1,b=2; void fun1(int a,int b) printf(“%d%d“,a,b); void fun2() a=3;b=4; main( ) fun1(5,6);fun2(); printf(“%d%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.5 6 1 2B.3 4 5 6C.1 2 5 6D.5 6 3 4 解析:解析 fun1 函数中的 a、b 为局部变量,fun2 函数中的 a、b 为全局变量。执行 fun1函数后输出5和 6,执行完 fun2后 a变为 3,b 变为 4,所以输出结果为 3和 4,故 D选项正确。34.交换两个变量的值,不允许用临时变量,应该使用下列_位运算符。(分数:2.50)A. for(i=0;in;i+)sum+