《程序设计基础(C)》习题指导书
1.已有定义int x,float y;且执行scanf(\语句,若从第一列开始输入数据12345*678<回
车>,则x的值为__123___,y的值为___45_____。 2. 执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1=’A’、c2=’a’,
正确的输入数据形式为_ a=3 b=7 回车_ x=8.5 y=71.82 回车c1=A c2=a回车 __________。 main( )
{ int a,b;float x,y;char c1,c2; scanf(\scanf(\scanf(\
printf(\}
3. 若有以下定义和语句,为使变量c1得到字符’A’,变量c2得到字符’B’,正确的输入形式是
____A B 回车_________。 char c1,c2;
scanf(\
4. 假设变量a、b和c均是整数,以下语句借助中间变量把a、b和c中的值进行交换,即:把b中的值给
a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30,交换后,a=20、b=30、c=10。请填空。_m=a_____;a=b;b=c;_c=m____ ;
5. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。a+=__b___ ;
b=a-____b__; a-=____b__;
6. 已知字母A的ASCII码值为65。以下程序的输出结果是__ a=66,b=E ______。 #include
a='A'+'4'-'3'; b='A'+'6'-'2';
printf(\}
7. 若要求下列程序的输出结果为8.0,请填空 。 #include
{ int k=2,m=5;
float s,x=1.2,y=___3.6_ ; s=2/3+k*y/x+m/2; printf(\}
8. 以下程序的运行结果是_____20___。 #include
printf(\}
9.有以下程序:
#include
第 11 页 共 64 页
《程序设计基础(C)》习题指导书
{ int k=0;char c1='a',c2='b';
scanf(\ printf(%d,%c,%c\\n\}
若运行时从键盘输入:55 A B<回车>,则输出的结果是__55,A,B______。 10.以下程序输出的结果是_________。 main( )
{ int x=1,y=2;
printf(\ printf(\}
x=1 y=2 sum=3
10 Squared is :100 ㈡.选择题
1.以下程序的输出结果是( )。(注:*代表空格) main( )
{ printf(\ printf(\}
A.-s1=chinabeijing***- B.-s1=chinabeijing***- -s2=--chi- -s2=chi**-
C.-s1=-**chinabeijing- D.-s1=***chinabeijing- -s2=**chi- -s2=chi**-
2.已有定义int a=-2;和输出语句:printf(\以下正确的叙述是( )。 A.整型变量的输出格式符只有%d一种
B.%x是格式符的一种,它可以适用于任何一种类型的数据
C.%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 3.以下程序的运行结果是( )。 main( )
{ long y=-43456;
printf(\ printf(\ printf(\ printf(\}
A.y=***-43456 B.y=-43456 y=-**43456 y=-43456 y=-0043456 y=-0043456 y=-43456 y=+*-43456 C.y=-43456 D.y=**-43456 y=-43456 y=-0043456 y=-0043456 y=00043456 y=**-43456 y=+43456
4.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(第 12 页 共 64 页
。
)《程序设计基础(C)》习题指导书
A.scanf(\
B.scanf(\C.scanf(\D.scanf(\
5.根据以下定义语句和数据的输入方式,scanf语句的正确形式应为( )。 已有定义:float f1,f2; 数据的输入方式:4.52<回车>
3.5<回车>
A.scanf(\ B.scanf(\
C.scanf(\
6.阅读以下程序,当输入数据的形式为25,13,10<回车>,程序的输出结果为( )。 main( )
{ int x,y,z;
scanf(\ printf(\}
A.x=y=z=48 B.x=y=z=35 C.x=z=35 D.不确定的值 7.设有以下程序 #include
{ char c1,c2,c3,c4,c5,c6;
scanf(\ c5=getchar(); c6=getchar(); putchar(c1); putchar(c2);
printf(\}
若运行时从键盘输入数据:abc<回车>,defg<回车>,则输出结果是( )。 A.abcd B.abde C.abef D.abfg
8.有输入语句:scanf(\为使 a的值为1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是( )。
A.132<回车> B.1,3,2<回车> C.a=1*b=3*c=2 <回车> D.a=1,b=3,c=2<回车> 9.若有以下定义,则正确的赋值语句是( )。 int a,b; float x;
A.a=1,b=2, B.b++; C.a=b=5 D.b=int(x);
10.设x、y均是float型变量,则以下不合法的赋值语句是( )。 A.++x B.y=(x%2)/10; C.x*=y+8; D.x=y=0; ㈢.程序设计题
1.编写程序:输入一个字符,输出该字符的前驱字符和后继字符,并按ASCII码值从大到小顺序输出这3个字符及其对应的ASCII码值。
2.输入三角形的三边长,求三角形的面积。
3. 下面程序的功能是读入直角三角形两直角边的长度,输出斜边长度。请将程序补充完整。 #include
main( ) { int x,y; double z=sqrt(a*a+b*b); printf(“斜边长度为:%lf\\n”,z);}
第 13 页 共 64 页
《程序设计基础(C)》习题指导书
第三章 选择结构程序设计
一.知识点
1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意&&、||的运算规则。
2.三种if语句。
3.选择结构的嵌套,注意if与else的配对。 4.条件运算符:?与 :
5.switch语句,注意其执行过程。 6.选择结构程序设计思想。
二.习题 ? 基础篇
㈠.填空题
1.C语言中用 非0 表示逻辑值“真”,用 0 表示逻辑值“假”。
2.C语言中的关系运算符按优先级别是 、 、 、 、 、 。 答案:>、<、>=、<=、==、!=
3.C语言中的逻辑运算符按优先级别是 、 、 。 答案:!、&&、||
4.C语言中的关系运算符和逻辑运算符的优先级别是 、 、 、 、 、 、 、 、 。
!、>、<、>=、<=、==、!=、&&、||
5.C语言中逻辑运算符的 ! 优先级高于算术运算符。 6.将下列数学式改写成C语言的关系表达式或逻辑表达式:
a=b或a
main()
{ int a=100;
if(a>100) printf(“%d\\n”,a>100); else printf(“%d\\n”,a<=100);} 8.若已知a=10、b=15、c=1、d=2、e=0,请分别给出下列表达式的运算结果:
⑴ a*b && c 1 ⑵ a+b>10 || a+b<0 1 ⑶ e 0 ⑷ c==b>e 1 ⑸ !a
9.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 1 、c= 1 。
if(a>c);b=a;a=c;c=b;
10.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 2 、c= 2 。
if(a>c)b=a;a=c;c=b;
11.当a=1、b=2、c=3时,执行以下if语句后,a= 1 、b= 2 、c= 2 。
if(a>c)b=a,a=c;c=b;
12.将以下两条if语句合并为一条if语句:
if(a>b) scanf(“%d”,&x);else scanf(“%d”,&y); if(a<=b) i++;else j++; 答案:if(a>b) {scanf(“%d”,&x);j++;}
第 14 页 共 64 页
《程序设计基础(C)》习题指导书
else {scanf(“%d”,&y);i++;}
13.将以下嵌套的if语句改写成不嵌套的if语句:
if(w<0) k=0;else if(w<=100) k=1; else k=0; 答案:if(w>=0&&w<=100)k=1; else k=0;
14.以下程序判断输入的一个整数是否能被3或7整除,若能整除,输出“YES”,若不能整除,输出“NO”。请填空:
#include
17.C语言提供三种逻辑运算符,按优先级高低它们分别是____!__、_&&____、 _||____ 。 18.设a=1,b=6,c=2,表达式 a+b>c && b==c运算后的值为____0___。
19.写出命题 “-6-6&&a<-3)||(a>2&&a<=5)_____ 。
20.条件“y能被4整除但不能被100整除,或y能被400整除”的逻辑表达式是 (y%4==0&&y0!=0)||(y@0==0) 。
21.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式是 (x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0) 。
22.若有x=1,y=2,z=3,则表达式(x a = (x--==y++) ? x-- : y++ ; b = x++ ; c = y ; 24.若有条件“2 if(a>b){scanf( “ %d”,&a); n++;}else{ scanf( “ %d”,&b); m++;}。 语句1: if(a>b)scanf( “ %d”,&a); else scanf( “ %d”,&b); 语句2: if(a<=b)m++; else n++; ㈡.选择题 1.若给定条件表达式(M)?(a++):(a--),则和表达式M等价的表达式为( )。 A.M==0 B.M==1 C.M!=0 D.M!=1 2.为表示关系x≥y≥z,应使用的C语言表达式是( )。 A.(x>=y) && (y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 3.以下程序的输出结果是( C )。 A.0 B.1 C.2 D.3 main() { int a=2,b=-1,c=2; if(a if(b<0) c=0; else c+=1; printf(“%d\\n”,c); } 4.以下程序的输出结果是( )。 A.1 B.2 C.3 D.4 第 15 页 共 64 页