文档库 最新最全的文档下载
当前位置:文档库 › c语言习题答案

c语言习题答案


习题3
一、单选题
1.下面语句中,错误的是【 B 】。
A.m=c>aB.int x=y=9;
C.k=x,y>0;
D.w++==--m?0:1;

2.以下程序段的输出结果是【 A 】。
int u=020, v=0x20, w=20;
printf(“%d,%d,%d\n”,u,v,w);
A.16,32,20
B.20,20,20
C.16,16,20
D.32,16,20

3.下面的程序在运行时,如果从键盘上输入98765432156↙(↙表示按回车键),则程序的输出结果是【 B 】。
#include
void main()
{ int a; float b,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
printf(“\na=%d,b=%f,c=%f\n”,a,b,c);
}
A.a=98,b=765,c=4321
B.a=98,b=765.000000,c=4321.000000
C.a=98,b=765.0,c=4321.56
D.a=98,b=765.0,c=4321.0

4.已知 int a=8, b=10, c=16; 执行下面的程序段后a、b、c的值是【 D 】。
if (a>b) c=a; a=b; b=c;
A.8,10,6
B.10,10,16
C.10,16,8
D.10,16,16

5.执行以下程序,输出结果为【 D 】。
#include
void main()
{ int a=10,b=0;
if (a==10)
a=a+1;b=b+1;
else
a=a+4;b=b+4;
printf(“%d,%d\n”,a,b);
}
A.11,1
B.14,1
C.14,4
D.有语法错误

6.以下关于switch语句的叙述中,错误的是【 B 】。
A.switch语句允许嵌套使用
B.语句中必须有default部分,才能构成完整的switch语句
C.只有与break语句结合使用,switch语句才能实现程序的选择控制
D.语句中各case与后面的常量表达式之间必须有空格

7.下面程序段的内循环体一共需要执行【 C 】次。
for (i=5; i; i--)
for (j=0; j<4; j++)
{…}
A.15
B.16
C.20
D.25

8.下面叙述中正确的是【 C 】。
A.do-while语句构成的循环不能用其他语句构成的循环代替
B.do-while语句构成的循环只能用break语句退出
C.用do-while语句构成的循环,在while后的表达式为零时结束循环
D.用do-while语句构成的循环,在while后的表达式为非零时结束循环

9.以下程序段中由while构成的循环执行的次数为【 C 】。
int k=0; while (k=1) k++;
A.执行1次
B.一次也不执行
C.无限次
D.有语法错,不能执行

10.对for(表达式1; ;表达式3){…}可以理解为【 B 】。
A.for(表达式1;0;表达式3){…}
B.for(表达式1;1;表达式3){…}
C.for(表达式1;表达式1;表达式3){…}
D.for(表达式1;表达式3;表达式3){…}

11.以下正确的描述是【 C 】。
A.continue语句的作用是结束整个循环的执行
B.在for循环中,不能使用break语句跳出循环
C.只能在循环体内和switch语句体内使用break语句
D.在循环体内使用break语句或continue语句的作用相同

二、填空题
1.一个C语句中至少应包含一个 。
答案:逗号

2.若定义float a; int b,c;要使用scanf(“a=%f,%o,%d”,&a,&b,&c);语句令a的值是6.3,b的值是10,c的值是5,输入数据的形式

是 。
答案:a=6.3,12,5

3.执行printf(“%s\n”,”thitis\”\101x\”\0by”); 语句,输出为 。
答案:thitis”Ax”

4.能表示“20答案:x>20 && x<30 || x<-100

5.已知m=1,n=5,则执行if(!m+5>=n) n=1; 后,变量n的值是 。
答案:1

6.在C语言的switch语句中,每个“case”和冒号“:”之间只能是 。
答案:空格符

7.已知a、b、c的值分别是1、2、3,则执行下列语句后a和c的值分别是 。
if (a++答案:3,2

8.若有定义char ch; 则执行while ((ch=getchar())!=’E’) printf(“#”); 语句,在输入字符ABCDEF↙(↙表示按回车键)时,输出为 。
答案:####

9.若程序中有int x=-1; 定义语句,则 while(!x) x*=x; 语句的循环体将执行 次。
答案:0

10.执行for (m=1;m++<=5;); 语句后,变量m的值为 。
答案:7。m++<=5;相当于m<=5; m++;当m=6时,不满足m<=5;,退出循环,但m自增为7,

三、读程序写结果
1.#include
void main()
{
int a,b;
float c;
scanf(“%2d%*3d%4f%2d”,&a,&c,&b);
printf(“a=%d, b=%d, c=%f\n”,a,b,c);
上面程序在运行时输入456789.34567,写出输出结果。
答案:a=45, b=56, c=9.340000

2.#include
void main()
{ int k=2;
if (k++%2==0)
if (k++%3==0)
if (k++%5==0)
printf(“%d\n”,k);
else printf(“%d\n”,++k);
}
答案:6

3.#include
void main()
{ int a=0,b=3, c=2;
switch (a)
{ case 0: switch (b==3)
{ case 1: printf(“*”);break;
case 2: printf(“%”);break;
}
case 1: switch (c)
{ case 1: printf(“&”);break;
case 2: printf(“#”);
default: printf(“$”);
}
}
}
答案:*#$

4.#include
void main()
{ int k=0,n;
do
{ scanf(“%d”,&n);
k+=n;
}while (n!=-1);
printf(“k=%d, n=%d\n”,k,n);
}
当运行上面的程序时,从键盘输入2└┘6└┘3└┘1└┘3└┘-1↙,写出运行结果。
答案:k=14, n=-1

5.#include
void main()
{ int i,j;
for (j=10; j<11; j++)
{ for (i=9; iif (j%i==0) break;
if (i>=j-1) printf(“%d\n”,j);
}
}
答案:10

6.#include
void main()
{ int a=0,i;
for (i=1; i<5; i++)
switch (i)
{ case 0:
case 3: a+=1;
case 1:
case 2: a+=2;
default: a+=3;
}
printf(“%d\n”,a);
}
答案:19

四、编程题
1.输入一个小于6位的整数,判断它是几位数,并按照相反的顺序(即逆序)输出各位上的数字,例如输入的整数为1357,则输出为7531。
答案:小于6位的整数,则最多是5位数
代码如下:
#include
main()

{
int a,b,c,d,e,h;
int n;
printf("Input n:");
scanf("%ld",&n);
a=n/10000;
b=n%10000/1000;
c=n%1000/100;
d=n%100/10;
e=n%10;
if(a!=0) h=5;
else if (b!=0) h=4;
else if (c!=0) h=3;
else if (d!=0) h=2;
else if (e!=0) h=1;
else h=0;
printf("%ld id a %d-digit number\n",n,h);
switch(h)
{
case 5: printf("order: %d%d%d%d%d\n",a,b,c,d,e);
printf("converse order: %d%d%d%d%d\n",e,d,c,b,a);
break;
case 4:printf("order: %d%d%d%d\n",b,c,d,e);
printf("converse order: %d%d%d%d\n",e,d,c,b);
break;
case 3:printf("order: %d%d%d\n",c,d,e);
printf("converse order: %d%d%d\n",e,d,c);
break;
case 2:printf("order: %d%d\n",d,e);
printf("converse order: %d%d\n",e,d);
break;
case 1:printf("order: %d\n",e);
printf("converse order: %d\n",e);
default:printf("no input.\n");
}
}

2.输入某学生的考试成绩,如果在90分以上,输出“A”;80~89分输出“B”;70~79分输出“C”;60~69分输出“D”;60分以下输出“E”。
答案:
代码如下:
#include
main()
{
int score;
char grade;
printf("Input score:");
scanf("%d",&score);
if(score>100 || score<0)
printf("data error");
else
{
switch (score/10)
{
case 10:
case 9: grade='A';break;
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
default: grade='E';
}
printf("score=%d, grade=%c\n",score,grade);
}
}

3.输入一行字符,分别统计其中的英文字母、数字、空格和其它字符的个数。
答案:
代码如下:
#include
main()
{
char ch;
int let,dig,spa,oth;
let=dig=spa=oth=0;
printf("Input a string:\n");
while((ch=getchar())!='\n')
if (ch>='A' && ch<='Z' || ch>='a' && ch<='z')
let++;
else if (ch>='0' && ch<='9')
dig++;
else if (ch==' ')
spa++;
else
oth++;
printf("letter=%d, dight=%d, space=%d, other=%d\n",let,dig,spa,oth);
}

4.利用随机数产生函数rand产生10个整数,输出这10个数,并输出它们中的最大值、最小值和平均值。
答案:
代码如下:
#include
main()
{
int m,n,max,min;
float aver,sum;
sum=m=0;
while(m<10)
{
n=rand();
printf("%d ",n);
sum+=n;
if (m==0) max=min=n;
if (n>max) max=n;
if (nm++;
}
aver=sum/m;
printf("\nmax=%d,",max);
printf("min=%d,",min);
printf("average=%f\n",aver);
}

5.编一程序,输出所有水仙花数。所谓水仙花数是指一个三位数,其各位数字立方和等于该数字本身。例如,153=13+53+33,所以153是水仙花数。
答案:
代码如下:
#include
void main()
{
int i,n1,n2,n3,m; /* 153=1^3+5^3+3^3 */
for(i=100; i<=999; i++)
{
n1=i/100;
n2=i/10%10;
n3=i%10;
m=n1*n1*n1 + n2*n2*n2 + n3*n3*n3;
if (m==i)
printf("%d\n",i);
}
}

6.计算π的近似值,π的计算公式为:
要求:精度为0.000001,并输出n

的大小
答案:
代码如下:
#include
#include
void main()
{
int n;
float x1,x2;
n=0;
x2=2;
do
{
n++;
x1=x2;
x2=x1*(2.*n)*(2.*n)/((2.*n-1)*(2.*n+1));
}while(fabs(x1-x2)>0.000001);
printf("Pi = %f ",x2);
}


相关文档