c语言题目及答案.docx

上传人:b****1 文档编号:498747 上传时间:2022-10-10 格式:DOCX 页数:27 大小:25.85KB
下载 相关 举报
c语言题目及答案.docx_第1页
第1页 / 共27页
c语言题目及答案.docx_第2页
第2页 / 共27页
c语言题目及答案.docx_第3页
第3页 / 共27页
c语言题目及答案.docx_第4页
第4页 / 共27页
c语言题目及答案.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

c语言题目及答案.docx

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

c语言题目及答案.docx

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,3,2

设有inti=010

j=10

2,2C.3,2,3D

;则

printf("%d,%d\n",++i,j--);

.2,3,2

的输出的是

A.

11,10B

.9,10

.010,9D.10,9

设a、b为字符型变量,入是。

4.

执行

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

后使a为'A',b为'B',从键盘上的正确输

A.

5.

B.'A','B'

已知intx=12,y=3;

'A''B'

.A=A,B=BD

执行下述程序后,变量

a=A,b=B

x的值是

A.

6.

A.

B.

C.

D.

7.

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

1B.2C.3D.

C语言中while和do-while循环的主要区别是do-while的循环体至少无条件执行一次while的循环控制条件比do-while的循环控制条件严格do-while允许从外部转到循环体内do-while的循环体不能是复合语句

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

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

程序运行有错误

A.

8.

A.

B.

C.

D.

if(x>=10)break

if(x%2==1){x+=5

x-=3:

;continue;}

以下正确的说法是

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

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

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

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

系统

自动去调

9.

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

没有返回值

能返回若干个系统默认值

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

返回一个不确定的值

D.

10•已知函数定义如下:

 

floatfun1(intx,inty){floatz

z=(float)x/y

return(z);

}

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

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

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

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

11.宏定义:

#definePI31.14159中,宏名

A.单精度B.双精度C.常量

.printf("%f",fun1(b,a))

PI代替。

D.字符串

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

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

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

D.0,12

13•以下合法的数组定义是

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

•inta[][3]={0,1,2,3,4};

14

.函数调用

strcat(strcpy(str1,str2),str3);

的功能是

O

A.

将字符串

str1

复制到字符串

str2

中后再连接到字符串

str3

之后。

B.

将字符串

str1

连接到字符串

str2

之后再复制到字符串

str3

之后。

C.

将字符串

str2

复制到字符串

str1

中后再将字符串

str3

连接到字符串

str1

之后

D.

将字符串

str2

连接到字符串

str1

之后再将字符串

str1

复制到字符串

str3

中。

Cinta[2][3]={0,1,2,3,4,5,6};

D

•inta[2][3]={0,1,2,3,4,5,};

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

16.若用数组名作为函数调用时的实参,

A.数组首地址

.a[7]D.a[2][‘c'

则实际上传递给形参的是

a']

C.数组中全部元素的值

.数组的第一个元素值

.数组元素的个数

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

A.int*p,*q;q=p;

.inta,*p,*q;q=&a;p=*q;

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

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

.inta=20,*p,*q=&a;p=q;

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

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

A.ps+1

.*(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;

.p->num

.stu[3].age

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

A.(p++)->num

C.(*p).num

二、填空题

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

a>b>c的值为。

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

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

m=(wvy)?

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;

retum(c)

voidmain()

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

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

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

}

6•下面程序的输出结果是

#includevoidmain(){intx=1

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.以下程序的功能是计算分段函数

的值。

请完善程序。

#include

scanf(

if(

(1)

10

voidmain()

10

10

20

0.5x

2020

40

{intx,c,m;

floaty;

“%d',&X);

)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(

elseprintf(

“y=%f”,y);

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;

⑶:

k=5;

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

请完善程序。

#include

voidmain()

{intm,n,gbs,gys;scanf(for(gbs=m;

gys=

printf(

(1));

(2);gbs=gbs+m);

(3);

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

 

 

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

请完善程序。

voidf(intm)

k=_⑴一for(i=2;iv=_

(2)_;i++)if(_(3)_)break;

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

elseprintf("非素数”);

}

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

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

请完善程

序。

voidfun(longx)

{longge,shi,qian,wan;

wan=

(1);

qian=—(2

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

当前位置:首页 > 解决方案 > 学习计划

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

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