admin 管理员组文章数量: 1184232
2024年3月22日发(作者:计算机基础知识学什么)
2022年3月全国计算机等级二级C语言考试题
库及答案(超强)
1.程序流程图中带有箭头的线段表示的是( C )。
A) 图元关系 B) 数据流 C) 控制流 D) 调用关系
2.结构化程序设计的基本原则不包括( A )。
A) 多态性 B) 自顶向下 C) 模块化 D) 逐步求精
3.软件设计中模块划分应遵循的准则是( B )。
A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D)
高内聚高耦合
4.在软件开发中,需求分析阶段产生的主要文档是( B )。
A) 可行性分析报告 B) 软件需求规格说明书 C) 概要设计说
明书 D) 集成测试计划
5.算法的有穷性是指( A )。
A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据
量是有限的
C) 算法程序的长度是有限的 D) 算法只能被有限的用户
使用
6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-
1)/2的排序方法是( D )。
A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排
序
7.下列关于栈的叙述正确的是( B )。
A) 栈按"先进先出"组织数据 B) 栈按"先进后出"组织数据
C) 只能在栈底插入数据 D) 不能删除数据
8.在数据库设计中,将E-R图转换成关系数据模型的过程属于
( C )。
A) 需求分析阶段 B) 概念设计阶段 C) 逻辑设计阶段 D)
1 / 69
物理设计阶段
9.有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( D )。
A) 并 B) 自然连接 C) 笛卡尔积 D) 交
10.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,
身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表
SC的关键字(键或码)为( C )。
A) 课号,成绩 B) 学号,成绩 C) 学号,课号 D) 学
号,姓名,成绩
11.以下叙述中错误的是( A )。
A) C语言中的每条可执行语句和非执行语句最终都将被转换成二
进制的机器指令
B) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进
制机器指令文件
C) 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一
个文本文件中
D) C语言源程序经编译后生成后缀为.obj的目标程序
12.以下选项中,合法的一组C语言数值常量是( A )。
A) 12. 0Xa23 4.5e0 B) 028 .5e-3 -0xf
C) .177 4e1.5 0abc D) 0x8A 10,000 3.e5
13.以下选项中不合法的标识符是( A )。
A) &a B) FOR C) print D) 00
14.若有代数式(其中e仅代表自然对数的底数,不是变量),则以
下能够正确表示该代数式的C语言表达式是( A )。
A) sqrt(fabs(pow(n,x)+exp(x))) B) sqrt(fabs(pow(n,x)+
pow(x,e)))
2 / 69
C) sqrt(abs(n^x+e^x)) D) sqrt(fabs(pow(x,n)+
exp(x)))
15.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定
的赋值语句是( B )
A) i=(a+k)<=(i+k); B) i=a%11; C) a=a++,i++
D) i=!a;
16.有以下程序:
#include
main()
{ int s,t,A=10; double B=6;
s=sizeof(A); t=sizeof(B);
printf("%d,%dn",s,t);
}
在VC6.0平台上编译运行,程序运行后的输出结果是( D )。
A) 10,6 B) 4,4 C) 2,4 D) 4,8
17.有以下程序:
#include
main()
{ char a,b,c,d;
scanf("%c%c",&a, &b);
c=getchar(); d=getchar();
printf("%c%c%c%cn",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,
车,注意:回车也是一个字符)
12
34
则输出结果是( D )。
A)
12
34
B) 12
C) 1234
D) 12
3
3 / 69
18.下关于逻辑运算符两侧运算对象的叙述中正确的是( A )。
A) 可以是任意合法的表达式 B) 只能是整数0或非0整数
C) 可以是结构体类型的数据 D) 只能是整数0或1
19.有以下程序:
#include
main()
{ int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%dn",a,b,c,d);
}
程序输出( C )。
A) 1,1,2,0 B) 0,0,0,3 C) 编译有错 D)
0,1,2,0
20.有以下程序:
#include
main()
{ int x=1, y=0, a=0, b=0;
switch (x)
{ case 1:
switch(y)
{ case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
case 3: a++; b++;
}
printf("a=%d, b=%dn", a, b);
}
程序的运行结果是( B )。
A) a=2,b=2 B) a=2,b=1 C) a=1,b=1 D) a
=1,b=0
4 / 69
21.以下程序段中的变量已正确定义:
for( i=0; i<4; i++,i++ )
for( k=1; k<3; k++ ); printf("*" );
程序段的输出结果是( C )。
A) ** B) **** C) * D) ********
22.有以下程序段:
#include
int i, n;
for( i=0; i<8; i++ )
{ n = rand() % 5;
switch (n)
{ case 1:
case 3: printf("%d n", n); break;
case 2:
case 4: printf("%d n", n); continue;
case 0: exit(0);
}
printf("%d n",n);
}
以下关于程序段执行情况的叙述,正确的是( D )。
A) for循环语句固定执行8次 B) 当产生的
随机数n为4时结束循环操作
C) 当产生的随机数n为1和2时不做任何操作 D) 当产生的随机
数n为0时结束程序运行
23.有以下程序:
#include
int f(int x);
main()
{ int n=1,m;
m=f(f(f(n))); printf("%dn",m);
}
5 / 69
int f(int x)
{ return x*2; }
程序运行后的输出结果是( A )。
A) 8 B) 2 C) 4 D) 1
24.以下叙述中错误的是( A )。
A) 可以给指针变量赋一个整数作为地址值
B) 函数可以返回地址值
C) 改变函数形参的值,不会改变对应实参的值
D) 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
25.设已有定义:float x;,则以下对指针变量p进行定义且赋初值的
语句中正确的是( B )。
A) int *p=(float)x; B) float *p=&x; C) float p=
&x; D) float *p=1024;
26.以下数组定义中错误的是( D )。
A) int x[2][3]={1,2,3,4,5,6}; B) int x[][3]={0};
C) int x[][3]={{1,2,3},{4,5,6}}; D) int x[2][3]={{1,2},
{3,4},{5,6}};
27.有以下程序:
#include
void fun( int a[], int n)
{ int i, t;
for(i=0; i -1-i]=t; } } main() { int k[10]={ 1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2; i<8; i++) printf("%d",k[i]); printf("n"); } 6 / 69 程序的运行结果是( A )。 A) 321678 B) 876543 C) 1098765 D) 345678 28.有以下程序: #include #define N 4 void fun(int a[][N], int b[]) { int i; for (i=0; i } main() { int x[N][N]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, {13,14,15,16}}, y[N], i; fun (x, y); for (i=0; i } 程序运行后的输出结果是( A )。 A) -3,-1,1,3, B) -12,-3,0,0, C) 0,1,2,3, D) - 3,-3,-3,-3, 29.设有定义:char s[81]; int i=0;,以下不能将一行(不超 过80个字符)带有空格的字符串正确读入的语句或语句组是( C )。 A) gets(s); B) while((s[i++]=getchar())!='n');s[i] ='0'; C) scanf("%s",s); D) do{ scanf("%c",&s[i]); }while(s[i++]! ='n'); s[i]='0'; 30.设有定义:char p[]={'1', '2', '3'},*q=p; ,以下不能 计算出一个char型数据所占字节数的表达式是( A )。 A) sizeof(p) B) sizeof(char) C) sizeof(*q) D) sizeof(p[0]) 31.有以下程序: #include #include main() 7 / 69 { char str[][20]={"One*World","One*Dream!"},*p=str[1]; printf("%d,",strlen(p)); printf("%sn",p); } 程序运行后的输出结果是( A )。 A) 10,One*Dream! B) 9,One*Dream! C) 9,One*World D) 10,One*World 32.有以下程序: #include main() { char s[]="012xy08s34f4w2"; int i, n=0; for ( i=0; s[i]!=0; i++ ) if(s[i] >= '0' && s[i] <= '9') n++; printf("%dn",n); } 程序运行后的输出结果是( B )。 A) 0 B) 3 C) 7 D) 8 33.有以下程序: #include fun(int x, int y) { static int m=0, i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1, m=1, k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%dn",k); } 执行后的输出结果是( A )。 A) 5, 11 B) 5, 5 C) 11, 11 D) 11, 5 8 / 69 34.在C语言中,只有在使用时才占用内存单元的变量,其存储类 型是( C )。 A) auto和static B) extern和register C) auto和register D) static和register 35.下面结构体的定义语句中,错误的是( A )。 A) struct ord {int x;int y;int z;} struct ord a; B) struct ord {int x;int y;int z;}; struct ord a; C) struct ord {int x;int y;int z;} a; D) struct {int x;int y;int z;} a; 36.有以下程序: # include typedef struct { int b, p; } A; void f(A c) /* 注意:c是结构变量名 */ { int j; c.b += 1; c.p+=2; } main() { int i; A a={1,2}; f(a); printf("%d,%dn", a.b, a.p); } 程序运行后的输出结果是( B )。 A) 2,4 B) 1,2 C) 1,4 D) 2,3 37.以下叙述中正确的是( A )。 A)在C语言中,预处理命令行都以"#"开头 B)预处理命令行必须位 于C源程序的起始位置C)#include D)C语言的预处理不能实现宏定义和条件编译的功能 38.有以下程序: 9 / 69 #include #include int fun(int n) { int *p; p = (int*)malloc(sizeof(int)); *p=n; return *p; } main() { int a; a = fun(10); printf("%dn",a+fun(10)); } 程序的运行结果是( C )。 A) 0 B) 10 C) 20 D) 出错 39.有以下程序: # include main() { unsigned char a=8, c; c = a>>3; printf("%dn", c); } 程序运行后的输出结果是( B )。 A) 16 B) 1 C) 32 D) 0 40.读取二进制文件的函数调用形式为:fread(buffer,size,count, fp);,其中buffer代表的是( D )。 A) 一个内存块的字节数 B) 一个整型变量,代表 待读取的数据的字节数 C)一个文件指针,指向待读取的文件 D)一个内存块的首地址,代 表读入数据存放的地址 11.下列叙述中错误的是( B )。 A) C程序可以由多个程序文件组成 B) 一个C语言程序只 能实现一种算法 C) C程序可以由一个或多个函数组成 D) 一个C函数可以单独 10 / 69 作为一个C程序文件存在 12.以下选项中,能用作数据常量的是( A )。 A) 115L B) 0118 C) 1.5e1.5 D) o115 13.按照C语言规定的用户标识符命名规则,不能出现在标识符中 的是( D )。 A) 大写字母 B) 下划线 C) 数字字符 D) 连接 符 14.设变量已正确定义并赋值,以下正确的表达式是( A )。 A) x=y+z+5, ++y B) int(15.8%5) C) x=y*5=x +z D) x=25%5.0 15.设有定义:int x=2;,以下表达式中,值不为6的是( A )。 A) 2*x,x+=2 B) x++,2*x C) x*=(1+x) D) x* =x+1 16.有以下程序: #include main() { int x, y, z; x=y=1; z=x++,y++,++y; printf("%d,%d,%dn",x,y,z); } 程序运行后的输出结果是( C )。 A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1 17.有以下程序: #include main() { char c1,c2; c1='A'+'8'-'4'; c2='A'+'8'-'5'; printf( "%c,%dn",c1,c2); } 11 / 69 已知字母A的ASCII码为65,程序运行后的输出结果是( A )。 A) E,68 B) D,69 C) E,D D) 输出无定值 18.若有定义int x,y; 并已正确给变量赋值,则以下选项中与 表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是 ( A )。 A) (x-y<0||x-y>0) B) (x-y<0) C) (x-y>0) D) (x-y==0) 19.有以下程序: #include main() { int x=1, y=0; if (!x) y++; else if (x==0) if (x) y+=2; else y+=3; printf("%dn", y); } 程序运行后的输出结果是( D )。 A) 3 B) 2 C) 1 D) 0 20.若有定义:float x=1.5; int a=1,b=3,c=2; 则正确 的switch语句是( A )。 A) switch(a+b) { case 1: printf("*n"); case 2+1: printf("**n"); } B) switch((int)x); { case 1: printf("*n"); case 2: printf("**n"); } C) switch(x) { case 1.0: printf("*n"); case 2.0: printf("**n"); } 12 / 69 D) switch(a+b) { case 1: printf("*n"); case c: printf("**n"); } 21.有以下程序: #include main() { int y=9; for( ; y>0; y--) if(y%3==0) printf("%d", --y); } 程序的运行结果是( A )。 A) 852 B) 963 C) 741 D) 875421 22.有以下程序: #include main() { int i,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j-- ) { if(i*j>3) break; m*=i*j; } } printf("m=%dn",m); } 程序运行后的输出结果是( C )。 A) m=4 B) m=2 C) m=6 D) m=5 23.有以下程序: #include int fun (int x, int y ) { if (x!=y) return ( (x+y) /2 ); else return ( x ); } main() 13 / 69 { int a=4, b=5, c=6; printf( "%dn" , fun(2*a,fun(b,c)));(A) } A) 6 B) 3 C) 8 D) 12 24.有以下程序: #include int add( int a,int b){ return (a+b); } main() { int k, (*f)(), a=5,b=10; f=add; … } 则以下函数调用语句错误的是( D )。 A) k=f(a,b); B) k=add(a,b); C) k=(*f)(a,b); D) k= *f(a,b); 25.有以下程序: #include main() { int n,*p=NULL; *p=&n; printf("Input n:"); scanf("%d",&p); printf("output n:"); printf("%dn",p); } 该程序试图通过指针p为变量n读入数据并输出,但程序有多处错 误,以下语句正确的是( A ) A) int n,*p=NULL; B) *p=&n; C) scanf("%d", &p) D) printf("%dn",p); 26.下列定义数组的语句中,正确的是( A )。 A) #define N 10 int x[N]; B) int N=10;int x[N]; C) int x[0..10]; D) int x[ ]; 27.有以下程序: 14 / 69 #include main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0: switch(a[i]%2) { case 0:a[i]++;break; case 1:a[i]--; } break; case 1:a[i]=0; } for(i=0;i<4;i++) printf("%d ",a[i]); printf("n"); } 程序运行后的输出结果是( D )。 A) 0 3 0 4 B) 2 0 5 0 C) 3 3 4 4 D) 3 0 4 0 28.有以下程序: #include main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0; i<3; i++) for(j=i;j<=i;j++) t+=b[i][b[j][i]]; printf("%dn",t); } 程序运行后的输出结果是( B )。 A) 3 B) 4 C) 1 D) 9 29.以下语句中存在语法错误的是( A )。 A) char ss[6][20]; ss[1]= "right?"; B) char ss()[20] ={ "right?"}; C) char *ss[6]; ss[1]= "right?"; D) char *ss() ={ "right?"}; 30.以下不能将s所指字符串正确复制到t所指存储空间的是 ( A ) 15 / 69 A) do{*t++=*s++;}while(*s ); B) for(i=0;t[i] =s[i];i++); C) while(*t=*s){t++;s++} D) for(i=0,j=0; t[i++]=s[j++]; ); 31.有以下程序: #include void swap(char *x, char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1="abc", *s2="123"; swap(s1,s2); printf("%s,%sn",s1,s2); } 程序执行后的输出结果是( D )。 A) 321,cba B) abc,123 C) 123,abc D) 1bc, a23 32.有以下函数: int fun(char *x, char *y) { int n=0; while ( (*x==*y) && *x!='0' ) {x++; y++; n+ +;} return n ; } 函数的功能是( C )。 A) 将y所指字符串赋给x所指存储空间 B) 查找x和y所 指字符串中是否有'0' C)统计x和y所指字符串中最前面连续相同的字符个数 D)统计x和y 所指字符串中相同的字符个数 33.有以下程序: #include 16 / 69 int fun() { static int x=1; x*=2; return x; } main() { int i, s=1; for( i=1; i<=3; i++ ) s*=fun(); printf("%dn", s); } 程序运行后的输出结果是( B )。 A) 10 B) 30 C) 0 D) 64 34.在一个C源程序文件中所定义的全局变量,其作用域为 ( A )。 A) 由具体定义位置和extern说明来决定范围 B) 所在程序 的全部范围 C) 所在函数的全部范围 D) 所在 文件的全部范围 35.以下叙述中错误的是( A )。 A) 可以通过typedef增加新的类型 B) 可以用typedef将已存在的类型用一个新的名字来代表 C) 用typedef定义新的类型名后,原有类型名仍有效 D) 用typedef可以为各种类型起别名,但不能为变量起别名 36.有以下程序: #include struct S { int a, b; } data[2]={10,100,20,200}; main() { struct S p=data[1]; printf("%dn", ++(p.a) ); } 程序运行后的输出结果是( D )。 17 / 69 A) 10 B) 11 C) 20 D) 21 37.有以下程序: #include #define PT 3.5 ; #define S(x) PT*x*x ; main() { int a=1, b=2; printf("%4.1fn" , S(a+b)); } 程序运行后的输出结果是( C )。 A) 7.5 B) 31.5 C) 程序有错无输出结果 D) 14.0 38.有以下程序: # include main() { unsigned char a=2, b=4, c=5, d; d = a | b; d &= c; printf("%dn", d); } 程序运行后的输出结果是( B )。 A) 3 B) 4 C) 5 D) 6 39.有以下程序: #include #include main() { int *a,*b,*c; a=b=c=(int *)malloc(sizeof(int)); *a=1;*b=2,*c=3; a=b; printf("%d,%d,%dn",*a,*b,*c); } 程序运行后的输出结果是( D )。 A) 1,1,3 B) 2,2,3 C) 1,2,3 D) 3,3,3 40.以下叙述中正确的是( A )。 A) 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致 数据丢失 B) 打开一个已存在的文件并进行了写操作后,原有文件中的全部数 18 / 69 据必定被覆盖 C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再 打开,才能读到第1个数据 D) C语言中的文件是流式文件,因此只能顺序存取数据 11.以下叙述中错误的是( A )。 A) 使用三种基本结构构成的程序只能解决简单问题 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) C语言是一种结构化程序设计语言 D) 结构化程序设计提倡模块化的设计方法 12.以下四个程序中,完全正确的是( B )。 A) #include main(); {/*/ programming /*/ printf("programming!n");} B) #include main() {/* programming */ printf("programming!n"); } C) #include main() {/*/* programming */*/ printf("programming!n"); } D) include main() {/* programming */ printf("programming!n"); } 13.C源程序中不能表示的数制是( D )。 A) 十六进制 B) 八进制 C) 十进制 D) 二 进制 14.以下选项中,能用作用户标识符的是( A )。 A) 0 B) 8 8 C) void D) unsigned 15.若有定义语句:int x=10; ,则表达式x-=x+x的值为 ( C )。 19 / 69 A) 0 B) -20 C) -10 D) 10 16.有以下程序: #include main() { int a=1,b=0; printf("%d,",b=a+b); printf("%dn",a=2*b);(A) A) 1,2 B) 1,0 C) 3,2 D) 0,0 17.有以下程序: #include main() { int a1,a2; char c1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); printf("%d,%c,%d,%c",a1,c1,a2,c2); } 若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字 符a,c2的值为字符b,程序输出结果是:12,a,34,b 则正确的输入 格式是(以下代表空格, A) 12a34 b C) 12,a,34,b 18.若变量已正确定义,在if (W) printf("%dn" ,k ); 中,以下不 可替代W的是( A )。 A) a<>b+c B) ch=getchar() C) a==b+c D) a++ 19.有以下程序段: #include int a, b, c; a=10; b=50; c=30; if (a>b) a=b, b=c; c=a; printf("a=%d b=%d c=%dn", a, b, c); 程序的输出结果是( B )。 20 / 69 A)a=10 b=50 c=30 B)a=10 b=50 c=10 C)a=10 b=30 c= 10 D)a=50 b=30 c=50 20.下列叙述中正确的是( A )。 A) 在switch语句中,不一定使用break语句 B) 在switch语 句中必须使用default C) break语句必须与switch语句中的case配对使用 D) break语句 只能用于switch语句 21.以下不构成无限循环的语句或语句组是( A )。 A) n=0; do {++n;} while (n<=0); B) n=0; while (1) { n++;} C) n=10; while (n); {n--;} D) for(n=0,i=1; ; i++) n+=i; 22.有以下程序: #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) { default: c+=k; case 2: c++;break; case 4: c+=2;break; } printf("%dn",c); } 程序运行后的输出结果是( C )。 A) 7 B) 5 C) 3 D) 9 23.有以下程序: #include 21 / 69 int f( int x,int y) { return((y-x)*x); } main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%dn",d); } 程序运行后的输出结果是( D )。 A) 7 B) 10 C) 8 D) 9 24.若有定义语句:double a, *p=&a ; 以下叙述中错误的是 ( A )。 A) 定义语句中的*号是一个间址运算符 B) 定义语句中的*号是一个说明符 C) 定义语句中的p只能存放double类型变量的地址 D) 定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p 25.若有定义语句:double x, y,*px,*py; 执行了px=&x; py =&y;之后,正确的输入语句是( A )。 A) scanf("%lf %le", px, py); B) scanf("%f %f" &x, &y); C) scanf("%f %f", x, y); D) scanf("%lf %lf",x, y); 26.以下定义数组的语句中错误的是( B )。 A) int num[][3]={ {1,2},3,4,5,6 }; B) int num[2][4]= { {1,2},{3,4},{5,6} }; C) int num[]={ 1,2,3,4,5,6 }; D) int num[][4]= {1,2,3,4,5,6}; 27.有以下程序: #include void fun( int a, int b ) { int t; t=a; a=b; b=t; } main() 22 / 69 { int c[10]={1,2,3,4,5,6,7,8,9,0}, i; for (i=0; i<10; i+=2) fun(c[i], c[i+1]); for (i=0;i<10; i++) printf("%d,", c[i]); printf("n"); } 程序的运行结果是( A )。 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, 28.有以下程序: #include main() { int x[3][2]={0}, i; for(i=0; i<3; i++) scanf("%d",x[i]); printf("%3d%3d%3dn",x[0][0],x[0][1],x[1][0]); } 若运行时输入:2 4 6<回车>,则输出结果为( A )。 A) 2 0 4 B) 2 0 0 C) 2 4 0 D) 2 4 6 29.有以下程序段: #include int j; float y; char name[50]; scanf("%2d%f%s", &j, &y, name); 当执行上述程序段,从键盘上输入55566 7777abc 后,y的值为 ( A )。 A) 566.0 B) 55566.0 C) 7777.0 D) 566777.0 30.下列语句组中,正确的是( A )。 A) char *s;s="Olympic"; B) char s[7];s="Olympic"; C) char *s;s={"Olympic"}; D) char s[7];s= {"Olympic"}; 31.有以下函数: int fun(char *s) { char *t=s; 23 / 69 while(*t++); return(t-s); } 该函数的功能是( C ) A) 计算s所指字符串的长度 B) 比较两个字符 串的大小 C) 计算s所指字符串占用内存字节的个数 D) 将s所指字符串 复制到字符串t中 32.有以下程序(注:字符a的ASCII码值为97) : #include main() { char *s ={ "abc" }; do { printf ("%d", *s%10); ++s; } while ( *s ); } 程序运行后的输出结果是( A )。 A) 789 B) abc C) 7890 D) 979899 33.设有如下函数定义: #include int fun( int k ) { if (k<1) return 0; else if (k==1) return 1; else return fun(k-1)+1; } 若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是 ( B )。 A) 2 B) 3 C) 4 D) 5 34.有以下程序: #include int f(int n); main() { int a=3,s; 24 / 69 s=f(a);s=s+f(a); printf("%dn",s); } int f(int n) { static int a=1; n+=a++; return n; } 程序运行后的输出结果是( A )。 A) 9 B) 8 C) 7 D) 10 35.设有定义: struct complex { int real,unreal;} data1={1,8},data2; 则以下赋值语句中错误的是( A )。 A) data2=(2,6); B) data2=data1; C) =; D) =; 36.有以下程序: # include struct S{int n; int a[20]; }; void f(struct S *p) { int i,j,t; for (i=0; i n-1; i++) for (j=i+1; j n; j++) if (p->a[i] > p->a[j]) { t= p->a[i]; p->a[i] = p->a[j]; p->a[j] = t; } } main() { int i; struct S s={10, {2,3,1,6,8,7,5,4,10,9}}; f(&s); for (i=0; i } 程序运行后的输出结果是( C )。 A) 2,3,1,6,8,7,5,4,10,9, B) 10,9,8,7,6,5,4,3,2,1, 25 / 69 C) 1,2,3,4,5,6,7,8,9,10, D) 10,9,8,7,6,1,2,3,4,5, 37.有以下程序: #include #include typedef struct { char name[9]; char sex; int score[2]; } STU; STU f (STU a) { STU b={"Zhao", 'm', 85, 90}; int i; strcpy( , ); = ; for ( i=0; i<2; i++ ) [i] = [i]; return a; } main() { STU c= { "Qian", 'f', 95, 92 }, d; d = f(c); printf ("%s,%c,%d,%d, ", , , [0], [1]); printf ("%s,%c,%d,%dn", , , [0], [1]); } 程序运行后的输出结果是( A )。 A) Zhao,m,85,90, Qian,f,95,92 B) Zhao,m,85,90, Zhao, m,85,90 C) Qian,f,95,92, Qian,f,95,92 D) Qian,f,95,92, Zhao, m,85,90 38.以下关于宏的叙述中正确的是( A )。 A) 宏替换没有数据类型限制 B) 宏定义必须位于源程序中 所有语句之前 C) 宏名必须用大写字母表示 D) 宏调用比函数调用耗费时 26 / 69 间 39.设有以下语句: int a=1, b=2, c; c=a^(b<<2) ; 执行后,c的值为( B )。 A) 7 B) 9 C) 8 D) 6 40.有以下程序: #include main() { FILE *fp; int a[10]={1,2,3}, i, n; fp = fopen("", "w"); for (i=0; i<3; i++) fprintf(fp, "%d", a[i]); fprintf(fp, "n"); fclose(fp); fp = fopen("", "r"); fscanf(fp, "%d", &n); fclose(fp); printf("%dn", n); } 程序的运行结果是( D )。 A) 321 B) 12300 C) 1 D) 123 11.计算机高级语言程序的运行方法有编译执行和解释执行两种, 以下叙述中正确的是( A )。 A) C语言程序仅可以编译执行 B) C语 言程序仅可以解释执行 C) C语言程序既可以编译执行又可以解释执行 D) 以上说 法都不对 12.以下叙述中错误的是( A )。 A) 用户所定义的标识符允许使用关键字 B) 用户所定义的标识符应尽量做到"见名识意" 27 / 69 C) 用户所定义的标识符中,大、小写字母代表不同标识 D) 用户所定义的标识符必须以字母或下划线开头 13.若有说明语句:char c='72';则变量c( A )。 A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,c的值不确定 14.现有定义int a;double b;float c;char k;,则表达式a/b+c-k 值的类型为( B )。 A) int B) double C) float D) char 15.以下定义语句中正确的是( B )。 A) int a=b=0; B) char A=65+1,b=′b′; C) float a=1,*b=&a,*c=&b; D) double a=0.0;b=1.1 16.若在定义语句int a,b,c,*p=&c;之后,接着执行以下选项 中的语句,则能正确执行的语句是( D )。 A) scanf("%d",a,b,c); B) scanf("%d%d%d",a,b, c); C) scanf("%d", &p); D) scanf("%d", p); 17.以下程序的运行结果是( B )。 int k=0; void fun(int m) { m+=k;k+=m;printf("m=%d k=%d ",m,k++);} main() { int i=4; fun(i++); printf("i=%d k=%dn",i,k); } A) m=4 k=5 i=5 k=5 B) m=4 k=4 i=5 k=5 C) m=4 k=4 i=4 k=5 D) m=4 k=5 i=4 k=5 18.在执行下述程序时,若从键盘输入6和8,则结果为( B )。 main() 28 / 69 { int a,b,s; scanf("%d%d",&a,&b); s=a ; if(a s=b; s*=s; printf("%d",s); } A) 36 B) 64 C) 48 D) 以上都不对 19.有以下程序: main() { int k=5,n=0; while(k>0) { switch(k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } k--; } printf("%dn",n); } 程序运行后的输出结果是( D )。 A) 0 B) 4 C) 6 D) 7 20.有以下程序: #include main() { int x; scanf("%d",& x); if(x<=3); else if(x!=10) printf("%dn",x); } 程序运行时,输入的值在哪个范围才会有输出结果( B )。 A) 不等于10的整数 B) 大于3且不等10的整数 29 / 69 C) 大于3或等于10的整数 D) 小于3的整数 21.有以下程序: #include main(){ int a=1,b=0; printf("%d,",b=a+b); printf("%dn",a=2*b)} 程序运行后的输出结果是( D )。 A) 0,0 B) 1,0 C) 3,2 D) 1,2 22.有以下程序: main(){ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}, {13,14,15,16}},i,j; for(i=0;i<4;i++) { for(j=0;j<=i;j++)printf("%4c", ' '); for(j= ;j<4;j++)printf("%4d",num[i][j]); printf("n"); } } 若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的语句是( C )。 A) i-1 B) i+1 C) i D) 4-i 23.以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同 的是( A )。 A) if((a>b)&&(b>c))k=1; else k=0; B) if((a>b)‖(b>c))k=1; else k=0; C) if(a<=b)k=0; 30 / 69 else if(b<=c)k=1; D) if(a>b)k=1; else if(b>c) k=1; else k=0; 24.有以下程序: void ss(char *s,char t) { while(*s) { if(*s==t)*s=t-a+A; s++; } } main() { char str1[100]="abcddfefdbd",c=d; ss(str1,c); printf("%sn",str1);} 程序运行后的输出结果是( B )。 A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd 25.现有如下程序段: #include "stdio.h" main() { int k[30]={12,324,45,6,768,98,21,34,453,456}; int count=0,i=0; while(k[i]) { if(k[i]%2==0||k[i]%5==0)count++; i++; } printf("%d,%dn",count,i);} 则程序段的输出结果为( D )。 A) 7,8 B) 8,8 C) 7,10 D) 8,10 26.以下程序运行后的输出结果是( D )。 #include void f(char *s,char *t){ char k; k=*s; *s=*t; *t=k; 31 / 69 s++;t--; if(*s)f(s,t); } main(){ char str[10]="welcome",*p; p=str+strlen(str)/2+1; f(p,p-2); printf("%sn",str); } A) eelcomw B) weoclme C) welcome D) emoclew 27.设有如下程序段: int x=2004,y=2008; printf("%dn",(x,y)); 则以下叙述中正确的是(B) A) 输出值为2004 B) 输出值为2008 C)运行时产生出错信息 D)输出语句中格式说明符的个数少于输出 项的个数,不能正确输出 28.有以下程序: #include void fun(char*c,int d){ *c=*c+1;d=d+1; printf("%c,%c,",*c,d); } main(){ char b=a,a=A; fun(&b,a); printf("%c,%cn",b,a); } 程序运行后的输出结果是( A )。 A) b,B,b,A B) b,B,B,A C) a,B,B,a D) a,B,a,B 29.有以下程序: #include #include main(){ char a[10]="abcd"; 32 / 69 printf("%d,%dn",strlen(a),sizeof(a)); } 程序运行后的输出结果是( B )。 A) 7,4 B) 4,10 C) 8,8 D) 10,10 30.若有定义int a[2][3];,则对a数组的第i行第j列(假设i,j已正确 说明并赋值)元素值的正确引用为( A )。 A) *(*(a+i)+j) B) (a+i)[j] C) *(a+i+j) D) *(a+i)+j 31.有以下程序: #include main() { char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1);putchar(c2); printf("%c%cn",c5,c6); } 程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车> 则输出结果是( D ) A) 1267 B) 1256 C) 1278 D) 1245 32.以下程序的运行结果是( D )。 #include int a=1; int f(int c){ static int a=2; c=c+1; return(a++)+c;} main(){ int i,k=0; for(i=0;i<2;i++){int a=3;k+=f(a);} 33 / 69 k+=a; printf("%dn",k); } A) 17 B) 16 C) 15 D) 14 33.设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语 句中与n2=n1;语句等价的是( A )。 A) *p=*q; B) p=q; C) *p=&n1; D) p= *q; 34.设有如下说明: typedef struct ST { long a; int b; char c[2]; }NEW; 以下说法正确的是( B )。 A) NEW是一个结构体变量 B) NEW是一个结构体类型 C) ST是一个结构体类型 D) 以 上说明形式非法 35.有以下程序: #include #include typedef struct{ char name[9]; char sex; float score[2]; }STU; void f(STU a) { STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(,); =; for(i=0;i<2;i++) [i]=[i]; } main() { STU c={"Qian",' f ',95.0,92.0}; 34 / 69 f(c); printf("%s,%c,%2.0f,%2.0fn",,,[0], [1]); } 程序的运行结果是( A )。 A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90 36.有以下程序: #include #define N 4 void fun(int a[][N],int b[]){ int i; for(i=0;i } main(){ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i; fun(x,y); for(i=0;i printf("n"); } 程序的运行结果是( B )。 A) 1,2,3,4, B) 1,0,7,0, C) 1,4,5,9, D) 3,4,8,10, 37.有以下程序: #include int fun(int x,int y){ if(x!=y)return((x+y)/2); else return(x); } main(){ int a=4,b=5,c=6; printf("%dn",fun(2*a,fun(b,c))); } 程序运行后的输出结果是( B )。 A) 3 B) 6 C) 8 D) 12 38.若x是int型变量,且有下面的程序片段: for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%dn"),x); 35 / 69
版权声明:本文标题:2022年3月全国计算机等级二级C语言考试题库及答案(超强) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711047945a585810.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论