习题 3
3.1 单选题
1.若变量a、i已正确定义,且i已正确赋值,则合法的语句是( )。
A.a==1
B.++i;C.a=a++=5;
D.a=int(i);
2.以下程序的输出结果是( )。
#include "stdio.h" main( ) { int y=3,x=3,z=1; printf("%d %d\n",(++x,y++),z+2); }
A.3 4
B.4 2
C.4 3
D.3 3
3.若有以下定义和语句:
int u=010,v=0x10,w=10; printf("%d,%d,%d\n",u,v,w) ;
则输出结果是( )。
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
4.若有以下定义和语句:
char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是( )。
A.2,M
B.3,E
C.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
5.以下程序段的输出结果是( )。
int a=1234; printf("%2d\n",a);
A.12
B.34
C.1234
D.提示出错、无结果
6.以下程序的输出结果是( )。
#include "stdio.h" main( ) { char c='z'; printf("%c",c-25); }
A.a
B.Z
C.z-25
D.y
7.以下程序的输出结果是( )。
main( ) {int k=17; printf("%d,%o,%x \n",k,k,k); }
A.17,021,0x11
B.17,17,17
B.17,0x11,021
D.17,21,11
8.以下程序的输出结果是( )。
main( ) { double d=3.2; int x,y; x=1.2;y=(x+3.8)/5.0; printf("%d \n", d*y); }
A.3
B.3.2
C.0
D.3.07
9.下列程序执行后的输出结果是(小数点后只写1位)( )。
main( ) { double d; float f; long k; int i; i=f=k=d=20/3; printf("%d%ld%f%f \n", i,k,f,d); }
A.6 6 6.0 6.0
B.6 6 6.7 6.7
C.6 6 6.0 6.7
D.6 6 6.7 6.0
10.下列语句:
printf("a\bre\'hi\'y\\\bou\n");
的输出结果是( )。提示,'\b'是退格符。
A.a\bre\'hi\'y\\\bou
B.a\bre\'hi\'y\bou
C.re'hi'you
D.abre'hi'y\bou
11.x、y、z被定义为int型变量,若从键盘上给x、y、z输入数据,则正确的输入语句是( )。
A.INPUT x、y、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
12.设i是int型变量,f是float型变量,要通过语句“scanf("i=%d,f=%f",&i,&f);”给i赋值100,f赋值765.12,则正确的输入为( )。
A.100765.12
B.i=100,f=765.12
C.100765.12
D.x=100y=765.12
3.2 填空题
1.若有定义:
int a=10,b=9,c=8;
接着顺序执行下列语句后:
c=(a-=(b-5)); c=(a%11)+(b=3);
则变量b中的值是__________。
2.以下程序的输出结果是__________。
#include "stdio.h" main( ) { int a=177; printf("%#o\n",a); }
3.以下程序的输出结果是__________。
#include "stdio.h" main( ) { int a=0; a+=(a=8); printf("%#x\n",a); }
4.以下程序的输出结果是__________,程序的功能是__________。
main( ) { int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%-3d,%-3d\n", a, b ); }
5.下列程序的输出结果是16.00,请在程序中填空。
#include "stdio.h" main( ) { int a=9, b=2; float x=________ , y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n", z ); }
6.若有语句:
int i=-19,j=i%4; printf("%.3d\n",j);
则输出结果是__________。
7.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是__________。
int b,c; float a; scanf("%f,%d,c=%d",&a,&b,&c);
8.若有程序:
#include "stdio.h" main( ) { int i,j; scanf("i=%d,j=%d",&i,&j); printf("i=%d,j=%d\n",i,j); }
要求给i赋10,给j赋20,则应该从键盘输入__________。
9.以下程序的输出结果是__________。
#include "stdio.h" main( ) { int x=65; float pi=3.1416,a=123.456; double b=8765.4321; printf("(1)%d\n",x); printf("(2)%6d,%c\n",x,x); printf("(3)%f,%f\n",56.1234,a); printf("(4)%14f\n",pi); printf("(5)%14.3lf\n",b); printf("(6)%e\n",586.4); printf("(7)%14e\n",pi); printf("(8)%g\n",pi); printf("(9)%8.4g\n",b); printf("(10)%12g,%g\n",pi,b); }
10.执行以下程序时,若从第一列开始输入数据,为使变量a=2,b=5,x=8.8,y=76.34, c1='A',c2='a',正确的数据输入形式是__________。
main( ) { int a,b; float x,y; char c1,c2; scanf("a=%d b=%d",&a,&b); scanf("x=%f y=%f",&x,&y); scanf("c1=%d c2=%d",&c1,&c2); printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c",a,b,x,y,c1,c2); }
3.3 编程题
1.编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式输出。
x y 十进制数 10 8 八进制数 12 10 十六进制数 a 8
2.编写一个程序,输入一个大写英文字符('B'~'Y'),输出它的前导字符、该字符本身及其后续字符。
3.编写一个程序,输入一个3位正整数,要求反向输出对应的整数,如输入123,则输出321。编写程序并给出相应的程序流程图。
4.编写程序,读入3个double型数据,求它们的平均值,保留此平均值小数点后1位数,对小数点后第2位数进行四舍五入,最后输出结果。
5.编写程序,读入3个整数给变量a、b、c,然后交换它们的值,把a原来的值给b,把b原来的值给c,把c原来的值给a。