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 必须放在C程序的开头

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 则正确的输入

格式是(以下代表空格,代表回车)( D )。

A) 12a34 b B) 12 a 34] b

C) 12,a,34,b D) 12a34b

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; in-1; i++)

for (j=i+1; jn; 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


本文标签: 程序 语句 输出 结果 定义