计算机二级C语言测试题含答案.docx

上传人:b****5 文档编号:3430918 上传时间:2022-11-23 格式:DOCX 页数:21 大小:35.75KB
下载 相关 举报
计算机二级C语言测试题含答案.docx_第1页
第1页 / 共21页
计算机二级C语言测试题含答案.docx_第2页
第2页 / 共21页
计算机二级C语言测试题含答案.docx_第3页
第3页 / 共21页
计算机二级C语言测试题含答案.docx_第4页
第4页 / 共21页
计算机二级C语言测试题含答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

计算机二级C语言测试题含答案.docx

《计算机二级C语言测试题含答案.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言测试题含答案.docx(21页珍藏版)》请在冰豆网上搜索。

计算机二级C语言测试题含答案.docx

计算机二级C语言测试题含答案

(第一章)

1.以下关于算法的描述不正确的是__________。

A.任何一个问题,它的实现算法是唯一的

B.描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等

C.算法的最终实现是计算机程序

D.正确性和清晰易懂性是一个好算法的基本条件

2.下面是一个加法程序,指出存在的逻辑错误和语法错误。

/*求整数a和b的和*/

main()

{

inta,b;

a=8;

b=2000;

print("%d\n",a-b);

}

3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。

A.mainB.MAINC.nameD.function

4.以下叙述不正确的是__________。

A.C程序书写格式规定,一行内只能写一个语句

B.main()函数后面有一对花括号,花括号内的部分称为函数体

C.一个C程序必须有main()函数

D.C规定函数内的每个语句以分号结束

5.以下各标识符中,合法的用户标识符为_________。

A.A#CB.mysteryC.mainD.ab*

6.已知求解某问题的算法如下:

⑴输入a、b、c三个数。

⑵将a和b比较,较大者放在a中,小者放在b中。

⑶将a和c比较,较大者放在a中,小者放在c中。

⑷将b和c比较,较大者放在b中,小者放在c中。

⑸依次输出a、b、c。

请根据上述算法描述,把算法的功能表达出来。

【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。

7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。

A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。

B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。

C.从main()函数开始,到main()函数结束。

D.从本程序文件的第一个函数开始,到本程序main()函数结束。

8.以下叙述正确的是_________。

A.在C程序中,main()函数必须位于程序的最前面。

B.C程序的每行中只能写一条语句。

C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

D.C语言本身没有输入输出语句。

答案:

1.A

2.语法错误是print,应该为printf;逻辑错误是a-b,应该为a+b。

3.A4.A5.B

6.把任意输入的三个数a、b、c按降序排列的顺序输出。

7.C8.D

C语言测试题(第二章)

1.C语言中的实数可以写成不同表示形式,下列表示形式中正确的是_________。

A.5.4321B.5.43E2.1C.e5.4321D.e6

2.下列程序执行后的结果是_________。

main()

{

intx='f';

printf("%c\n",'A'-'a'+x));

}

3.能正确表示数学描述中0≤a≤10的C语言表达式是________。

A.a>=0&a<=10     B.a>=0||a<=10

C.a>=0&&a<=10      D.0≤a&&a≤10

4.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是________。

A.-3B.9C.-12D.6

5.假设所有变量均为int型,则表达式(a=2,b=5,b+1,a+b)的值是________。

A.7B.8C.6D.2

6.执行下面程序段后,y的结果是________。

intx,y;

x=y=2;

x=x-2&&(y=y+1);

printf("%d",y);

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

7.表达式(int)1.7*2+8/3-3%2的值是_________。

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

答案:

1.A

2.F

3.C

4.C

5.A

6.B

7.B

C语言测试题(第三章)

1.以下程序的输出结果是________。

main()

{

intk=8765;

printf("*%-06d*\n",k);

}

A.输出格式描述符不合法B.*008765*

C.*8765

*D.*-08765*

【答案】C.

2.有程序段如下:

inti;

floatf;

scanf("i=%d,f=%f",&i,&f);

若要求把数值100和765.12分别赋给变量i和f,则正确的输入格式为________。

A.100765.12

B.i=100,f=765.12

C.100,765.12

D.i=100f=765.12

【答案】B

3.有程序如下:

main()

{

inti;

floatx,y;

scanf("%2d%f%*d%f",&i,&x,&y);

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

}

执行该程序时,若按如下形式输入数据,则输出结果是________。

输入数据:

56789

01234

45

A.56,789.000000,45.000000B.56789,123.000000,45.000000

C.56,789.000000,123.000000D.56,789.000000,123445.000000

【答案】A

4.输入字母a时,下列程序的执行结果是________。

#include"stdio.h"

main()

{

charch;

ch=getchar();

(ch>='a'&&ch<='z')?

putchar(ch+'A'-'a'):

putchar(ch);

}

【答案】输出大写字母A

C语言测试题(第四章)

1.下面是由if构成的一个程序段:

if(a

{

if(d==c)

x=1;

}

else

x=2;

该程序段所表示的逻辑关系对应的表达式是________。

A.

B.

C.

D.

2.以下程序的运行结果为________。

main()

{

intx=2,y=-1,z=2;

if(x

if(y<0)z=0;/*第二个if*/

elsez+=1;

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

}

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

3.有程序段如下:

inta=1,b=2,c=3;

if(a>b)

c=a;a=b;b=c;

执行该程序段后,变量a、b、c的值是__________。

A.a=1,b=2,c=3B.a=2,b=3,c=3

C.a=2,b=3,c=1D.a=2,b=3,c=2

4.有程序如下:

#include"stdio.h"

main()

{

intc;

while((c=getchar())!

='\n')

switch(c-'2')

{

case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

printf("\n");

}

若运行该程序时,按如下形式从键盘输入数据,则程序的运行结果为________。

输入数据:

2473

A.668977B.668966

C.66778777D.6688766

5.执行下面的程序段后,a和b的值分别为________。

inta=3,b=5,c;

c=(a>--b)?

a++:

b--;

A.3,2B.3,3C.4,4D.4,5

答案:

1.D

2.B

3.B

4.A

5.B

 

C语言测试题(第五章)

1.有程序段如下:

intk=10;

while(k=0)

k=k-1;

则下面描述中正确的是________。

A.语句“k=k-1;”被执行10次

B.语句“k=k-1;”被执行无限多次

C.语句“k=k-1;”一次也不执行

D.语句“k=k-1;”只执行一次

2.有程序段如下:

intk=10;

do

{

k=k-1;

}while(k>=0);

则下面描述中正确的是________。

A.语句“k=k-1;”执行1次

B.语句“k=k-1;”执行10次

C.语句“k=k-1;”执行11次

D.语句“k=k-1;”执行12次

3.下面是一个程序段:

intx,y;

for(y=1,x=2;y<=50;y++)

{

if(x>=10)break;

x+=5;

}

执行该程序段后,x值为________。

 

A.2B.7C.12D.15

4.有程序段如下:

inti,j;

for(i=5;i;i--)

for(j=1;j<5;j++)

{

......

}

假若内循环体内不存在中止循环的控制语句,则内循环体执行的总次数为________。

A.20B.24C.25D.30

5.下面是一个循环控制程序:

#include"stdio.h"

#include"math.h"

main()

{

floatx,y,z;

scanf("%f,%f",&x,&y);

z=x/y;

while

(1)

{

if(fabs(z)>1.0)

{

x=y;

y=z;

z=x/y;

}

else

break;

}

printf("%5.2f\n",y);

}

运行该程序,按如下形式从键盘输入数据,程序的数出结果是________。

键盘输入数据:

3.6,2.4

A.1.50B.1.60C.2.0D.2.40

答案:

1.C2.C3.C4.A5.B

 

C语言测试题(第六章)

1.若有数组定义intm[][2]={1,3,5,7,9},则以下叙述正确的是________。

A.该定义存在语法错误

B.该定义等价于intm[3][2]={1,3,5,7,9}

C.该定义等价于intm[][2]={{1,3,5},{7,9}}

D.该定义等价于intm[2][2]={1,3,5,7,9}

2.对两个数组a和b进行如下的初始化:

chara[]={'a','b','c','d','e','f'};

charb[]="abcdef";

则以下叙述正确的是________。

A.a数组与b数组完全相同

B.a数组与b数组具有相同的长度

C.a数组和b数组的最后一个字符都是字符串结束标志符'\0'

D.a数组的长度比b数组的长度小

3.下面程序的功能是输出数组s中最大元素的下标。

请在横线上填上适当的内容,使它能得出正确的结果。

main()

{

intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])____________;

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

}

4.下面程序的功能是将一字符串中的小写英文字母全部改成大写形式,然后输出。

请在横线上填上适当的程序代码,使它能输出正确的结果。

#include"stdio.h"

main()

{

inti=0;

charstr[80];

scanf("%s",str);

while(①)

{

if(②)str[i]=str[i]-32;

③;

}

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

}

5.下面程序的功能是将一个字符串str的内容颠倒过来。

请在横线上填上适当的内容,使它能输出正确的结果。

#include"string.h"

main()

{

inti,j,①;

charstr[]="abcdefghijk";

j=strlen(str)②;

for(i=0;i

{

k=str[i];

str[i]=str[j];

str[j]=k;

}

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

}

答案:

1.B

2.D

3.k=p

4.①str[i]!

='\0'或简写成str[i]

②str[i]>='a'&&str[i]<='z'

③i++或++i或i=i+1或i+=1

5.①k②-1。

 

C语言测试题(第七章)

1.以下代码用来对函数进行定义,正确的函数形式是________。

A.doublefun(intx,inty)

{z=x+y;return(z);}

B.fun(intx,y)

{intz;

returnz;}

C.doublefun(intx,inty)

{doublez;

z=x+y;returnz;}

D.fun(x,y)

{intx,y;doublez;

z=x+y;returnz;}

2.有下列函数调用语句,函数fun1()的实参个数是________。

fun1(a+b,(y=9,y*x),fun2(y,n,k));

3.下列函数调用错误的是________。

A.max(a,b)B.ax(3,a+b)

C.max(3,5)D.floatmax(c,5)

4.在C程序中,下面描述正确的是________。

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和函数调用都可以嵌套

D.函数的定义和调用都不可以嵌套

5.下列关于参数的说法正确的是________。

A.实参和与其对应的形参各占用独立的存储单元

B.实参和与其对应的形参共用一个存储单元

C.形参是虚拟的,不占用存储单元

D.只有当实参和与其对应的形参同名时才共用存储单元

答案:

1.C

2.A

3.D

4.B

5.A

C语言测试题(第八章)

1.有如下定义:

intk=2;

int*ptr1=&k,*ptr2=&k;

下面不能正确执行的赋值语句是________。

A.k=*ptr1+*ptr2;B.ptr2=k;

C.ptr1=ptr2;D.k=*ptr1*(*ptr2);

2.若有如下定义:

chars[20],*ps=s;

则,以下赋值语句正确的是________。

A.s=ps+s;B.ps=ps+20;C.s[5]=ps[9];D.ps=s[0];

3.以下程序的运行结果是________。

main()

{

staticintarr[]={6,7,8,9};

inti;

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

printf("%d",*(arr+i));

}

4.以下程序的输出结果是________。

main()

{

char*s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

A.n,twoB.t,oneC.w,oneD.o,two

5.以下程序运行时,若输入数据为17

18

19,则程序的输出结果为________。

#incliude"stdio.h"

voidrcircle(int*p1,int*p2,int*p3);

voidmain()

{

inta,b,c;

int*p1,*p2,*p3;

printf("Enterthreeintegers:

");

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

p1=&a;p2=&b;p3=&c;

rcircle(p1,p2,p3);

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

}

voidrcircle(int*pr1,int*pr2,int*pr3)

{

inttemp;

temp=*pr3;*pr3=*pr2;*pr2=*pr1;*pr1=temp;

}

答案:

1.B

2.C

3.6789

4.C

5.191718

C语言测试题(第九章)

1.关于结构体类型的定义,下列描述正确的是________。

A.定义结构体类型时,系统会根据各个成员的大小为其分配内存空间。

B.定义结构体类型时,系统会根据最大成员的大小为其分配内存空间。

C.定义结构体类型时,不会产生内存分配。

D.以上说法都不对。

2.以下各项用于定义结构体类型,并定义结构体变量,其中正确的是________。

A.structstudentB.structstudentstu1,stu2;

{charnum[5];structstudent

intscore;{charnum[5];

};intscore;

studentstu1,stu2;};

C.structstudentD.structstudent

{charnum[5];{charnum[5];

intscore=96;intscore;

};};

structstudentstu1,stu2;structstudentstu1,stu2;

3.以下形式定义了结构体变量member,对其成员name的引用有多种形式。

在下面的引用形式中,错误的是________。

struct

{

charname[10];

intage;

}member,*p;

A.member.nameB.name

C.p->nameD.(*p).name

4.下面的程序运行后的输出结果为________。

structstu

{intnum;

charname[10];

intage;

};

voidfun(structstu*p)

{

printf("%s\n",(*p).name);

}

main()

{

structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};

fun(students+1);

}

5.有程序如下:

#include"stdio.h"

structdate

{

intyear,month,day;

}today;

voidmain()

{

printf("%d,%d\n",sizeof(structdate),sizeof(today));

}

该程序执行后输出的结果是________。

A.2,2B.6,2C.6,6D.2,6

答案:

1.C

2.D

3.B

4.Wang

5.C

 

C语言测试题(第十章)

1.已知fp为文件类型指针,若要打开e盘text文件夹(目录)下的word.dat文件,下面各选项中正确的是________。

A.fp=fopen(e:

text\word.dat,"r")B.fp=fopen(e:

\text\word.dat,"r")

C.fp=fopen("e:

\text\word.dat","r")D.fp=fopen("e:

\\text\\word.dat","r")

2.使用fclose(fp)函数正常关闭fp文件后,函数fclose()的返回值是________。

A.1B.0C.–1D.非零值

3.函数调用fseek(fp,-20L,2)的含义是________。

A.将文件位置指针移到距离文件头20个字节处

B.将文件位置指针从当前位置向后移动20个字节

C.将文件位置指针从文件末尾处向文件头方向移动20个字节

D.将文件位置指针移到离当前位置20个字节处

4.有如下定义:

structstua[20];

FILE*fp;

设文件中以二进制文件格式存放了5个班的学生数据,且文件已打开,fp指向文件头。

若要从文件中读出20个学生的数据放入a数组中,以下语句不正确的是_________。

A.for(i=0;i<20;i++)fread(&a[i],sizeof(structstu),1L,fp);

B.for(i=0;i<20;i++)fread(a+i;sizeof(structstu),1L,fp);

C.fread(a,sizeof(structstu),20L,fp);

D.for(i=0:

i<20;i++)fread(a[i],sizeof(structstu),1L,fp);

答案:

1.D

2.B

3.C

4.D

 

C语言测试题(第十一章)

1.以下程序的运行结果是_________。

#defineN4

#defineMN+2

#defineKM*M/2

main()

{

inti;

i=N+M+K;

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

}

2.以下程序的输出结果是________。

#defineT(x,y)(x)<(y)?

(x):

(y)

main()

{

inti,j,k;

i=10,j=15,k=10*T(i,j);

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

}

A.15B.100C.10D.150

3.在下面的宏定义中,能将宏调用M(a+b)展开为(a+b)*(a+b)的宏定义是________。

A.M(x)

x*xB.M

(x)

(x)*(x)

C.M(x)

(x)*(x)D.A,B,C都可以

4.以下程序的执行结果是________。

#include"stdio.h"

#definePI3.14

#defineR5

#defineK1

main()

{

#ifK

printf("%6.2f",2*PI*R);

#else

printf("%6.2f",PI*R*R);

#endif

}

A.31.4078.50B.78.5031.40C.31.40D.78.50

5.在下面程序的横线位置填上合适的代码,使程序能够正常运行。

typedefstruct

{

chartitle[20];

floatprice;

}BOOK;

main()

{

___________;

scanf("%s%f",variable.title,&variable.price);

printf("Title:

%sprice:

%6.2f\n",variable.title,variable.price);

}

答案:

1.232.A3.C4.C5.BOOKvariable

C语言测试题(第十

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1