2020年3月全国计算机等级考试二级C语言题库及答案_第1页
2020年3月全国计算机等级考试二级C语言题库及答案_第2页
2020年3月全国计算机等级考试二级C语言题库及答案_第3页
2020年3月全国计算机等级考试二级C语言题库及答案_第4页
2020年3月全国计算机等级考试二级C语言题库及答案_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年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)

物理设计阶段

9.有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为(D)。

A)并B)自然连接C)笛卡尔积D)交

10.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,

1/57

身份证号),课程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.0Xa234.5e0B)028.5e-3-0xf

C).1774e1.50abcD)0x8A10,0003.e5

13.以下选项中不合法的标识符是(A)。

A)&aB)FORC)printD)00

14.若有代数式(其中e仅代表自然对数的底数,不是变量),则以

下能够正确表示该代数式的C语言表达式是(A)。

A)sqrt(fabs(pow(n,x)+exp(x)))B)sqrt(fabs(pow(n,x)+

pow(x,e)))

C)sqrt(abs(n^x+e^x))D)sqrt(fabs(pow(x,n)+

exp(x)))

15.若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定

的赋值语句是(B)

A)i=(a+k)<=(i+k);B)i=a%11;C)a=a++,i++

D)i=!a;

16.有以下程序:

#include<stdio.h>

main()

{ints,t,A=10;doubleB=6;

s=sizeof(A);t=sizeof(B);

printf("%d,%d\n",s,t);

}

在VC6.0平台上编译运行,程序运行后的输出结果是(D)。

A)10,6B)4,4C)2,4D)4,8

17.有以下程序:

#include<stdio.h>

main()

2/57

{chara,b,c,d;

scanf("%c%c",&a,&b);

c=getchar();d=getchar();

printf("%c%c%c%c\n",a,b,c,d);

}

当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回

车,注意:回车也是一个字符)

12<CR>

34<CR>

则输出结果是(D)。

A)12

34

B)12

C)1234

D)12

3

18.下关于逻辑运算符两侧运算对象的叙述中正确的是(A)。

A)可以是任意合法的表达式B)只能是整数0或非0整数

C)可以是结构体类型的数据D)只能是整数0或1

19.有以下程序:

#include<stdio.h>

main()

{inta=0,b=0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

printf("%d,%d,%d,%d\n",a,b,c,d);

}

程序输出(C)。

A)1,1,2,0B)0,0,0,3C)编译有错D)

0,1,2,0

20.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

3/57

case2:a++;b++;break;

case3:a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

程序的运行结果是(B)。

A)a=2,b=2B)a=2,b=1C)a=1,b=1D)a

=1,b=0

21.以下程序段中的变量已正确定义:

for(i=0;i<4;i++,i++)

for(k=1;k<3;k++);printf("*");

程序段的输出结果是(C)。

A)**B)****C)*D)********

22.有以下程序段:

#include<stdio.h>

inti,n;

for(i=0;i<8;i++)

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

printf("%d\n",n);

}

以下关于程序段执行情况的叙述,正确的是(D)。

A)for循环语句固定执行8次B)当产生的随

机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作D)当产生的随机

数n为0时结束程序运行

23.有以下程序:

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

4/57

m=f(f(f(n)));printf("%d\n",m);

}

intf(intx)

{returnx*2;}

程序运行后的输出结果是(A)。

A)8B)2C)4D)1

24.以下叙述中错误的是(A)。

A)可以给指针变量赋一个整数作为地址值

B)函数可以返回地址值

C)改变函数形参的值,不会改变对应实参的值

D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

25.设已有定义:floatx;,则以下对指针变量p进行定义且赋初值的

语句中正确的是(B)。

A)int*p=(float)x;B)float*p=&x;C)floatp=

&x;D)float*p=1024;

26.以下数组定义中错误的是(D)。

A)intx[2][3]={1,2,3,4,5,6};B)intx[][3]={0};

C)intx[][3]={{1,2,3},{4,5,6}};D)intx[2][3]={{1,2},

{3,4},{5,6}};

27.有以下程序:

#include<stdio.h>

voidfun(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n

-1-i]=t;}

}

main()

{intk[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");

}

程序的运行结果是(A)。

A)321678B)876543C)1098765D)345678

28.有以下程序:

#include<stdio.h>

#defineN4

5/57

voidfun(inta[][N],intb[])

{inti;

for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];

}

main()

{intx[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<N;i++)printf("%d,",y[i]);printf("\n");

}

程序运行后的输出结果是(A)。

A)-3,-1,1,3,B)-12,-3,0,0,C)0,1,2,3,D)-

3,-3,-3,-3,

29.设有定义:chars[81];inti=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.设有定义:charp[]={'1','2','3'},*q=p;,以下不能

计算出一个char型数据所占字节数的表达式是(A)。

A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)

sizeof(p[0])

31.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20]={"One*World","One*Dream!"},*p=str[1];

printf("%d,",strlen(p));printf("%s\n",p);

}

程序运行后的输出结果是(A)。

A)10,One*Dream!B)9,One*Dream!C)9,One*World

D)10,One*World

32.有以下程序:

#include<stdio.h>

main()

{chars[]="012xy\08s34f4w2";

inti,n=0;

for(i=0;s[i]!=0;i++)

6/57

if(s[i]>='0'&&s[i]<='9')n++;

printf("%d\n",n);

}

程序运行后的输出结果是(B)。

A)0B)3C)7D)8

33.有以下程序:

#include<stdio.h>

fun(intx,inty)

{staticintm=0,i=2;

i+=m+1;m=i+x+y;returnm;

}

main()

{intj=1,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

}

执行后的输出结果是(A)。

A)5,11B)5,5C)11,11D)11,5

34.在C语言中,只有在使用时才占用内存单元的变量,其存储类

型是(C)。

A)auto和staticB)extern和registerC)auto和register

D)static和register

35.下面结构体的定义语句中,错误的是(A)。

A)structord{intx;inty;intz;}structorda;

B)structord{intx;inty;intz;};structorda;

C)structord{intx;inty;intz;}a;

D)struct{intx;inty;intz;}a;

36.有以下程序:

#include<stdio.h>

typedefstruct{intb,p;}A;

voidf(Ac)/*注意:c是结构变量名*/

{intj;

c.b+=1;c.p+=2;

}

main()

{inti;

Aa={1,2};

7/57

f(a);

printf("%d,%d\n",a.b,a.p);

}

程序运行后的输出结果是(B)。

A)2,4B)1,2C)1,4D)2,3

37.以下叙述中正确的是(A)。

A)在C语言中,预处理命令行都以"#"开头B)预处理命令行必须位

于C源程序的起始位置C)#include<stdio.h>必须放在C程序的开头

D)C语言的预处理不能实现宏定义和条件编译的功能

38.有以下程序:

#include<stdio.h>

#include<stdlib.h>

intfun(intn)

{int*p;

p=(int*)malloc(sizeof(int));

*p=n;return*p;

}

main()

{inta;

a=fun(10);printf("%d\n",a+fun(10));

}

程序的运行结果是(C)。

A)0B)10C)20D)出错

39.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,c;

c=a>>3;

printf("%d\n",c);

}

程序运行后的输出结果是(B)。

A)16B)1C)32D)0

40.读取二进制文件的函数调用形式为:fread(buffer,size,count,

fp);,其中buffer代表的是(D)。

A)一个内存块的字节数B)一个整型变量,代表

待读取的数据的字节数

C)一个文件指针,指向待读取的文件D)一个内存块的首地址,代

8/57

表读入数据存放的地址

11.下列叙述中错误的是(B)。

A)C程序可以由多个程序文件组成B)一个C语言程序只

能实现一种算法

C)C程序可以由一个或多个函数组成D)一个C函数可以单独

作为一个C程序文件存在

12.以下选项中,能用作数据常量的是(A)。

A)115LB)0118C)1.5e1.5D)o115

13.按照C语言规定的用户标识符命名规则,不能出现在标识符中

的是(D)。

A)大写字母B)下划线C)数字字符D)连接

14.设变量已正确定义并赋值,以下正确的表达式是(A)。

A)x=y+z+5,++yB)int(15.8%5)C)x=y*5=x

+zD)x=25%5.0

15.设有定义:intx=2;,以下表达式中,值不为6的是(A)。

A)2*x,x+=2B)x++,2*xC)x*=(1+x)D)x*

=x+1

16.有以下程序:

#include<stdio.h>

main()

{intx,y,z;

x=y=1;

z=x++,y++,++y;

printf("%d,%d,%d\n",x,y,z);

}

程序运行后的输出结果是(C)。

A)2,3,3B)2,3,2C)2,3,1D)2,2,1

17.有以下程序:

#include<stdio.h>

main()

{charc1,c2;

c1='A'+'8'-'4';

c2='A'+'8'-'5';

printf("%c,%d\n",c1,c2);

}

已知字母A的ASCII码为65,程序运行后的输出结果是(A)。

A)E,68B)D,69C)E,DD)输出无定值

18.若有定义intx,y;并已正确给变量赋值,则以下选项中与

9/57

表达式(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<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

printf("%d\n",y);

}

程序运行后的输出结果是(D)。

A)3B)2C)1D)0

20.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确

的switch语句是(A)。

A)switch(a+b)

{case1:printf("*\n");

case2+1:printf("**\n");}

B)switch((int)x);

{case1:printf("*\n");

case2:printf("**\n");}

C)switch(x)

{case1.0:printf("*\n");

case2.0:printf("**\n");}

D)switch(a+b)

{case1:printf("*\n");

casec:printf("**\n");}

21.有以下程序:

#include<stdio.h>

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的运行结果是(A)。

A)852B)963C)741D)875421

10/57

22.有以下程序:

#include<stdio.h>

main()

{inti,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=%d\n",m);

}

程序运行后的输出结果是(C)。

A)m=4B)m=2C)m=6D)m=5

23.有以下程序:

#include<stdio.h>

intfun(intx,inty)

{if(x!=y)return((x+y)/2);

elsereturn(x);

}

main()

{inta=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));(A)

}

A)6B)3C)8D)12

24.有以下程序:

#include<stdio.h>

intadd(inta,intb){return(a+b);}

main()

{intk,(*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<stdio.h>

main()

{intn,*p=NULL;

11/57

*p=&n;

printf("Inputn:");scanf("%d",&p);printf("output

n:");printf("%d\n",p);

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错

误,以下语句正确的是(A)

A)intn,*p=NULL;B)*p=&n;C)scanf("%d",

&p)D)printf("%d\n",p);

26.下列定义数组的语句中,正确的是(A)。

A)#defineN10intx[N];B)intN=10;int

x[N];

C)intx[0..10];D)intx[];

27.有以下程序:

#include<stdio.h>

main()

{inta[]={2,3,5,4},i;

for(i=0;i<4;i++)

switch(i%2)

{case0:switch(a[i]%2)

{case0:a[i]++;break;

case1:a[i]--;

}break;

case1:a[i]=0;

}

for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");

}

程序运行后的输出结果是(D)。

A)0304B)2050C)3344D)3040

28.有以下程序:

#include<stdio.h>

main()

{intb[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("%d\n",t);

}

程序运行后的输出结果是(B)。

A)3B)4C)1D)9

29.以下语句中存在语法错误的是(A)。

12/57

A)charss[6][20];ss[1]="right?";B)charss()[20]

={"right?"};

C)char*ss[6];ss[1]="right?";D)char*ss()

={"right?"};

30.以下不能将s所指字符串正确复制到t所指存储空间的是

(A)

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<stdio.h>

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main()

{char*s1="abc",*s2="123";

swap(s1,s2);printf("%s,%s\n",s1,s2);

}

程序执行后的输出结果是(D)。

A)321,cbaB)abc,123C)123,abcD)1bc,

a23

32.有以下函数:

intfun(char*x,char*y)

{intn=0;

while((*x==*y)&&*x!='\0'){x++;y++;n+

+;}

returnn;

}

函数的功能是(C)。

A)将y所指字符串赋给x所指存储空间B)查找x和y所

指字符串中是否有'\0'

C)统计x和y所指字符串中最前面连续相同的字符个数D)统计x和y

所指字符串中相同的字符个数

33.有以下程序:

#include<stdio.h>

intfun()

{staticintx=1;

13/57

x*=2;

returnx;

}

main()

{inti,s=1;

for(i=1;i<=3;i++)s*=fun();

printf("%d\n",s);

}

程序运行后的输出结果是(B)。

A)10B)30C)0D)64

34.在一个C源程序文件中所定义的全局变量,其作用域为

(A)。

A)由具体定义位置和extern说明来决定范围B)所在程序

的全部范围

C)所在函数的全部范围D)所在

文件的全部范围

35.以下叙述中错误的是(A)。

A)可以通过typedef增加新的类型

B)可以用typedef将已存在的类型用一个新的名字来代表

C)用typedef定义新的类型名后,原有类型名仍有效

D)用typedef可以为各种类型起别名,但不能为变量起别名

36.有以下程序:

#include<stdio.h>

structS

{inta,b;}data[2]={10,100,20,200};

main()

{structSp=data[1];

printf("%d\n",++(p.a));

}

程序运行后的输出结果是(D)。

A)10B)11C)20D)21

37.有以下程序:

#include<stdio.h>

#definePT3.5;

#defineS(x)PT*x*x;

main()

{inta=1,b=2;printf("%4.1f\n",S(a+b));}

程序运行后的输出结果是(C)。

A)7.5B)31.5C)程序有错无输出结果D)

14/57

14.0

38.有以下程序:

#include<stdio.h>

main()

{unsignedchara=2,b=4,c=5,d;

d=a|b;d&=c;printf("%d\n",d);}

程序运行后的输出结果是(B)。

A)3B)4C)5D)6

39.有以下程序:

#include<stdio.h>

#include<stdlib.h>

main()

{int*a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b;

printf("%d,%d,%d\n",*a,*b,*c);

}

程序运行后的输出结果是(D)。

A)1,1,3B)2,2,3C)1,2,3D)3,3,3

40.以下叙述中正确的是(A)。

A)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致

数据丢失

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数

据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再

打开,才能读到第1个数据

D)C语言中的文件是流式文件,因此只能顺序存取数据

11.以下叙述中错误的是(A)。

A)使用三种基本结构构成的程序只能解决简单问题

B)结构化程序由顺序、分支、循环三种基本结构组成

C)C语言是一种结构化程序设计语言

D)结构化程序设计提倡模块化的设计方法

12.以下四个程序中,完全正确的是(B)。

A)#include<stdio.h>

main();

{/*/programming/*/

printf("programming!\n");}

B)#include<stdio.h>

15/57

main()

{/*programming*/

printf("programming!\n");}

C)#include<stdio.h>

main()

{/*/*programming*/*/

printf("programming!\n");}

D)include<stdio.h>

main()

{/*programming*/

printf("programming!\n");}

13.C源程序中不能表示的数制是(D)。

A)十六进制B)八进制C)十进制D)二

进制

14.以下选项中,能用作用户标识符的是(A)。

A)0B)88C)voidD)unsigned

15.若有定义语句:intx=10;,则表达式x-=x+x的值为

(C)。

A)0B)-20C)-10D)10

16.有以下程序:

#include<stdio.h>

main()

{inta=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2*b);(A)

A)1,2B)1,0C)3,2D)0,0

17.有以下程序:

#include<stdio.h>

main()

{inta1,a2;charc1,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则正确的输入

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

A)12a34b<CR>B)12a34]b<CR>

C)12,a,34,b<CR>D)12a34b<CR>

18.若变量已正确定义,在if(W)printf("%d\n",k);中,以下

16/57

不可替代W的是(A)。

A)a<>b+cB)ch=getchar()C)a==b+cD)

a++

19.有以下程序段:

#include<stdio.h>

inta,b,c;

a=10;b=50;c=30;

if(a>b)a=b,b=c;c=a;

printf("a=%db=%dc=%d\n",a,b,c);

程序的输出结果是(B)。

A)a=10b=50c=30B)a=10b=50c=10C)a=10b=30c=

10D)a=50b=30c=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<stdio.h>

main()

{intc=0,k;

for(k=1;k<3;k++)

switch(k)

{default:c+=k;

case2:c++;break;

case4:c+=2;break;

}

printf("%d\n",c);

}

程序运行后的输出结果是(C)。

A)7B)5C)3D)9

17/57

23.有以下程序:

#include<stdio.h>

intf(intx,inty)

{return((y-x)*x);}

main()

{inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf("%d\n",d);

}

程序运行后的输出结果是(D)。

A)7B)10C)8D)9

24.若有定义语句:doublea,*p=&a;以下叙述中错误的

是(A)。

A)定义语句中的*号是一个间址运算符

B)定义语句中的*号是一个说明符

C)定义语句中的p只能存放double类型变量的地址

D)定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p

25.若有定义语句:doublex,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)intnum[][3]={{1,2},3,4,5,6};B)intnum[2][4]=

{{1,2},{3,4},{5,6}};

C)intnum[]={1,2,3,4,5,6};D)intnum[][4]=

{1,2,3,4,5,6};

27.有以下程序:

#include<stdio.h>

voidfun(inta,intb)

{intt;

t=a;a=b;b=t;

}

main()

{intc[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)。

18/57

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<stdio.h>

main()

{intx[3][2]={0},i;

for(i=0;i<3;i++)scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

}

若运行时输入:246<回车>,则输出结果为(A)。

A)204B)200C)240D)2

46

29.有以下程序段:

#include<stdio.h>

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

当执行上述程序段,从键盘上输入555667777abc后,y的值为

(A)。

A)566.0B)55566.0C)7777.0D)566777.0

30.下列语句组中,正确的是(A)。

A)char*s;s="Olympic";B)chars[7];s="Olympic";

C)char*s;s={"Olympic"};D)chars[7];s=

{"Olympic"};

31.有以下函数:

intfun(char*s)

{char*t=s;

while(*t++);

return(t-s);

}

该函数的功能是(C)

A)计算s所指字符串的长度B)比较两个字符

串的大小

C)计算s所指字符串占用内存字节的个数D)将s所指字符串

复制到字符串t中

32.有以下程序(注:字符a的ASCII码值为97):

#include<stdio.h>

main()

{char*s={"abc"};

do

19/57

{printf("%d",*s%10);++s;}

while(*s);

}

程序运行后的输出结果是(A)。

A)789B)abcC)7890D)979899

33.设有如下函数定义:

#include<stdio.h>

intfun(intk)

{if(k<1)return0;

elseif(k==1)return1;

elsereturnfun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

(B)。

A)2B)3C)4D)5

34.有以下程序:

#include<stdio.h>

intf(intn);

main()

{inta=3,s;

s=f(a);s=s+f(a);printf("%d\n",s);

}

intf(intn)

{staticinta=1;

n+=a++;

returnn;

}

程序运行后的输出结果是(A)。

A)9B)8C)7D)10

35.设有定义:

structcomplex

{intreal,unreal;}data1={1,8},data2;

则以下赋值语句中错误的是(A)。

A)data2=(2,6);B)data2=data1;

C)data2.real=data1.real;D)data2.real=data1.unreal;

36.有以下程序:

#include<stdio.h>

structS{intn;inta[20];};

voidf(structS*p)

20/57

{inti,j,t;

for(i=0;i<p->n-1;i++)

for(j=i+1;j<p->n;j++)

if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=

p->a[j];p->a[j]=t;}

}

main()

{inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};

f(&s);

for(i=0;i<s.n;i++)printf("%d,",s.a[i]);

}

程序运行后的输出结果是(C)。

A)2,3,1,6,8,7,5,4,10,9,B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,4,5,6,7,8,9,10,D)10,9,8,7,6,1,2,3,4,5,

37.有以下程序:

#include<stdio.h>

#include<string.h>

typedefstruct{charname[9];charsex;intscore[2];}

STU;

STUf(STUa)

{STUb={"Zhao",'m',85,90};

inti;

strcpy(,);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main()

{STUc={"Qian",'f',95,92},d;

d=f(c);

printf("%s,%c,%d,%d,",,d.sex,d.score[0],

d.score[1]);

printf("%s,%c,%d,%d\n",,c.sex,c.score[0],

c.score[1]);

}

程序运行后的输出结果是(A)。

A)Zhao,m,85,90,Qian,f,95,92B)Zhao,m,85,90,Zhao,

m,85,90

C)Qian,f,95,92,Qian,f,95,92D)Qian,f,95,92,Zhao,

21/57

m,85,90

38.以下关于宏的叙述中正确的是(A)。

A)宏替换没有数据类型限制B)宏定义必须位于源程序中

所有语句之前

C)宏名必须用大写字母表示D)宏调用比函数调用耗费时

39.设有以下语句:

inta=1,b=2,c;

c=a^(b<<2);

执行后,c的值为(B)。

A)7B)9C)8D)6

40.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3},i,n;

fp=fopen("d1.dat","w");

for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);

fprintf(fp,"\n");

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d",&n);

fclose(fp);

printf("%d\n",n);

}

程序的运行结果是(D)。

A)321B)12300C)1D)123

11.计算机高级语言程序的运行方法有编译执行和解释执行两种,

以下叙述中正确的是(A)。

A)C语言程序仅可以编译执行B)C语

言程序仅可以解释执行

C)C语言程序既可以编译执行又可以解释执行D)以上说

法都不对

12.以下叙述中错误的是(A)。

A)用户所定义的标识符允许使用关键字

B)用户所定义的标识符应尽量做到"见名识意"

C)用户所定义的标识符中,大、小写字母代表不同标识

D)用户所定义的标识符必须以字母或下划线开头

13.若有说明语句:charc='\72';则变量c(A)。

22/57

A)包含1个字符B)包含2个字符C)包含3个字符D)

说明不合法,c的值不确定

14.现有定义inta;doubleb;floatc;chark;,则表达式a/b+c-k

值的类型为(B)。

A)intB)doubleC)floatD)char

15.以下定义语句中正确的是(B)。

A)inta=b=0;B)charA=65+1,b=′

b′;

C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1

16.若在定义语句inta,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)。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

A)m=4k=5i=5k=5B)m=4k=4i=5

k=5

C)m=4k=4i=4k=5D)m=4k=5i=4

k=5

18.在执行下述程序时,若从键盘输入6和8,则结果为(B)。

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a<b)

s=b;

s*=s;

printf("%d",s);}

A)36B)64C)48D)以上都不对

19.有以下程序:

main()

{intk=5,n=0;

23/57

while(k>0){switch(k){

default:break;

case1:n+=k;

case2:

case3:n+=k;

}

k--;

}

printf("%d\n",n);

}

程序运行后的输出结果是(D)。

A)0B)4C)6D)7

20.有以下程序:

#include<stdio.h>

main(){intx;

scanf("%d",&x);

if(x<=3);else

if(x!=10)printf("%d\n",x);

}

程序运行时,输入的值在哪个范围才会有输出结果(B)。

A)不等于10的整数B)大于3且不等10的整数

C)大于3或等于10的整数D)小于3的整数

21.有以下程序:

#include<stdio.h>

main(){inta=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2*b)}

程序运行后的输出结果是(D)。

A)0,0B)1,0C)3,2D)1,2

22.有以下程序:

main(){intnum[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");

}

}

若要按以下形式输出数组右上半三角

24/57

1234

678

1112

16

则在程序下划线处应填入的语句是(C)。

A)i-1B)i+1C)iD)4-i

23.以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同

的是(A)。

A)if((a>b)&&(b>c))k=1;

elsek=0;

B)if((a>b)‖(b>c))k=1;

elsek=0;

C)if(a<=b)k=0;

elseif(b<=c)k=1;

D)if(a>b)k=1;

elseif(b>c)k=1;

elsek=0;

24.有以下程序:

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-a+A;

s++;}}

main()

{charstr1[100]="abcddfefdbd",c=d;

ss(str1,c);printf("%s\n",str1);}

程序运行后的输出结果是(B)。

A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbA

D)Abcddfefdbd

25.现有如下程序段:

#include"stdio.h"

main()

{intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0||k[i]%5==0)count++;

i++;}

printf("%d,%d\n",count,i);}

则程序段的输出结果为(D)。

A)7,8B)8,8C)7,10D)8,10

25/57

26.以下程序运行后的输出结果是(D)。

#include<string.h>

voidf(char*s,char*t){chark;

k=*s;

*s=*t;

*t=k;

s++;t--;

if(*s)f(s,t);

}

main(){charstr[10]="welcome",*p;

p=str+strlen(str)/2+1;

f(p,p-2);

printf("%s\n",str);

}

A)eelcomwB)weoclmeC)welcomeD)

emoclew

27.设有如下程序段:

intx=2004,y=2008;

printf("%d\n",(x,y));

则以下叙述中正确的是(B)

A)输出值为2004B)输出值为2008

C)运行时产生出错信息D)输出语句中格式说明符的个数少于输出

项的个数,不能正确输出

28.有以下程序:

#include<stdio.h>

voidfun(char*c,intd){*c=*c+1;d=d+1;

printf("%c,%c,",*c,d);

}

main(){charb=a,a=A;

fun(&b,a);printf("%c,%c\n",b,a);

}

程序运行后的输出结果是(A)。

A)b,B,b,AB)b,B,B,AC)a,B,B,aD)

a,B,a,B

29.有以下程序:

#include<stdio.h>

#include<string.h>

main(){chara[10]="abcd";

printf("%d,%d\n",strlen(a),sizeof(a));

26/57

}

程序运行后的输出结果是(B)。

A)7,4B)4,10C)8,8D)10,10

30.若有定义inta[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<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是(D)

A)1267B)1256C)1278D)1245

32.以下程序的运行结果是(D)。

#include<stdio.h>

inta=1;

intf(intc){staticinta=2;

c=c+1;

return(a++)+c;}

main(){inti,k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论