4.3 综合自测
一、选择题
1.以下选项中不是C语句的是( )。
A.{inti;i++;printf("%d\n",i);} B.;
C.a=5,c=10 D.{ ; }
2.执行以下程序时输入1234567,程序的运行结果为( )。
#include <stdio.h>
main()
{ int x,y;
scanf("% 2d% 2ld",&x,&y);
printf("% d\n",x+y);
}
A.17 B.46 C.15 D.9
3.若有定义chara;intb;floatc;doubled;,则表达式a*b+c-d的结果为( )型。
A.double B.int C.float D.char
4.若有定义inta,b;,则用语句scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是( )。
A., B.空格 C.回车 D.Tab键
5.运行下面的程序,如果从键盘上输入:
ab<回车>
c <回车>
def<回车>
则输出结果为( )。
#define N 6
#include <stdio.h>
main()
{ char c[N];
int i=0;
for( ;i<N;c[i] =getchar(),i++);
for( i=0;i<N;i++) putchar(c[i]);printf("\n");
}
A.a B.a C.ab D.abcdef
b b c
c c d
d d
e
f
6.以下程序的输出结果是( )。
#include <stdio.h>
main()
{ printf("% f",2.5+1*7% 2/4);
}
A.2.500000 B.2.750000 C.3.375000 D.3.000000
7.根据定义和数据的输入方式,输入语句的正确形式是( )。
已有定义:floatf1,f2;
数据的输入方式:4.52
3.5
A.scanf("%f,%f",&f1,&f2); B.scanf("%f%f",&f1,&f2);
C.scanf("%3.2f%2.1f",&f1,&f2); D.scanf("%3.2f,%2.1f",&f1,&f2);
8.以下程序不用第3个变量,实现将两个数进行对调的操作,请填空。
#include <stdio.h>
main()
{ int a,b;
scanf("% d% d",&a,&b);
printf("a=% d b=% d",a,b);
a=a+b;b=a-b;a=______;
printf("a=% d b=% d\n",a,b);
}
A.a+b B.a-b C.b*a D.a/b
二、操作题
下列给定程序中,函数fun()的功能是进行数字字符转换。若形参ch中是数字字符‘0’ ~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’;若是其他字符则保持不变。并将转换后的结果作为函数值返回。
请在标号处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。
试题程序
#include <stdio.h>
【1】fun(char ch)
{ if(ch> = '0'&&【2】)
return '9'-(ch-【3】)
return ch;
}
main()
{ char c1,c2;
printf("\nThe result:\n");
c1= '2';c2 = fun(c1);
printf("c1=% cc2=% c\n",c1,c2);
c1= '8';c2 = fun(c1);17
printf("c1=% cc2 =% c\n",c1,c2);c1= 'a';c2 = fun(c1);
printf("c1=% cc2=% c\n",c1,c2);
}