一、单选题
1、以下程序的运行结果是________。
#include <stdio.h>
int main()
{ int a=12345,b=1234;
float c=34567.899;
printf("%4d\n",a);
printf("%d\t%s\n",b,"Welcome");
printf("%10.2f\n",c);
return 0;
}
A.
12345
1234____Welcome
__34567.90
B.
12345
1234_______Welcome
__34567.90
C.
1234
1234____Welcome
__34567.89
D.
2345
1234_______Welcome
__34567.899
解析:答案选A
2、已有如下程序定义和输入语句,要求输入变量a,b,c,d的值分别为 10,‘a’,‘b’,1234.56,当从屏幕的第一列开始输入数据,程序的输出如下:
a=10
b=a
c=b
d=1234.560000
则下列正确的数据输入方式是________。
#include <stdio.h>
int main()
{ int a;
char b,c;
double d;
scanf("a=%d",&a);
getchar();
scanf("%c",&b);
scanf("c=%c",&c);
scanf("%lf",&d);
printf("a=%d\nb=%c\nc=%c\nd=%f\n",a,b,c,d);
return 0;
}
A. a=10<回车> a<回车> c=b<回车> 1234.56<回车>
B. a=10<回车> 'a'<回车> c='b'<回车> 1234.56<回车>
C. 10<回车> ab<回车> 1234.56<回车>
D. a=10a <回车> c=b1234.56<回车>
解析:答案选A
格式控制字符%c输入字符时不需要单引号,源程序中有一行getchar(),D选项中a=10a有误,10后紧跟字符a,这样字符a会被getchar()读入并舍弃,而之后的字符“回车”会被变量b读入。选项A正确。
3、执行程序,并按下列方式输入数据(从第1列开始输入)
12<回车>
34<回车>
以下程序的运行结果是________。
#include <stdio.h>
int main()
{ char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
return 0;
}
A、1234
B、12
C、12
3
D、12
34
解析:答案选C
%c只会读取一个字符,输入12,只会读取1而不是12,请看图示:
4、以下程序的运行结果是________。
#include <stdio.h>
int main()
{ char c='A';
int n=66,tmp;
float f=23.456;
printf("c=%d\tc=%o\n", c,c);
printf("n=%c\tn=%x\n", n,n);
tmp=printf("f=%5.1f\tf=%3.2f\n",f,f);
printf("%d", tmp);
return 0;
}
A、c=65 c=101 n=B n=42 f=_23.5_f=23.46 16
B、c=65 c=101 n=B n=42 f=_23.5_f=.46 13
C、c=65 c=101 n=B n=42 f=_23.5_f=0.46 14
D、c=65 c=101 n=B n=42 f=_23.5_f=.46 14
解析:答案选A
有关格式化输入输出的知识点总结如下:
printf()的返回值:返回成功写入的字符个数。(\n也算)
scanf()的返回值:返回正确输入参数的个数。
5、语句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
解析:答案选B
6、以下程序的输出结果是________。
int main()
{ float x=3.6;
int i;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
return 0;
}
A、x=3.600000,i=4
B、x=3,i=3
C、x=3.600000,i=3
D、x=3 i=3.600000
解析:答案选C
7、下列语句的结果是________。
int main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
return 0;
}
A、3,3
B、3,4
C、4,3
D、4,4
解析:答案选D
8、double x; scanf(“%lf”,&x);不可以正常赋值给x变量的常量是________。
A、123
B、100000
C、1.23e4
D、“abc”
解析:答案选D
"abc"是字符串。
9、putchar函数可以向终端输出一个________。
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值
解析:答案选D
scanf和printf可以针对各种各样类型的数据,比如整型、字符、浮点型都行,但getchar和putchar只针对字符。
10、运行以下程序,输入:a,b<回车>,则程序的运行结果是________。
#include <stdio.h>
int main()
{ char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(getchar());
return 0;
}
A、a,b
B、ab
C、a,
D、,b
解析:答案选B
二、填空题
11、以下程序的功能:输入半径r,求半径为r的圆的面积和半径为r的球的体积,请填空。
#include <stdio.h>
#define PI 3.14
int main()
{ double r ,area , volume;
int t;
printf("please input r:\n");
t=scanf("%____", ____);
if ( t____ && r>=0 )
{ area=PI*r*r;
volume=____/3*PI*r*r*r;
printf("The area is %.2f.\n", area);
printf("The volume is %.2f.\n", volume);
}
else
printf("Input error!\n");
return 0;
}
解析:答案是:(1) lf (2) &r (3) >0或>=1或==1 (4) 4.0或(float)4或(double)4
代码思路:
1、输入的半径应该是浮点数;
2、scanf的返回值作为if语句的条件进行判断,如果成功输入一个浮点数,scanf函数返回值为1,进入if语句,进行面积计算,输入错误,进入else语句,程序停止;
3、进入if语句开始计算面积:S=Πrr;体积:V=4.0/3Πrrr,注意此处的除法运算/要想得到一个浮点数,/左边应该输入浮点数,而非整数4。
12、getchar()函数,执行一次只能接收一个____。
解析:答案是:字符
13、下列语句输出的结果是____,int a=-1; printf(“%x”,a);
解析:答案是:ffffffff
运算是用的补码,但格式化打印是打印的原码,%x输出的是无符号十六进制数。
原码:1000 0000 0000 0000 0000 0000 0000 0001(4个字节)
反码:1111 1111 1111 1111 1111 1111 1111 1110(4个字节)
补码:1111 1111 1111 1111 1111 1111 1111 1111(4个字节)
A=-1在计算机中存储为补码1111 1111 1111 1111 1111 1111 1111 1111,无符号十六进制打印,则最高位变为数值位,不表示正负,十六进制中,每1111=f,所以1111 1111 1111 1111 1111 1111 1111 1111=ffffffff