1、二级 C 语言笔试-367 及答案解析(总分:125.50,做题时间:90 分钟)一、选择题(总题数:50,分数:67.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2+b);程序运行后的输出结果是( )。A) 0,0 B) 1,0C) 3,2 D) 1,2(分数:1.00)A.B.C.D.2._是构成 C 语言程序的基本单位。A) 函数 B) 过程 C) 子程序 D) 子例程(分数:1.00)A.B.C.D.3.以下程序段完全正确的是( )。 A) int *p;scanf(“%
2、d“,p); B) int *p;scanf(“%d“,p); C) int k,*p=k;scanf(“%d“,p)D) int k,*p;*p=k;scanf(“%d“,p)(分数:2.00)A.B.C.D.4.有以下程序#includestdiohvoid fun(float * p1,int n1,float,*p2,int n2,float * s)int i;s(float *)calloc(1,sizeof(float);*s0;for(i=0;in1;i+)*s+=*p1+;for(i=0;in2;i+)*s+=*p2+;main()float a2=1.1,2.2,b310.
3、0,20.0,30.0),*s=a;fun(a,2,b,3,s);printf(“%f/n“,*s);上面程序的输出结果是 ( )A) 60.000000 B) 3.300000 C) 63.300000 D) 1.100000(分数:1.00)A.B.C.D.5.设 x=015,则 x=x017 的值是( )。A) 00001111 B) 11111101 C) 00000010 D) 11000000(分数:2.00)A.B.C.D.6.若有说明:int *p,m=5,n;以下正确的程序段是( )。A) p=x2;y3;z=4;m(wx)?w:x; m(my)?m:y; m(mz)?m:z
4、;则该程序段执行后,m 的值是 ( )A) 4 B) 3 C) 2 D) 1(分数:1.00)A.B.C.D.9.有以下程序:#include stdio, hvoid sum(int a )a0=a-1 +a1;main ( )int a10 = 1,2,3,4,5,6,7,8,9,10;sum(prinff(“% d /n“,a2); 程序运行后的输出结果是( )。A) 6 B) 7 C) 5 D) 8(分数:1.00)A.B.C.D.10.已知、棵二叉树的后序遍历序列是 dabec,中序遍历序列是 debac,则它的前序遍历序列是( )。A) acbed B) decab C) deab
5、c D) cedba(分数:1.00)A.B.C.D.11.信息隐蔽的概念与下述哪一种概念直接相关( )。A) 软件结构定义 B) 模块独立性C) 模块类型划分 D) 模块耦合度(分数:1.00)A.B.C.D.12.设有如下定义struct sschar name10;int age;char sex;std3,* p=std;下面各输入语句中错误的是A) scanf(“%d“,B) scanf(“%s“,C) scanf(“%c“,D) scanf(“%c“,(分数:1.00)A.B.C.D.13.现有如下程序段#include “stdio.h“main()int k30=12,324,
6、45,6,768,98,21,34,453,456;int count=0,i=0;while(Li)if(ki%2=0|ki%5=0)count+;i+; printf(“%d,%d/n“,count,i);则程序段的输出结果为A) 7,8 B) 8,8 C) 7,10 D) 8,10(分数:1.00)A.B.C.D.14.以下程序(程序左边的数字为附加的行号)_。1#includestr.h2#includestdio.h3main()4 char s=“string“;5puts(s);6strcpy(s,“hello“);7printf(“%3s/n“,s);A) 没有错 B) 第 1
7、 行有错 C) 第 6 行有错 D) 第 7 行有错(分数:1.00)A.B.C.D.15.以下程序的输出结果是( )。main()int a=4,b=3,c=2,d=1;printf(“%d“,ab?a:dc?d:b);A) 1 B) 3 C) 2 D) 4(分数:1.00)A.B.C.D.16.在执行下述程序时,若从键盘输入 6 和 8,则结果为main()int a,b,s;scanf(“%d%d“,s=x+3;printf (“ %d/n“ ,s2 );执行后输出结果是A) 随机值 B) 0 C) 5 D) 6(分数:1.00)A.B.C.D.18.下列程序的输出结果是_。main()
8、unsigned short a=65536;int b;printf(“%d/n“,b:a);A0 B1 C2 D3(分数:2.00)A.B.C.D.19.运行以下程序后,如果从键盘上输入 65 14回车,则输出结果为_。main()int m,n;printf(“Enter m,n:“);scanf(“%d%d“,while(m!=n)while(mn)m-=n;while(nm)n-=m;printf(“m=%d/n“,m);A) m=3 B) m=2 C) m=1 D) m=0(分数:1.00)A.B.C.D.20.若有定义:char *x=“abcdefghi“;,以下选项中正确运用
9、了 strcpy 函数的是_。(A) char y10;strcpy(y,x4);(B) char y10;strcpy(+y,x1);(C) char y10,*s;strcpy(s=y+5,x);(D) char y10,*s;strcpy(s=y+1,x+1);(分数:2.00)A.B.C.D.21.有如下程序:#include stdiohmain()float x=2.0,y;if(x0.0) y=0.0;else if(x10.0) y=1.0/x;else y=1.0;printf(“%f/n“,y);该程序的输出结果是( )。A) 0.000000 B) 0.250000 C)
10、 0.500000 D) 1.000000(分数:1.00)A.B.C.D.22.下列叙述中,不属于测试的特征的是A) 测试的挑剔性 B) 完全测试的不可能性 C) 测试的可靠性 D) 测试的经济性(分数:2.00)A.B.C.D.23.有以下程序的输出结果是( )char fun(char x , char y)if(xmain( )int a=9,b=8,c=7;printf(“%c/n”,fun(fun(a,b),fun(b,c); A)函数调用出错B)8 C)9D)7(分数:1.00)A.B.C.D.24.设有下列定义:struct skint m;float x;)dara,*q;若
11、要使 q 指向 data 中的 m 域,正确的赋值语句是( )。A) q=char color;float price;std,*ptr;ptr=若要引用结构体变量 std 中的 color 成员,写法错误的是( )。A) std.color B) ptrcolorC) stdcolor D) (*ptr).color(分数:2.00)A.B.C.D.26.一个源文件中的外部变量的作用域为( )。A) 本文件的全部范围B) 本程序的全部范围C) 本函数的全部范围D) 从定义该变量的位置开始到本文件结束(分数:2.00)A.B.C.D.27.若运行时输入 12,则以下程序的输出结果是_。main
12、()intx,y;scanf(“%d“,y=x12? x+1:x-1;printf(“%d/n“,y);A) 10 B) 11 C) 12 D) 13(分数:1.00)A.B.C.D.28.以下程序的输出结果是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“,a);A) 20 B) 24 C) 25 D) 15(分数:1.00)A.B.C.D.29.为了避免在嵌套的条件语句 if else 中产生二义性,C 语言规定,else 子句总是与( )配对。
13、A) 缩排位置相同 if B) 其前面最近的 ifC) 其后面最近的 if D) 同一行上的 if(分数:1.00)A.B.C.D.30.表示“在使用 x 之后,使 x 的值加 1”的正确方式是 ( )A+ +xBx+ +C+xD+x+(分数:1.00)A.B.C.D.31.下列程序执行后的输出结果是_。main()char arr24;strcpy (arr0,“you“);strcpy(arr1,“me“);an03= char b; double c; data;以下叙述中错误的是( )。A) data 的每个成员起始地址都相同B) 变量 data 所占的内存字节数与成员 c 所占字节数
14、相等C) 程序段:data.a=5; printf(“%f/n“,data.c);输出结果为 5.000000D) data 可以作为函数的实参(分数:1.00)A.B.C.D.36.以下语句或语句组中,能正确进行字符串赋值的是_。A) char *sp;*sp=“right!“; B) char s10;s=“right!“;C) char s10;*s=“right!“; D) char sp=“right!“;(分数:1.00)A.B.C.D.37.在 C 语言程序中,以下说法正确的是( )。 A) 函数的定义和函数的调用均不可以嵌套 B) 函数的定义不可嵌套,但函数的调用可以嵌套 C)
15、 函数的定义可以嵌套,但函数的调用不可以嵌套 D) 函数的定义和函数的调用均可以嵌套(分数:2.00)A.B.C.D.38.一个关系中属性个数为 1 时,称此关系为( )。A) 对应关系 B) 单一关系 C) 一元关系 D) 二元关系(分数:2.00)A.B.C.D.39.以下能正确定义一维数组的选项是_。A) int a5=0,1,2,3,4,5;B) char e=0,1,2,3,4,5);C) char a=A,B,C);D) int a5=“0123“;(分数:2.00)A.B.C.D.40.有以下程序:void sort(int a,int n)int i,j,t;for(i=0;i
16、n-1;i+=2)for(j=i+2;jn;j+=2)if(aiaj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa,10);for(i=0;i10;i+) printf(“%d“,aai);printf(“/n“);其输出结果是( )。A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1,C) 9,2,7,4,5,6,3,8,1,10, D) 1,10,3,8,5,6,7,4,9,2,(分数:1.00)A.B.C.D.41.软件设计包括软件的结构、数据接口和过程设计,其中软
17、件的过程设计是指 ( )A) 模块间的关系 B) 系统结构部件转换成软件的过程描述C) 软件层次结构 D) 软件开发过程(分数:1.00)A.B.C.D.42.若有定义语句:double a,*p=以下叙述中错误的是( )。A)定义语句中的+号是一个间址运算符B)定义语句中的*号只是一个说明符C)定义语句中的 p 只能存放 double 类型变量的地址D)定义语句中,*p= B) while(ch=getchar()=/n)putchar(ch);C) while(ch=getchar()!=/N)putchar(ch); D) while(ch=getchar()!=/n)putchar(c
18、h);(分数:2.00)A.B.C.D.49.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是( )。A) 数组 a 和 b 的长度相同 B) a 数组长度小于 b 数组长度C) a 数组长度大于 b 数组长度 D) 以述说法都不对(分数:1.00)A.B.C.D.50.(2S)以下叙述中错误的是( )。A) 改变函数形参的值,不会改变对应实参的值B) 函数可以返回地址值C) 可以给指针变量赋一个整数作为地址值D) 当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL(分数:2.00)A.B.C.D.二、填空题(总题数:20,分数:58.50)51.
19、软件是程序、数据和 1 的集合。(分数:2.00)填空项 1:_52.若 fp 已正确定义为个文件指针,d1.dd 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(_);。(分数:3.00)填空项 1:_53.以下程序的输出结果是_。#includestdio.hmain()int i;for(i=a;if;i+,i+)printf(“%c“,i-a+A);printf(“/n“);(分数:2.50)填空项 1:_54.数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为 1。(分数:4.00)填空项
20、 1:_55.在数据库的概念结构设计中,常用的描述工具是 1。(分数:1.00)填空项 1:_56.阅读下面程序,则执行后的输出结果是_。#include “stdio.h“main()int x,y,z;x=1;y=2;z=3;if(xy) if(xz) printf(“%d“,x);else printf(“%d“,y);printf(“%d/n“,z);(分数:4.00)填空项 1:_57.若有以下定义和语句,则使指针 p 指向值为 36 的数组元素的表达式是_。int a10=19,23,44,17,37,28,49,36,*p;p=a;(分数:2.00)填空项 1:_58.栈和队列通
21、常采用的存储结构是 1。(分数:1.00)填空项 1:_59.线性表的存储结构主要分为顺序存储结构和链式存储结构队列是一种特殊的线性表,循环队列是队列的 1 存储结构。(分数:2.00)填空项 1:_60.下面程序的运行结果是_。#define DOUBLE(r)r*rmain()int x=4,y=2,t;t=DOUBLE(x+y);printf(“%d“,t);(分数:2.00)填空项 1:_61.以下定义的结构体类型拟包含两个成员,其中成员变量 info 用来存入整形数据;成员变量 link 是指向自身结构体的指针,请将定义补充完整。struct nodeint info;_link;(
22、分数:1.00)填空项 1:_62.在长度为 n 的有序线性表中进行二分查找,最坏的情况下,需要的比较次数为 1。(分数:2.00)填空项 1:_63.下列程序的输出结果是_。int t(int x, int y, int cp, int dp)cp=x*x+y*y;dp=x*x-y*y;main ()int a=4, b=3, c=5, d=6;t (a,b, c,d);printf(“%d %d /n“,c,d);(分数:4.00)填空项 1:_64.想通过以下输入语句给 x 赋值 2,给 y 赋值 3,则输入数据的形式应该是_。int x,y;scanf(“x=%d,y=%d“, cha
23、r *p, *t; n=strlen(s)+1; t=(c har*)malloc (n*sizeof(char); p=(char*)malloc(n*sizeof(char); j=0; k=0; for(i=0; in; i+)if(isdigit(si)/*found*/p (1) =si; j+; elsetk=si; k+; /*found*/for(i=0; i (2) ; i+)pj+i=ti; pj+k=0; /*found*/return (3) ; main()char s80; printf(“Please input:“); scanf(“%s“, s); print
24、f(“/nThe result is: %s/n“, fun(s); (分数:18.00)填空项 1:_填空项 1:_填空项 1:_二级 C 语言笔试-367 答案解析(总分:125.50,做题时间:90 分钟)一、选择题(总题数:50,分数:67.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2+b);程序运行后的输出结果是( )。A) 0,0 B) 1,0C) 3,2 D) 1,2(分数:1.00)A.B.C.D. 解析:解析 本题输出两个值,第一个 printf 语句输出 b
25、 的值,b=a+b=1。第二个 printf 语句输出 a 的值,a=2*b,此时 b 的值为 1,所以 a 的值为 2。2._是构成 C 语言程序的基本单位。A) 函数 B) 过程 C) 子程序 D) 子例程(分数:1.00)A. B.C.D.解析:解析 C 程序是由函数构成的。一个 C 源程序至少包含一个 main 函数,也可以包含一个 main 函数和若干个其他函数,因此,函数是 C 程序的基本单位。3.以下程序段完全正确的是( )。 A) int *p;scanf(“%d“,p); B) int *p;scanf(“%d“,p); C) int k,*p=k;scanf(“%d“,p)
26、D) int k,*p;*p=k;scanf(“%d“,p)(分数:2.00)A.B.C. D.解析:解析 选项 A)错在没有对指针进行初始化,无效指针,并且在 scanf(“%d“,p)中无需再进行取地址操作。选项 B)没有对指针进行初始化,无效指针。选项 D),语句*p=k;的左端*p 是指针所指内存空间的值,k 是地址,应为 p=k。4.有以下程序#includestdiohvoid fun(float * p1,int n1,float,*p2,int n2,float * s)int i;s(float *)calloc(1,sizeof(float);*s0;for(i=0;in1
27、;i+)*s+=*p1+;for(i=0;in2;i+)*s+=*p2+;main()float a2=1.1,2.2,b310.0,20.0,30.0),*s=a;fun(a,2,b,3,s);printf(“%f/n“,*s);上面程序的输出结果是 ( )A) 60.000000 B) 3.300000 C) 63.300000 D) 1.100000(分数:1.00)A.B.C.D. 解析:5.设 x=015,则 x=x017 的值是( )。A) 00001111 B) 11111101 C) 00000010 D) 11000000(分数:2.00)A.B.C. D.解析:解析 本题主
28、要考查按位异或运算,x=015(二进制 00001101),017 的二进制为 000001111,两者异或结果为 00000010。6.若有说明:int *p,m=5,n;以下正确的程序段是( )。A) p=x2;y3;z=4;m(wx)?w:x; m(my)?m:y; m(mz)?m:z;则该程序段执行后,m 的值是 ( )A) 4 B) 3 C) 2 D) 1(分数:1.00)A.B.C.D. 解析:9.有以下程序:#include stdio, hvoid sum(int a )a0=a-1 +a1;main ( )int a10 = 1,2,3,4,5,6,7,8,9,10;sum(
29、prinff(“% d /n“,a2); 程序运行后的输出结果是( )。A) 6 B) 7 C) 5 D) 8(分数:1.00)A. B.C.D.解析:解析 本题将主函数中 a2的地址传递给了 sum 函数中的形参 a,使得 sum 函数中的(a +0)为主函数中 a2的地址,所以 a-1即*(a-1)的值为主函数中 a1的值,故函数 sum 中 a0=2+4。由于此函数中的 a 是指向主函数中的 a2,所以主函数中的 a2的值即为 6。10.已知、棵二叉树的后序遍历序列是 dabec,中序遍历序列是 debac,则它的前序遍历序列是( )。A) acbed B) decab C) deabc
30、 D) cedba(分数:1.00)A.B.C.D. 解析:解析 依据后序遍历序列可确定根结点为 c,由中序遍历序列可知其左子树由 deba 构成,右子树为空;又由左子树的后序遍历序列可知其根结点为 e,由中序遍历序列可知其左子树为 d,右子树由 ba 构成,如图所示。由此可知该二叉树的前序遍历序列为选项 D) 。11.信息隐蔽的概念与下述哪一种概念直接相关( )。A) 软件结构定义 B) 模块独立性C) 模块类型划分 D) 模块耦合度(分数:1.00)A.B. C.D.解析:解析 利用信息隐蔽,可以确保每一个模块的独立性。12.设有如下定义struct sschar name10;int a
31、ge;char sex;std3,* p=std;下面各输入语句中错误的是A) scanf(“%d“,B) scanf(“%s“,C) scanf(“%c“,D) scanf(“%c“,(分数:1.00)A.B. C.D.解析:解析 程序定义中 std 为一数组13.现有如下程序段#include “stdio.h“main()int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(Li)if(ki%2=0|ki%5=0)count+;i+; printf(“%d,%d/n“,count,i);则程序段的输出结果为A) 7,
32、8 B) 8,8 C) 7,10 D) 8,10(分数:1.00)A.B.C.D. 解析:解析 在 C 语言中,定义一维数组的语句一般形式如下:类型名 数组名常量表达式;一维数组的引用形式为:数组名下标表达式。count 表示能被 2 整除或被 5 整除的个数,i 则计算有多少个数组元素。14.以下程序(程序左边的数字为附加的行号)_。1#includestr.h2#includestdio.h3main()4 char s=“string“;5puts(s);6strcpy(s,“hello“);7printf(“%3s/n“,s);A) 没有错 B) 第 1 行有错 C) 第 6 行有错
33、D) 第 7 行有错(分数:1.00)A.B. C.D.解析:解析 字符串复制函数 strcpy 包含在头文件 string.h 中,因此,程序中的第 1 行文件包含命令是错误的。15.以下程序的输出结果是( )。main()int a=4,b=3,c=2,d=1;printf(“%d“,ab?a:dc?d:b);A) 1 B) 3 C) 2 D) 4(分数:1.00)A.B.C.D. 解析:解析 本题首先判断 ab,当 ab 时结果等于 a,否则等于“dc?d:b”,因为 ab,所以直接输出 a 的值,注:这里“a:dc?d:b”是用来干扰考生的。16.在执行下述程序时,若从键盘输入 6 和
34、 8,则结果为main()int a,b,s;scanf(“%d%d“,s=x+3;printf (“ %d/n“ ,s2 );执行后输出结果是A) 随机值 B) 0 C) 5 D) 6(分数:1.00)A.B. C.D.解析:解析 本题考核的知识点是指向一维数组的指针变量,通过赋值语句“s=x+3”,使指针变量 s 指向数组元素 x3,输出语句中的 s2等价于*(s+2),即 x5僖为 0。所以,B 选项为所选。18.下列程序的输出结果是_。main()unsigned short a=65536;int b;printf(“%d/n“,b:a);A0 B1 C2 D3(分数:2.00)A.
35、 B.C.D.解析:19.运行以下程序后,如果从键盘上输入 65 14回车,则输出结果为_。main()int m,n;printf(“Enter m,n:“);scanf(“%d%d“,while(m!=n)while(mn)m-=n;while(nm)n-=m;printf(“m=%d/n“,m);A) m=3 B) m=2 C) m=1 D) m=0(分数:1.00)A.B.C. D.解析:解析 分析程序可知,该程序实现的功能是对数 m,n 求其最大公约数。在本题中 m 与 n 的值分别为 65 与 14,其最大公约数为 1,故其输出结果为 m=1。20.若有定义:char *x=“ab
36、cdefghi“;,以下选项中正确运用了 strcpy 函数的是_。(A) char y10;strcpy(y,x4);(B) char y10;strcpy(+y,x1);(C) char y10,*s;strcpy(s=y+5,x);(D) char y10,*s;strcpy(s=y+1,x+1);(分数:2.00)A.B.C.D. 解析:21.有如下程序:#include stdiohmain()float x=2.0,y;if(x0.0) y=0.0;else if(x10.0) y=1.0/x;else y=1.0;printf(“%f/n“,y);该程序的输出结果是( )。A)
37、0.000000 B) 0.250000 C) 0.500000 D) 1.000000(分数:1.00)A.B.C.D. 解析:解析 本题中,x=2.0,因此执行 else y=1.0,并且以“%f”输出。22.下列叙述中,不属于测试的特征的是A) 测试的挑剔性 B) 完全测试的不可能性 C) 测试的可靠性 D) 测试的经济性(分数:2.00)A.B.C. D.解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3 个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。23.有以下程序的输出结果
38、是( )char fun(char x , char y)if(xmain( )int a=9,b=8,c=7;printf(“%c/n”,fun(fun(a,b),fun(b,c); A)函数调用出错B)8 C)9D)7(分数:1.00)A.B.C.D. 解析:解析 函数 fun(a,b)的结果是 8,函数 fun(b,c)的结果是 7,将 8,7 代人函数中,f(8,7)的返回结果是 7。24.设有下列定义:struct skint m;float x;)dara,*q;若要使 q 指向 data 中的 m 域,正确的赋值语句是( )。A) q=char color;float price
39、;std,*ptr;ptr=若要引用结构体变量 std 中的 color 成员,写法错误的是( )。A) std.color B) ptrcolorC) stdcolor D) (*ptr).color(分数:2.00)A.B.C. D.解析:解析 结构体变量的引用有两种方式:用箭头操作符:“”,其中,左操作数必须是指向结构的指针,右操作数是该结构的成员:结构体变量名成员名。故答案 C) 是错误的。26.一个源文件中的外部变量的作用域为( )。A) 本文件的全部范围B) 本程序的全部范围C) 本函数的全部范围D) 从定义该变量的位置开始到本文件结束(分数:2.00)A.B.C.D. 解析:解析
40、 一个源文件中的外部变量的作用域是从定义该变量的位置开始到本文件结束。27.若运行时输入 12,则以下程序的输出结果是_。main()intx,y;scanf(“%d“,y=x12? x+1:x-1;printf(“%d/n“,y);A) 10 B) 11 C) 12 D) 13(分数:1.00)A.B. C.D.解析:解析 本题考查“?:”运算的规则:若条件成立,取“:”前的值;否则,取“:”后面的值。28.以下程序的输出结果是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()
41、;printf(“%d/n“,a);A) 20 B) 24 C) 25 D) 15(分数:1.00)A.B.C.D. 解析:解析 函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。29.为了避免在嵌套的条件语句 if else 中产生二义性,C 语言规定,else 子句总是与( )配对。A) 缩排位置相同 if B) 其前面最近的 ifC) 其后面最近的 if D) 同一行上的 if(分数:1.00)A.B. C.D.解析:解析 本题考查 if else 语句。C 语言规定,else 总是与它前面的最近
42、的 if 配对。30.表示“在使用 x 之后,使 x 的值加 1”的正确方式是 ( )A+ +xBx+ +C+xD+x+(分数:1.00)A.B. C.D.解析:31.下列程序执行后的输出结果是_。main()char arr24;strcpy (arr0,“you“);strcpy(arr1,“me“);an03= char b; double c; data;以下叙述中错误的是( )。A) data 的每个成员起始地址都相同B) 变量 data 所占的内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5; printf(“%f/n“,data.c);输出结果为 5.00000
43、0D) data 可以作为函数的实参(分数:1.00)A.B.C. D.解析:解析 共用体成员 a,b,c 共占用同一个内存空间,所以 data 的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量 data 所占的内存字节数与成员所占字节数相等;由于各成员变量的类型不一致,所以它们的存储方式也不相同,整型占用 2 个字节的存储空间,double型占用 8 个字节的存储空间;data 可以作为函数的实参,此时 data 作为一个地址进行地址传送;执行data.a=5;printf(“%f/n“,data.c);系统不能自动将整型变量转换为浮点型值,printf 函数只
44、是将内存中的数据以不同类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故选项 C)错误。36.以下语句或语句组中,能正确进行字符串赋值的是_。A) char *sp;*sp=“right!“; B) char s10;s=“right!“;C) char s10;*s=“right!“; D) char sp=“right!“;(分数:1.00)A.B.C.D. 解析:解析 本题考查字符串常量的概念。字符串常量是一段用双引号引起来的字符序列,它可以出现在表达式中,也可以出现在对字符数组的初始化中。若出现在表达式中,可将其看做一个 const char*类型的指针常量。若出现在字符数组
45、的初始化中,系统自动在其结尾添加“/0”。选项 A 中,将字符串常量赋给未经初始化的字符指针 sp,因为 sp 还未初始化,其指向的地址不确定,往一个不确定的地址中写数据容易使程序出错,所以选项 A 错误。选项 B 先定义了一个字符数组 s,然后将字符串常量赋给 s,而因为数组名 s 是一个指针常量,不可以被改变,所以选项 B 错误。选项 C 定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,因为字符串在表达式中相当于一个常字符指针,而将一个指针赋给一个字符型变量是行不通的,所以选项 C 也错误。选项 D 定义一个字符指针,并同时将其初始化指向一个字符串常量,这是可行的。所以选项 D
46、正确。37.在 C 语言程序中,以下说法正确的是( )。 A) 函数的定义和函数的调用均不可以嵌套 B) 函数的定义不可嵌套,但函数的调用可以嵌套 C) 函数的定义可以嵌套,但函数的调用不可以嵌套 D) 函数的定义和函数的调用均可以嵌套(分数:2.00)A.B. C.D.解析:解析 本题考查函数调用的基本概念。因为函数的结果是一个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但是函数调用可以嵌套。38.一个关系中属性个数为 1 时,称此关系为( )。A) 对应关系 B) 单一关系 C) 一元关系 D) 二元关系(分数:2.00)A.B.C. D.解析:解析 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N 个属性的关系称为 N 元关系。39.以下能正确定义一维数组的选项是_。A) int a5=0,1,2,3,4,5;B) char e=0,1,2,3,4,5);C) char a=A,B,C);D) int a5=“0123“;(分数:2.00)A.B. C.D.解析:解析 C 语言中一