关于c语言的scanf函数的逗号问题!!
#include<stdio.h>intmain(){structstudent{intnum;charname[20];floatscore;}student1,stu...
#include<stdio.h>
int main()
{
struct student
{int num;char name[20];float score;
}student1,student2;
scanf("%d,%s,%f",&student1.num,student1.name,&student1.score);
scanf("%d,%s,%f",&student2.num,student2.name,&student2.score);
if(student1.score>student2.score)
printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
else if(student1.score<student2.score)
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
else
{printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
}
return 0;
}这程序运行后结果与预想的不同,
如果去掉scanf函数的双引号里的逗号就正确了。
错误提示如图 展开
int main()
{
struct student
{int num;char name[20];float score;
}student1,student2;
scanf("%d,%s,%f",&student1.num,student1.name,&student1.score);
scanf("%d,%s,%f",&student2.num,student2.name,&student2.score);
if(student1.score>student2.score)
printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
else if(student1.score<student2.score)
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
else
{printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
}
return 0;
}这程序运行后结果与预想的不同,
如果去掉scanf函数的双引号里的逗号就正确了。
错误提示如图 展开
展开全部
对于scanf()函数,如果格式控制串里有逗号(或其他非格式符号),键盘输入时,必须严格按照控制串的内容键入,不能随意输入。如scanf("a=%d,b=%d",&a,&b);响应输入是a=xx,b=xx(xx是整形数)。scanf()函数还有一个特点较为常用,该函数会将白字符(空格、<Tab>、<Enter>)作为数据间的分隔符,比如scanf("%d%s%d",&a,str,&b);,响应输入是:12 asder334 35,此后,12赋给a,"asder334 "拷贝到str数组,35赋给b,且各个数据之间的空白符可以是一个,也可以是多个。
#include <stdio.h>
int main() {
struct student {
int num;
char name[20];
float score;
}student1,student2;
scanf("%d%s%f",&student1.num,student1.name,&student1.score);
scanf("%d%s%f",&student2.num,student2.name,&student2.score);
if(student1.score > student2.score)
printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
else if(student1.score < student2.score)
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
else {
printf("%d,%s,%f\n",student1.num,student1.name,student1.score);
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
}
return 0;
}
更多追问追答
追问
我不是严格按照控制串输入了吗?
追答
你的代码与输出内容明显不符。因为满足
if(student1.score < student2.score)
printf("%d,%s,%f\n",student2.num,student2.name,student2.score);
所以输出是
10101,wang,89
不可能输出两行
展开全部
输入字符wang,89时候这整个应该被默认为字符串存入了student1.name
追问
什么意思,能详细点不?谢谢!
追答
scanf("%d,%s,%f",&student1.num,student1.name,&student1.score);
你的这条语句输入时,你输入的10101,wang,89+回车;所以student1.num里面是10101,而student1.name是wang,89+回车,这个全部存在字符串里面,然此时你的控制字符串要求输入一个逗号,你输入的是数字,所以student1.score没有存放内容,应该为0。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询