C程序设计基础期中考试试题详解.docx

上传人:b****8 文档编号:9532273 上传时间:2023-02-05 格式:DOCX 页数:13 大小:21.85KB
下载 相关 举报
C程序设计基础期中考试试题详解.docx_第1页
第1页 / 共13页
C程序设计基础期中考试试题详解.docx_第2页
第2页 / 共13页
C程序设计基础期中考试试题详解.docx_第3页
第3页 / 共13页
C程序设计基础期中考试试题详解.docx_第4页
第4页 / 共13页
C程序设计基础期中考试试题详解.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C程序设计基础期中考试试题详解.docx

《C程序设计基础期中考试试题详解.docx》由会员分享,可在线阅读,更多相关《C程序设计基础期中考试试题详解.docx(13页珍藏版)》请在冰豆网上搜索。

C程序设计基础期中考试试题详解.docx

C程序设计基础期中考试试题详解

《C程序设计基础及实验》课程期中考试试卷参考答案

试题一、单选题(每小题2分,共20分)

1.以下正确的字符常量是______。

A.’\412’

B.255

C.’\08’

D.’\’

【解答】

A.八进制412超出了8位二进制所能表示的范围03ff;

B.255是一个合法的整数,可以表示一个字节的值;

C.8不是一个合法的八进制数字;

D.\是转义字符,\’表示单个单引号字符本身,所以。

字符常量缺少右单引号。

2.假设有定义:

floatx=16/5/2.0,y=16/5.0/2;则x和y的值分别为______。

A.1.51.6

B.1.61.6

C.1.51.5

D.1.61.5

【解答】

16/5/2.0(16/5)/2.03/2.01.5

16/5.0/2(16/5.0)/23.2/21.6

3.下列语句中,_____将输出%d。

A.printf(“%d”);

B.printf(“%%d”);

C.printf(“\%d”);

D.printf(“%%%d”)

【解答】

A.%d表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;

B.%%表示输出一个%符号本身,d是普通字符,原样输出,所以输出%d;

C.\%表示符号%,%d表示输出十进制整型值,故输出结果是随机值;

D.%%表示输出符号%本身,%d表示输出十进制整型值。

4.下列程序段输出结果为_____。

intx=1,y=012;

printf(“%d”,y*x++);

A.12

B.10

C.20

D.24

【解答】

x++表达式的值是1,y*x++y*1y01210

5.下列程序段输出结果为_____。

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

while(a

printf(“%d,%d,%d”,a,b,c);

A.1,2,0

B.2,1,0

C.1,2,1

D.2,1,1

【解答】

a=1,b=2,c=2

(1)表达式a

a=2,b=1,c=1

(2)表达式a

a=1,b=2,c=0

(3)表达式a

6.在下图中,阴影部分区域可用表达式_______来表示。

////////

////////

                            X

abc

A.(x<=a)&&(x>=b)&&(x<=c)

B.(x<=a)||(b<=x<=c)

C.(x<=a)||(x>=b)&&(x<=c)

D.(x<=a)&&(b<=x<=c)

【解答】

(x<=a)||((x>=b)&&(x<=c))(x<=a)||(x>=b)&&(x<=c)

7.下列程序段输出结果为_____。

intx=-3,y=2;

if(x>y);

x=-x;

if(x

y=-y;

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

A.x=3,y=-2

B.x=3,y=2

C.x=-3,y=2

D.x=-3,y=-2

【解答】x=3,y=2;

请注意:

if(x>y);

8.对于循环while(!

e)语句,!

e等价于_____。

A.e==0

B.e!

=0

C.e==1;

D.e!

=1

【解答】

!

e

e==0

e!

=0

e==1

e!

=1

e为0

1

1

0

0

1

e为非0

0

0

1

0/1

0/1

9.循环for(i=0,j=5;++i!

=--j;)printf(“%d%d”,i,j);将执行_____。

A.6次

B.3次

C.0次

D.无限次

【解答】

(1)i=0,j=5:

++i1,--j4,i=1,j=4,1!

=4成立;打印;i=1,j=4;

(2)i=1,j=4:

++I2,--j3,i=2,j=3,2!

=3成立;打印;i=2,j=3;

(3)i=2,j=3:

++I3,--j2,I=3,j=2,3!

=2成立;打印;i=3,j=2;

(4)……

10.下列程序段执行后s值为_____。

inti=5,s=0;

doif(i%2)continue;elses+=i;while(--i);

A.15

B.9

C.6

D.以上均不是

【解答】

(1)I=5,s=0:

i%25%21成立:

continue;--i4,i=4;

(2)I=4,s=0:

i%24%20不成立:

s=0+4=4;--i3,i=3

(3)I=3,s=4:

i%23%21成立:

continue;--i2,i=2

(4)I=2,s=4:

i%22%20不成立:

s=4+2=6;--i1,i=1

(5)I=1,s=6:

i%21%21成立:

continue;--i0

试题二、填空题(每小题2分,共20分)

1.表达式1+4/5+15<7+4%5+(8,10)的值为_____。

【解答】

1+(4/5)+15<7+4%5+(8,10)

1+0+15<7+4%5+(8,10)

1+15<7+4%5+(8,10)

16<7+4%5+(8,10)

16<7+4+(8,10)

16<11+(8,10)

16<11+10

16<21

1

2.表达式!

!

5的值为_____。

【解答】

!

!

5!

(!

5)!

01

3.表达式~(10<<1)&4的值为______。

【解答】

10:

00001010

10<<1:

00010100

~(10<<1):

11101011

4:

00000100

&----------------------------------

00000000即0

4.假设有定义:

intx=10;则表达式0<=x<=9的值为_____。

【解答】

0<=x<=9(0<=x)<=9(0<=10)<=91<=91

5.下列for循环语句将输出:

012012012.

for(i=1;i<=9;i++)printf("%2d",_______);

【解答】(i-1)%3

6.对于定义:

intm=5,y=2;当计算表达式y+=y-=m*=y后,y的值为_____。

【解答】

y+=y-=m*=yy+=(y-=(m*=y))

先计算m*=y:

由于m=5,y=2,所以:

m=m*y=5*210

再计算y-=10:

由于y=2,所以:

y=y-10=2-10-8

最后计算y+=-8:

由于y=-8,所以:

y=y+(-8)=(-8)+(-8)-16

7.对于charc;若已知其值为小写字母,则将其转换为相应大写字母的表达式为_____。

【解答】

c-‘a’+’A’

8.下列语句的输出结果为_____。

printf("%d#%x#",027,27);

【解答】

23#1b#

9.已知字符’a’的ASCII码为97,则下列语句的输出结果为_____。

printf("%c#%d#",98,’c’);

【解答】

b#99#

10.下列程序段将输出_____。

unsignedcharx=255,y=’\1’;

switch(!

!

x){

case0:

printf("*0*#");break;

case1:

switch(y){

case0:

printf("*1*#");break;

case1:

printf("*2*#");break;

}

default:

printf("*3*#");

}

【解答】

*2*#*3*#

试题三、程序阅读题(每小题6分,共30分)

1.下列程序将输出_____。

#include

voidswap(intx,inty)

{

intt;

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

return;

}

voidmain(void)

{

inta=3,b=2;

swap(a,b);

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

return;

}

【解答】

3#2#

注:

尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原则——“实参向形参单向传值(即x向a赋值,y向b赋值),形参的改变不影响实参”,实参变量a和b的值未发生交换!

2.下列程序将输出_____。

#include

ints;

intf(intm)

{

staticintk=0;

for(;k<=m;k++)s++;

returns;

}

voidmain(void)

{

ints=1;

s=f

(2)+f

(2);

printf("%d#%d#",s,f(20));

return;

}

【解答】输出结果为:

6#21#

注:

(1)全局变量s的初始值为0;

(2)在f函数中,s是全局变量有效,而在main函数中,s是局部变量有效;

(3)在f函数中,k是静态变量,每次函数f调用结束后,其内存单元和值仍然保留。

3.若输入:

1273<回车>,以下程序的输出结果是_______。

#include

voidmain(void)

{

intn,m;

scanf(“%d”,&n);

m=0;

while(n>0){

m=m*10+n%10;

n/=10;

}

printf(“%d”,m);

return;

}

【解答】输出结果是:

3721

4.若输入-6+15*3/5=<回车>,以下程序的输出结果是_______。

#include

voidmain()

{

intm=0,sum=0;

charc,oldc='+';

do{

c=getchar();

if(c<='9'&&c>='0')

m=10*m+c-'0';

else{

if(oldc=='+')

sum+=m;

else

sum-=m;

m=0;

oldc=c;

printf("%d#",sum);

}

}while(c!

='=');

return;

}

【解答】0#-6#9#6#1#

程序的意思:

对输入的字符串扫描,若碰到数字字符序列,求出相应的整数值m;若碰到其它字符——若字符是+号,则将m值加入到sum中去;若字符不是+号,则将从sum中减去m值。

5.若输入:

howareyou?

<回车>,以下程序的输出结果是_______。

#include

voidmain(void)

{

intword;

charch;

word=0;

while((ch=getchar())!

='?

'){

if(ch=='')word=0;

elseif(word==0){

word=1;

if(ch<='z'&&ch>='a')ch=ch-'a'+'A';

}

putchar(ch);

}

return;

}

【解答】HowAreYou

该程序思路:

碰到一个新单词,则将该单词首字母从小写改为大写,其它字符原样输出。

提示:

可借鉴统计单词个数程序的算法。

试题四、程序填空题(每空2分,共30分)

1.输入正整数n,计算s=1/1!

+1/2!

+1/3!

+……+1/n!

的值。

#include

voidmain(void)

{

intj,k,n;

doublef,s;

scanf("%d",&n);

(1);s=0.0

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

(2);f=1.0

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

(4);f=f*j

s=s+1.0/f;

}

printf("sum=%f\n",(5));s

return;

}

2.输入一个整数,统计该数的位数。

如:

输入12534,输出5;输入-99,输出2;输入0,输出1。

#include

voidmain(void)

{

intcount=0,number;

scanf(“%d”,(6));&number

if(number<0)number=(7);-number

do{

number=(8);number/10

count++;

}while((9));number!

=0

printf(“%d\n”,count);

return;

}

3.下面程序验证“哥德巴赫猜想”:

寻找3到1000间满足“偶数=素数1+素数2”(如10=3+7)的所有偶数。

素数指只能被1和自身整除的正整数,如2,3,17等;1不是素数。

#include

voidmain(void)

{

inti,j;

(10);/*prime()函数声明*/intprime(intn)

for(i=3;i<=500;i++)

for(j=2;;j++)

if((11)){prime(j)==1&&prime(2*i-j)==1

printf(“%d=%d+%d\n”,2*i,j,2*i-j);/*若2*i为两个素数之和*/

break;

}

(12);return

}

intprime(intn)/*判断n是否为素数:

是返回1,不是返回0*/

{

inti;

if(n==1)

return(13);0

for(i=2;i<=n/2;i++)

if((14))n%i==0

return0;

return(15);1

}

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

当前位置:首页 > 经管营销 > 财务管理

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

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