c语言题目及标准答案.docx

上传人:b****3 文档编号:6652599 上传时间:2023-05-10 格式:DOCX 页数:22 大小:32.40KB
下载 相关 举报
c语言题目及标准答案.docx_第1页
第1页 / 共22页
c语言题目及标准答案.docx_第2页
第2页 / 共22页
c语言题目及标准答案.docx_第3页
第3页 / 共22页
c语言题目及标准答案.docx_第4页
第4页 / 共22页
c语言题目及标准答案.docx_第5页
第5页 / 共22页
c语言题目及标准答案.docx_第6页
第6页 / 共22页
c语言题目及标准答案.docx_第7页
第7页 / 共22页
c语言题目及标准答案.docx_第8页
第8页 / 共22页
c语言题目及标准答案.docx_第9页
第9页 / 共22页
c语言题目及标准答案.docx_第10页
第10页 / 共22页
c语言题目及标准答案.docx_第11页
第11页 / 共22页
c语言题目及标准答案.docx_第12页
第12页 / 共22页
c语言题目及标准答案.docx_第13页
第13页 / 共22页
c语言题目及标准答案.docx_第14页
第14页 / 共22页
c语言题目及标准答案.docx_第15页
第15页 / 共22页
c语言题目及标准答案.docx_第16页
第16页 / 共22页
c语言题目及标准答案.docx_第17页
第17页 / 共22页
c语言题目及标准答案.docx_第18页
第18页 / 共22页
c语言题目及标准答案.docx_第19页
第19页 / 共22页
c语言题目及标准答案.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言题目及标准答案.docx

《c语言题目及标准答案.docx》由会员分享,可在线阅读,更多相关《c语言题目及标准答案.docx(22页珍藏版)》请在冰点文库上搜索。

c语言题目及标准答案.docx

c语言题目及标准答案

c语言题目及答案

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

考试题型

一、单项选择题(30分)

二、填空题(20分)

三、阅读程序写结果(20分)

四、编程序题(30)

 

复习题一

一、选择题

1.下列说法中正确的是。

A.C语言程序由主函数和0个或多个函数组成

B.C语言程序由主程序和子程序组成

C.C语言程序由子程序组成

D.C语言程序由过程组成

2.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为。

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

3.设有inti=010,j=10;则printf("%d,%d\n",++i,j--);的输出的是。

A.11,10B.9,10C.010,9D.10,9

4.设a、b为字符型变量,执行scanf("a=%c,b=%c",&a,&b);后使a为'A',b为'B',从键盘上的正确输入是。

A.'A''B'B.'A','B'C.A=A,B=BD.a=A,b=B

5.已知intx=12,y=3;执行下述程序后,变量x的值是____。

do{x/=y--;}while(x>y);

A.1B.2C.3D.程序运行有错误

6.C语言中while和do-while循环的主要区别是。

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

7.设x和y均为int型变量,则执行下面的循环后,y的值为。

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

if(x>=10)break;

if(x%2==1){x+=5;continue;}

x-=3;

}

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

8.以下正确的说法是____。

A.用户若需调用标准函数,调用前必须重新定义

B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C.系统根本不允许用户重新定义标准函数

D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

9.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是___。

A.没有返回值

B.能返回若干个系统默认值

C.能返回一个用户所希望的函数值

D.返回一个不确定的值

10.已知函数定义如下:

floatfun1(intx,inty)

{floatz;

z=(float)x/y;

return(z);

}

主调函数中有inta=1,b=0;可以正确调用此函数的语句是____。

A.printf("%f",fun1(a,b));B.printf("%f",fun1(&a,&b));

C.printf("%f",fun1(*a,*b));D.printf("%f",fun1(b,a));

11.宏定义:

#definePI31.14159中,宏名PI代替______。

A.单精度B.双精度C.常量D.字符串

12.若有以下数组说明,则数值最小和最大的元素下标分别是。

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A.1,12B.0,11C.1,11D.0,12

13.以下合法的数组定义是。

A.inta[3][]={0,1,2,3,4,5};B.inta[][3]={0,1,2,3,4};

C.inta[2][3]={0,1,2,3,4,5,6};D.inta[2][3]={0,1,2,3,4,5,};

14.函数调用:

strcat(strcpy(str1,str2),str3);的功能是。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。

15.设有二维数组定义如下,则不正确的数组元素引用是。

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]

16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

17.以下对指针变量进行操作的语句,正确的选项是。

A.int*p,*q;q=p;B.inta,*p,*q;q=&a;p=*q;

C.inta=b=0,*p;p=&a;b=*p;D.inta=20,*p,*q=&a;p=q;

18.若有以下定义和语句:

ints[4][5],(*ps)[5];ps=s;

则对s数组元素的正确引用形式是。

A.ps+1B.*(ps+3)

C.ps[0][2]D.*(ps+1)+3

19.当说明一个共用体变量时系统分配给它的存储容量是。

A.共用体中最后一个成员所需的存储容量

B.共用体中第一个成员所需的存储容量

C.成员中占存储量最大者所需的存储容量

D.各成员所需存储容量的总和

20.有定义如下:

structstudent

{intage;

charnum[8];

}stu[3]={{20,"200401"},{21,"200402"},{10,"200403"}};

structstudent*p=stu;

以下选项中引用结构体变量成员的表达式错误的是。

A.(p++)->numB.p->num

C.(*p).numD.stu[3].age

二、填空题

1.设a=3,b=2,c=1,则a>b的值为,a>b>c的值为。

2.若w,x,y,z,m均为int型变量,则执行下面程序段后的m值是。

w=1;x=2;y=3;z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

Z;

3.下面程序的输出结果是____。

#include

main()

{inta=1,b=0;

do{

switch(a)

{case1:

b=1;break;

case2:

b=2;break;

default:

b=0;

}

b=a+b;

}while(!

b);

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

}

4.下面程序的输出结果是____。

#include

main()

{intx,i;

for(i=1;i<=100;i++){

x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%d",x);

}

}

5.下面程序的输出结果是____。

#include

intfunc(inta,intb)

{intc;

c=a+b;

return(c);

}

voidmain()

{intx=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

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

}

6.下面程序的输出结果是____。

#include

voidmain()

{intx=1;

 voidf1(),f2();

 f1();

f2(x);

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

}

voidf1(void)

{intx=3;

printf("%d",x);

}

voidf2(x)

intx;

{printf("%d",++x);

}

7.程序中有定义:

#defineS(r)r/r

inta=4,b=3,area;

则表达式area=S(a+b)的值为_______。

三、程序完善题

1.以下程序的功能是计算分段函数y的值。

请完善程序。

 

#include

voidmain()

{intx,c,m;

floaty;

scanf(“%d”,&x);

if(

(1))c=-1;

elsec=

(2);

switch(c)

{case–1:

y=0;break;

case0:

y=x;break;

case1:

y=10;break;

case2:

case3:

y=-0.5*x+20;break;

default:

y=-2;

}

if((3))printf(“y=%f”,y);

elseprintf(“error\n”);

}

2.有以下程序段:

s=1.0;

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

s=s+1.0/(k*(k+1));

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

填空完成下述程序,使之与上述程序的功能完全相同。

s=0.0;

(1);

k=0;

do{

s=s+d;

(2);

d=1.0/(k*(k+1));

}while((3));

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

3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。

(假设score的取值在1~100之间。

if语句:

if(score<60)k=1;

elseif(score<70)k=2;

elseif(score<80)k=3;

elseif(score<90)k=4;

elseif(score<=100)k=5;

switch语句:

switch(

(1))

{

(2):

k=1;break;

case6:

k=2;break;

case7:

k=3;break;

case8:

k=4;break;

(3):

k=5;

}

4.输入2个整数,输出它们的最小公倍数和最大公约数。

请完善程序。

#include

voidmain()

{intm,n,gbs,gys;

scanf(

(1));

for(gbs=m;

(2);gbs=gbs+m);

gys=(3);

printf(“gbs=%d\tgys=%d\n”,gbs,gys);

}

5.下面函数的功能是判断一个数是否为素数。

请完善程序。

voidf(intm)

{intm,i,k;

k=__

(1)__;

for(i=2;i<=_

(2)__;i++)

if(__(3)__)break;

if(__(4)__)printf(“是素数”);

elseprintf(“非素数”);

}

6.一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

请完善程序。

voidfun(longx)

{longge,shi,qian,wan;

wan=

(1);

qian=___

(2)__;

shi=___(3)___;

ge=x%10;

if(__(4)__)

printf("thisnumberisahuiwen\n");

elseprintf("thisnumberisnotahuiwen\n");

}

四、程序设计题

1.编写程序计算分段函数y值。

 

2.编写程序,输入一个字符串,求该字符串的有效长度。

要求不能使用系统函数。

3.编写程序实现,将键盘输入的一个十进制整数转换为2进制数并输出。

参考答案:

一、选择题

1

2

3

4

5

6

7

8

9

10

A

C

B

D

D

A

C

B

A

D

11

12

13

14

15

16

17

18

19

20

D

B

B

C

C

A

C

C

C

D

二、填空题

1、10

2、13、a=1,b=2

4、25675、21

6、3217、7

三、程序完善题

1、x<0x/10x<40

2、d=1k++k<=n

3、score/10case0,1,2,3,4,5:

default

4、“%d%d”,&m,&ngbs%n!

=0m*n/gbs

5、m/2km%i==0i<=k

6、x/10000(x%10000)/1000(x%100)/10wan==ge&&qian=shi

四、程序设计题

1、#include

voidmain()

{floatx,y;

scanf(“%f”,&x);

if(x>0)y=exp(-x);

elseif(x==0)y=1;

elsey=-exp(x);

printf(“%f”,y);

}

2、#definemax20;

voidmain(){

charstr[max];

intlen;

scanf(“%s”,str);

for(len=0;str[len]!

=0;len++)

;

printf(“%d”,len);

}

3、#include

voidmain(){

unsignedn;

charstr[10],t;

intk,i,j;

printf(“pleaseinput:

”);

scanf(“%u”,&n);

for(i=0;n!

0;i++)

{

str[i]=n%2+’0’;

n/=2;

}

str[i]=’\0’;

printf(“theresultis:

”);

 

for(k=0,j=i-1;k

{t=str[k];str[k]=str[j];str[j]=t;}

puts(str);

}

 

复习题二

一、选择题

1.字符串"ABC"在内存占用的字节数是。

A.3B.4C.6D.8

2.设整型变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m和n的值是。

A.0,0B.0,1C.1,0D.1,1

3.a是int类型变量,c是字符变量。

下列输入语句中哪一个是错误的。

A.scanf("%d,%c",&a,&c);B.scanf("%d%c",a,c);

C.scanf("%d%c",&a,&c);D.scanf("d=%d,c=%c",&a,&c);

4.字符变量ch='A',int类型变量k=25,执行printf("%3d,%d3\n",ch,k);的输出为:

A.65,253B.65253C.65,25D.A25

5.已知inti=1,j=0;执行下面语句后j的值是____。

while(i)

switch(i)

{case1:

i+=1;j++;break;

case2:

i+=2;j++;break;

case3:

i+=3;j++;break;

default:

i--;j++;break;

}

A.1B.2C.3D.死循环

6.C语言中while和do-while循环的主要区别是。

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

7.设x和y均为int型变量,则执行下面的循环后,y的值为。

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

if(x>=10)break;

if(x%2==1){x+=5;continue;}

x-=3;

}

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

8.在C语言中,函数的数据类型是指____。

A.函数返回值的数据类型B.函数形参的数据类型

C.调用该函数时的实参的数据类型D.任意指定的数据类型

9.在c语言中以下不正确的说法是___。

A.实参可以是常量、变量或表达式

B.形参可以是常量、变量或表达式

C.实参可以为任意类型

D.形参应与其对应的实参类型一致

10.已知函数定义如下:

floatfun1(intx,inty)

{floatz;

z=(float)x/y;

return(z);

}

主调函数中有inta=1,b=0;可以正确调用此函数的语句是____。

A.printf("%f",fun1(a,b));B.printf("%f",fun1(&a,&b));

C.printf("%f",fun1(*a,*b));D.printf("%f",fun1(b,a));

11.宏定义的宏展开是在_______阶段完成的。

A.第一遍编译B.第二遍编译

C.程序执行D.预编译

12.若有以下数组说明,则数值最小和最大的元素下标分别是。

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A.1,12B.0,11C.1,11D.0,12

13.以下合法的数组定义是。

A.inta[3][]={0,1,2,3,4,5};B.inta[][3]={0,1,2,3,4};

C.inta[2][3]={0,1,2,3,4,5,6};D.inta[2][3]={0,1,2,3,4,5,};

14.函数调用:

strcat(strcpy(str1,str2),str3);的功能是。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。

15.设有二维数组定义如下,则不正确的数组元素引用是。

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]

16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

17.以下对指针变量进行操作的语句,正确的选项是。

A.int*p,*q;q=p;B.inta,*p,*q;q=&a;p=*q;

C.inta=b=0,*p;p=&a;b=*p;D.inta=20,*p,*q=&a;p=q;

18.若有以下定义和语句:

ints[4][5],(*ps)[5];ps=s;

则对s数组元素的正确引用形式是。

A.ps+1B.*(ps+3)

C.ps[0][2]D.*(ps+1)+3

19.当说明一个结构体变量时,系统分配给它的存储容量是。

A.结构体中最后一个成员所需的存储容量

B.结构体中第一个成员所需的存储容量

C.成员中占存储量最大者所需的存储容量

D.各成员所需存储容量的总和

20.有定义如下:

structsk

{inta;

floatb;

}data,*p;

如果有:

p=&data;则对于结构体变量data的成员a的正确引用是____。

A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a

二、填空题

1.设a=3,b=2,c=1,则a>b的值为,a>b>c的值为。

2.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为。

3.以下程序段的输出结果是。

inta=10,b=50,c=30;

if(a>b)

a=b;

b=c;

c=a;

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

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

#include

voidmain()

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

if(x

if(y<0)z=0;

elsez+=1;

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

}

5.下面程序的输出结果是____。

#include

intfunc(inta,intb)

{intc;

c=a+b;

return(c);

}

voidmain()

{intx=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

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

}

6.下面程序的输出结果是____。

#include

voidmain()

{intx=1;

 voidf1(),f2();

 f1();

f2(x);

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

}

voidf1(void)

{intx=3;

printf("%d",x);

}

voidf2(x)

intx;

{printf("%d",++x);

}

7.以程序的输出结果是_______。

#defineMA(x)x*(x-1)

#include

voidmain()

{inta=1,b=2;

pirntf(“%d\n”,MA(1+a+b));

}

三、程序完善题

1.下列程序计算并输出方程X2+Y2+Z2=1989的所有整数解。

请完善程序。

#include

voidmain()

{

(1);

for(i=-45;i<=45;i++)

for(

(2))

for(k=-45;k<=45;k++)

if((3))

printf(“%4d%4d%4d\n”,i,j,k);

}

2.有以下程序段:

s=1.0;

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

s=s+1.0/(k*(k+1));

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

填空完成下述程序,使之与上述程序的功能完全相同。

s=0.0;

(1);

k=0;

do{

s=s+d;

(2);

d

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2