你的缓冲区里面有东西,而你的浮点型又是格式化控制的,其中有字符m=,n=,缓冲区里面有东西,它就拿来匹配这2对字符了,后面的m,n没有接收到,它就不管了。
刚才说因为缓冲区里面有东西,匹配的字符,所以接收不到,这里你清空缓冲区就可以了。
我这里说一种方式
fflush(stdin);
看代码:
#include<stdioh>
main()
{
int x,y;
float m,n;
printf("请输入四个数字:\n");
scanf("%d%d",&x,&y);
fflush(stdin);
scanf("m=%f,n=%f",&m,&n);
printf("%d%d\n m=%f,n=%f",x,y,m,n);
}
输入
12 34
m=34,n=45
输出
1234
m=34000000,n=45000000
你如果在输入的时候不加字符格式控制,就可以不用清空缓冲区了,它会自动匹配浮点型,而回车是直接被过滤掉的。
例如:
scanf("%f,%f",&m,&n); 不过输入格式记得加“,”号。
代码和输入格式有误。
1、scanf("%d,%d",&a,&b);按照这个格式,输入数据的时候,应该加上逗号。比如说想输入22 33 就应该 22,33。
2、也可以像这样scanf("%d %d",&a,&b);中间用空格隔开,那样就可以直接输入 22 33了。
scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。该函数的原型为:
# include <stdioh>
int scanf(const char format, );
它有两种用法,或者说有两种格式。
扩展资料
使用scanf的注意事项:
1、参数的个数一定要对应
在前面介绍 printf 时说过,“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。这句话同样对 scanf 有效,即“输入控制符”和“输入参数”无论在“顺序上”还是在“个数上”一定要一一对应。
这种错误是初学者经常犯的,由于粗心大意,少写一个参数。更严重的是,这种错误在编译的时候不会报错。printf 也是一样,即使“输出参数”少写了也不会报错,但从程序的功能上讲这么写就是错的。所以在编程的时候一定要避免这种错误的发生。
2、输入的数据类型一定要与所需要的数据类型一致
在 printf 中,“输出控制符”的类型可以与数据的类型不一致。在 scanf 中,对于从键盘输入的数据的类型、scanf 中“输入控制符”的类型、变量所定义的类型,这三个类型一定要一致,否则就是错的。虽然编译的时候不会报错,但从程序功能的角度讲就是错的,则无法实现需要的功能。
参考资料来源:
百度百科——scanf
void main()
{
int a,b,sum;
printf("请输入a和b的值\n");
scanf("%d%d",&a,&b);
printf("a=%d\nb=%d\n",a,b);
sum=a+b;
printf("a+b=%d\n",sum);
}
scanf("%d",&n);//这就是开个头,之后再输入就是while循环里的scanf输入;
while(n!=-1)//这是多组数据输入的终止条件;n==-1循环终止;
{
sum+=n;
count++;
scanf("%d",&n);//这输入函数作用是,上一个输入的n不等于-1,这里接着输入,维持多组数据循环输入;
}
兄弟,以后上传图时看准方向;看个图费脖子;
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始cpp文件,例如:testcpp。
2、在testcpp文件中,输入C语言代码:
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("%d %d %d %d", a, b, c, d);
3、编译器运行testcpp文件,此时成功用scanf一次性的接收了a、b、c、d4个数字。
#include<stdioh>struct Student
{
int num;
char name[20];
float score;
};
int main()
{
struct Student student1,student2;
scanf("%d,%s,%f",&student1num,student1name,&student1score);
scanf("%d,%s,%f",&student2num,student2name,&student2score);
printf("the high score is:\n");
if(student1score>student2score)
{
printf("%d\n%s\n%f\n",student1num,student1name,student1score);
}
else if(student1score<student2score)
{
printf("%d\n%s\n%f\n",student2num,student2name,student2score);
}
else
{
printf("%d\n%s\n%f\n",student1num,student1name,student1score);
printf("%d\n%s\n%f\n",student2num,student2name,student2score);
}
return 0;
}
这样试试,结构体的定义应该放在函数外面,不然放在函数里面
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)