谭浩强C语言程序设计习题集 下载本文

参考程序:

switch(s>0&&s<=10) {case 0:x=0;break;

case 1:switch(s>=3&&s<=6) {case 1:x=2;break;

case 0:switch(s>1||s>8) {case 1:x=3;break; case 0:x=1;break; } } }

4.127编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,-,*,/(用switch语句实现)。 参考程序:

#include #include main()

{float data1,data2,result; char op;

printf(\

scanf(\ switch(op)

{case '+':result=data1+data2;break; case '-':result=data1-data2;break; case '*':result=data1*data2;break;

case '/':if(data2==0){printf(\ result=data1/data2;break; }

printf(\}

4.128 编一程序,对于给定的一个百分制成绩,输出相应的五分值成绩。设90分以上为'A',80-89分为'B',70-79分为'C',60-69分为'D',60分以下为'E'(用switch语句实现)。 参考程序: main()

{int score=-1,temp; char grade;

while(score>=0&&score<=100) { printf(\ scanf(\ }

temp=score/10; switch(temp)

{case 0:case 1:case 2:case 3:case 4:case 5:grade='E';break; case 6:grade='D';break; case 7:grade='C';break; case 8:grade='B';break; case 9:case 10:grade='A'; }

printf(\

}

第五章 循环控制

5.1 选择题

5.1 设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述中正确的是 。

A)while循环执行10次 B)循环是无限循环

C)循环体语句一次也不执行 D)循环体语句执行一次 参考答案:C

5.2设有以下程序段

int x=0,s=0;

while(!x!=0) s+=++x; printf(\则 。

A)运行程序段后输出0 B)运行程序段后输出1 C)循环的控制表达式不正确 D)程序段执行无限次 参考答案:B

5.3语句while(!E);中的!E等价于 。

A)E= =0 B)E!=1 C)E!=0 D)E= =1 参考答案:A

5.4下面程序段的运行结果是 。

a=1;b=2;c=2;

while(a

A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1 参考答案:A

5.5 下面程序段的运行结果是 。

x=y=0;

while(x<15) y++,x+=++y;

printf(\

A)20,7 B)6,12 C)20,8 D)8,20 参考答案:D

5.6下面程序段的运行结果是 。

int n=0;

while(n++<=2); printf(\

A)2 B)3 C)4 D)语法错误 参考答案:C 5.7 设有程序段

t=0;

while(printf(\{t++;

if(t<3) break;

}

下面描述正确的是 。

A)其中循环控制表达式与0等价 B)其中循环控制表达式与'0'等价 C)其中循环控制表达式是不合法的 D)以上说法都不对 参考答案:B

参考分析:printf的返回值为数值1,恒真,故与B等价。

5.8 下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。

#include main() {int a,b,t;

scanf(\while( ) {if (a>b)

{t=a;a=b;b=t;}

printf(\scanf(\} }

A)!a=b B)a!=b C)a==b D)a=b 参考答案:B

5.9下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m,n中的较大者

#include \main()

{int m=0,n=0; char c; while ((【1】)!='\\n')

{ if(c>='A'&&c<='Z') m++; if (c>='a'&&c<='z') n++;

}

printf(\【2】);} 【1】A)c=getchar() B)getchar() C)c=gets() D)scanf(\ 【2】A)m:n B)m:m C)n:n D)n:m 参考答案:【1】A【2】D

5.10下面程序的功能是将小写字母变成对应大写字母后的第二个字母,其中y变成A,z变成B。请选择填空。

#include \main() { char c;

while ((c=getchar())!='\\n') {if (c>='a'&&c<='z') {【1】; if (c>'Z') 【2】; }

printf(\}

}

【1】A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30 【2】A)c='B' B)c='A' C)c-=26 D)c=c+26 参考答案:【1】D【2】 C

5.11下面程序的功能是在输入一批正整数中求出最大者,输入0结束循环,请选择填空 。

#include \main()

{int a,max=0; scanf(\while ( ) {if (max

printf(\

A)a= =0 B)a C)a= =1 D)!a 参考答案:B

5.12 下面程序的运行结果是 。

#include main()

{int num=0; while(num<=2) {num++;

printf(\} }

A)1 B)1 C)1 D)1 2 2 2 3 3 4 参考答案:C

5.13若运行以下程序时,从键盘输入2473(表示回车),则下面程序的运行结果是 。

#include \{int c;

while ((c=getchar())!='\\n') switch (c-'2') {case 0:

case 1: putchar(c+4);

case 2:putchar(c+4);break; case 3:putchar(c+3);

default:putchar(c+2);break; }

printf(\

A)668977 B)668966 C)66778777 D)6688766 参考答案:A

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

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