1.已有定义int x;float y; 且执行scanf("%3d%f",&x,&y)语句时,假设输入数据为12345 678↙,则x、y的值分别为(),解释原因。
A.12345 678.000000
B.123 678.000000
C.123 45.678000
D.123 45.000000
D . 原因:%3d,表示读入一个三位数的整数,因此将输入的前三位123赋值给x,把后面45截断,而45和空格赋值给了y
#include <stido.h>
int main(){
int x;
float y;
scanf("%3d%f",&x,%y);
printf("%3d,%f\n",x,y);
}
2.阅读以下程序,当输入数据的形式为:12a345b789↙,已知正确答案为(A)请用文字解释原因。
void main (){
char c1,c2:
int al.a2:
cl = getchar ( );
scanf("%2d",&a1):
c2 = getchar ();
scanf("%3d"&a2):
printf("%d, %d,%c, %c\\n", al, a2. c1. c2):}
A.2.345,1,a
B.12,345,a,b
C.2a,45b,1,3
D.2,789,1,a
首先 c1 = getchar(); , 表示一次只接收一个字符,因此输入的12a345b789↙中1便被赋值给c1,之后的第一次scanf 读入2而不是2a,因为a并不是整数类型,因此第一次scanf只读入2,而后的c2如同c1读入一个字符,c2读入a,最后第二个scanf便读入345
3.填空:以下程序的输出结果为
void main( ){
int k=17;
printf("%d, %o, %x\\n", k, k, k);}
%d表示十进制,%o表示八进制,%x表示16进制
因此输出结果为,17,21,11
4.填空: 以下程序的输出结果为
#include <stdio.h>
void main( ){
printf("\*%f,%4.3f\*\\n", 3.14, 3.1415);
}
输出结果为
*3.140000,3.142*\n
5.
#include<stdio/h>
main(){
char ch;
printf("Press a key and then press Enter:");
ch = getchar();
ch = ch + 32;
putchar(ch);
putchar('\n');
}
6.
#include <stdio.h>
main(){
int a;
char b;
float c;
printf("Please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a);
printf("Please input a character:");
scanf("%c",&b);
printf("character:%c\n",b);
printf("Please input a float number:");
scanf("%f",&c);
printf("float:%f\n",c);
}
需要有一个变量来接收那个空格如:
#include <stdio.h>
main(){
int a;
char b;
float c;
char ch;
printf("Please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a);
ch = getchar();
printf("Please input a character:");
scanf("%c",&b);
printf("character:%c\n",b);
printf("Please input a float number:");
scanf("%f",&c);
printf("float:%f\n",c);
}