C语言程序设计答案-(陈明晰)中国铁道出版社 下载本文

内容发布更新时间 : 2024/5/4 17:49:07星期一 下面是文章的全部内容请认真阅读。

if(x<0.0) y=0.0;

else if((x<5.0)&&(x!=2.0)) y=1.0/(x+2.0);

else if(x<10.0) y=1.0/x; else y=10.0;

printf(\%f\\n\}

若运行时从键盘上输入2.0,则上面程序的输出结果是( C ) A.0.000000 C.0.500000 6.阅读程序: #include\main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y)

{ case 0:a++;break; case 1:b++;break; }

case 2:

a++;b++;break; }

printf(\%d,b=%d\n\; }

B.0.250000 D.1.000000 上面程序输出结果是( A )。 A.a=2,b=l C.a=l,b=0 7.下面程序的输出是(C )。 main( )

{ int a=–1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

printf(\%d%d%d%\n\

B.a=l,b=l D.a=2,b=2 A.0 0 3 B.0 1 2 C.1 0 3 B.(x>=y)AND(y>=z) D.1 1 2 8.为表示关系x≥y≥z,应使用C语言表达式( A )。 A.(x>=y)&&(y>=z) C.(x>=y>=z) A.a<>0 10.若有以下定义: float x; int a,b;

D.(x>=y)&(y>=z) D.a 9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( D )。 B.!a C.a=0 则正确的switch语句是(D )。 A.switch(x) {case 1.0:printf(\;

case2.0:printf(\;}

B.switch(x) {case 1,2:printf(\\n\; case 3:printf(\\n\;}

C.switch(a+B) {case 1:printf(\;

case 1+2:printf(\\n\;}

D.switch(a+b); {case 1:printf(\\n\; case 2:printf(\\n\;}

11.下列语句中,错误的是(C )。 A.while(a=b)a++; B.while(0); C.do D.do {printf(“ok\\n”); {x++;

}while(x==5) }while(--x==0);

12. 执行语句:for(i=1;i++<4; )后变量i的值为:( B )。 A.3 B.4 C.5 D.6 13. 以下程序的输出结果是:( D )。 main()

{ int x=10,y=10,i; for(i=0;x>8;y=++i)

printf(\}

A.10 1 9 2 B.9 8 7 6 C.10 9 9 0 D.10 10 9 1 14. 以下for语句的循环次数为:( B )。 int i=0,j=0;

for(;!j&&i<=5;i++)j++;

A.5次 B.1次 C.6次 D.无限多次 15. 以下程序段中内嵌循环共被执行的次数为:( A ) for(i=5;i;i--)

for(j=0;j<4;j++) {…}

A.20 二、填空题

B.24 C.25 D.30 1.设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>'A'&&ch<='Z')? (ch+32):ch 该表达式的值是 A 。 2.若已知a=10,b=20,则表达式“!a

{ int a=-1,b=4,k; k=(++a<0)&&!(b-->=0);

printf(\%d%d%d\\n\}

5.假定所有变量均已正确说明,下列程序段运行后,x的值是 4 。 a=b=c=0; x=35; if(!a) x--;

else if(b); if(c) x=3; else x=4;

6.若执行下面的程序时,从键盘上输入3和4,则输出结果是 3 。 main( )

{ int a,b,s;

scanf(\%d%d\s=a;

if(a&&b) printf(\%d\n\else printf(\%d\n\}

7.以下程序的输出结果是 x=11,i=11 。 main()

{ int x=1,i=1; for(;x<50;i++) {if(x>=10)

break; if(x%2!=1) {x+=3;

continue; } x-=1; }

printf(\}

8.以下程序的输出结果是 i=9,j=10 。 main()

{ int i=10,j=0; do

{j=j+i; i--;

}while(i>j);

printf(\}

9.以下程序的输出结果是 35 。 main()

{int m=7,n=5,i=1; do

{if(i%m==0) if(i%n==0)

{printf(“%d\\n”,i);break;} i++;

}while(i!=0); }

10.以下程序的输出结果是 1,-2 。 main()

{ int x=3; do

{printf(\}while(!(--x)); }

11.以下程序的输出结果是 i=4,j=6 。 main()

{ int i,j;

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

{for(j=1;j<10;j++) if(j==6) break; if(i<3)

continue;

if(i>3)

break; }

printf(\}

三、编程题

1.给出一个不多于5位的正整数,求出它是几位数,分别打印出每一位数字,然后再按逆序打印出各位数字。 2.编写程序,输入一位学生的生日,并输入当前的日期,输出该生的实足年龄。 3.编写程序,输入一个整数,打印它是奇数还是偶数。 4.某企业利润提成的规则如下: ① 利润低于或等于10万元的,可提成奖金10%; ② 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,另外部分可以提成7.5%; ③ 利润高于20万元低于40万元的,其中20万元按前面的方法发放,另外的部分按5%提成; ④ 利润高于40万元的,40万元按前面的方法提成,高于部分按3%提成。请从键盘输入利润,输出应发的提成。 5.求5~100之间能被5或7整除的数。 6.求1~100之间所有素数之和。 7.水仙花数是指一个三位十进制数,它的各位数字的立方之和等于它本身。例如:153=13+53+33,所以153是一个水仙花数。求出所有的水仙花数。 8.有一分数数列:21?32?53?85?138?2113?? 求出这个数列的前30项之和。 9.猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半另加一个。到第十天早上吃时,只剩下一个桃子了。求猴子第一天共摘了多少桃子。 习 题 五

一、选择题

1.下列为一维数组初始化时, 正确的是( D ). A.int a[ ]={1,3,5,7,9,…,15}; C.int a[5]={5*3}; B.int a[5]={ }; D.int a[5]={0}; 2.下列一维数组说明中,正确的是( A ). A.#define M 10 float s[M]; B.int m; float a[m]; C.int m=10, a[m]; A.int a[4]={2,4,6,8}; C.int a[4]; a={2,4,6,8}; a[0]=2;a[1]=4,a[2]=6;a[3]=8; 4.若有说明: int a[5][5]; 则对数组元素的正确引用是( C ). A.a[3+2][3] B.a[0,3] A.int a[2][ ]={{3,4},{5}}; C.int a[3][3]={0}; a[5][4]={{1,2},{2,3},{3,4},{4,5}}; 6.若有以下数组定义: char ch[]=\\\n\则数组ch的存储长度是(D )。 A.7 B.8 C.9 D.10 C.a[4][1+2] DD.a[ ][2] 5.下列二维数组初始化中,错误的是( A ). B.int a[][3]={2,3,4,5,6,7}; .int D.int a[ ]; B.int a[ ]={2,4,6,8}; D.int a[4]; 3.若要将2,4,6,8存入数组a中,不正确的是( C ). scanf(“%d”,&m); 7.以下程序段的输出结果是( A ). char str[8]={'a','b','c','d','\\0','y','z','\\0'}; printf(\

A.abcd 8.设有如下定义: B.abcd yz C.abcdyz D.出错 char s1[20]=\

执行语句:strcpy(s1+4,s2); printf(\后,输出结果是( B ). A.tian B.tianbeijing 9.合法的数组定义是( B ) A.int a[ ]={\ C.char a={\}; C.tianjinbeijing D.tianbeij B.int a[ ]={0, 1, 2, 3, 4, 5}; D.char a[ ]={0, 1, 2, 3, 4, 5}; 10.若有以下说明,则数值为4的表达式是( D ) int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c] 11.下列语句中,正确的是( D ) A.char a[3][ ]={'abc', 'I'}; C.char a[3][ ]={ 'a', \ B.char a[ ][3]={'abc', 'I'}; D.char a[ ][3]={\12.设有如下定义,则正确的叙述为( C ) char x[]={\

char y[]={'a','b','c','d','e','f','g'};

A.数组x和数组y等价 二、填空题

B.数组x和数组y的长度相同 D.数组x的长度小于数组y的长度 C.数组x的长度大于数组y的长度 1.设有定义语句“int a[3][4]={{1}, {2}, {3}}”,则a[1][1]值为 0 ,a[2][1]的值为 0 。 2.执行“int b[5]={ }, a[ ][3]={1, 2, 3, 4, 5, 6}”后,b[4]= 0 ,a[1][2]= 6 。 3.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{ int k,p;

int s[]={1,-9,7,2,-10,3}; for(p=0,k=p;p<6;p++) k=p; if (s[p]>s[k]) printf(\

}

4.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。 #include\main ()

{ int i,j, k ;

char str[ ]={ \

for(i=0,j=strlen(str) /2 ; i

5.下面程序求5?5方阵的主对角线元素乘积,请填空。 #include main()

{ int a[5][5],i,j,ss; printf(\for(i=0;i<5;i++) for(j=0;j<5;j++)

scanf(\