用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。问在键盘上如何输入

#include <stdio.h>
int main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",x,y);
scanf("%c%c",&c1,&c2);
printf("%d %d %f %e %c %c\n",a,b,x,y,c1,c2);
return 0;
}

这题应该是谭浩强教授的c语言程序设计(第四版)第三章第五题:



运行如下:

或是

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-03
1、scanf函数与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

scanf函数的用 法: int scanf(char *format[,argument,...]);
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
其调用格式为: scanf("<格式化字符串>",<地址表>);
scanf()函数返回成功赋值的数据项数,出错时则返回EOF。
2、程序如下:
void main()
{
int b;
float a,x,y;
char c1,c2;
scanf("%f",&a);
scanf("%d",&b);
scanf("%f",&x);
scanf("%f",&y);
scanf("%s",&c1);
scanf("%s",&c2);
printf("a=%f",a);
printf("b=%d",b);
printf("x=%f",x);
printf("y=%f",y);
printf("c1=%s",c1);
printf("c2=%s",c2);
}
第2个回答  2021-04-10

答案可以是:

a=3b=7 8.5 71.82Aa

其中7与8.5之间是空格
8.5与71.82之间是空格
也并非一定要是空格制表符回车均可(但最好不要是字符,具体可查阅p76(4))

①第一个scanf如何输入?
可见第一个scanf中的 格式控制(第一个参数) 中含 普通字符,那么在 输入 时就要连 普通字符一起输入 (具体可参考 p75 3(2))

②第二个scanf如何输入?
8.5需要与前方的7之间插入空格,且与后方的71.82之间也插入空格,表示8.5数据的完结(具体可查阅p76(4))

③第三个scanf如何输入?
第三个scanf直接在71.82后输入Aa即可,因为第二个csanf识别到A时,就代表非法字符一般(具体可查阅p76(4)),也代表71.82的完结 ;其次char只占一个字符,故A和a可连在一起,当读取到A时自动完结,且赋值给c1

每两个字符数据之间都务必需要认真考虑
答案仅供参考,本人刚学
参考资料:谭浩强的 c语言程序设计(第五版) p76(4)、p75 3(2)

第3个回答  2012-11-08
#include <stdio.h>
int main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%db=%d",&a,&b);
//scanf("%f%e",x,y); //这行少了两个取地址符号“&”;scanf("%f%e",&x,&y);
getchar(); //将这行添上
scanf("%c%c",&c1,&c2);
printf("%d %d %f %e %c %c\n",a,b,x,y,c1,c2);
return 0;
}
然后这样输入:
a=3b=4
45 56
ab
结果为:
3 4 45.000000 5.600000e+001 a b
Press any key to continue本回答被网友采纳
第4个回答  2021-04-10
答案可以是:
a=3b=7 8.5 71.82Aa
其中7与8.5之间是空格
8.5与71.82之间也是空格
也并非一定要是空格 具体可参考p76(4)
①第一个scanf如何输入?
可见scanf中的 格式控制(第一个参数) 中含 普通字符,那么在 输入 时就要输入,具体可参考 p75 3(2)
②第二个同①
③直接在71.82后输入Aa即可,因为识别到A时就代表非法字符一般p76(4),表示71.82数据的完结,其次char只占一个字符
故A和a可连在一起,当读取到A时自动完结且赋值给c1

两个数据之间应当断开