c中关于scanf的问题?

laxpio 2008-11-12 10:50:53
发现一段代码如下:
#include<stdio.h>
#include<conio.h>
int main()
{
int i,ren,fen,zongfen=0,bujige=0;
float pingjun;
printf("请输入人数:");
scanf("%i",&ren);
for(i=1;i<=ren;i++)
{
printf("请输入第%i个人的分数:",i);
scanf("%i\n",&fen);
zongfen+=fen;
if(fen<65)
bujige++;
}
pingjun=(float)zongfen/ren;
printf("全班人数的平均分是:%f\n",pingjun);
printf("不及格人数是:%i\n",bujige);
return 0;
}
运行出错,改为
#include<stdio.h>
#include<conio.h>
int main()
{
int i,ren,fen,zongfen=0,bujige=0;
float pingjun;
printf("请输入人数:");
scanf("%i",&ren);
for(i=1;i<=ren;i++)
{
printf("请输入第%i个人的分数:",i);
scanf("%i",&fen);
zongfen+=fen;
if(fen<65)
bujige++;
}
pingjun=(float)zongfen/ren;
printf("全班人数的平均分是:%f\n",pingjun);
printf("不及格人数是:%i\n",bujige);
return 0;
}
就没错
只是for循环中的
printf("请输入第%i个人的分数:",i);
scanf("%i\n",&fen);
改为printf("请输入第%i个人的分数:",i);
scanf("%i",&fen);
这是为什么呢?
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliang_c 2008-11-13
  • 打赏
  • 举报
回复
学习一下
lbh2001 2008-11-13
  • 打赏
  • 举报
回复
scanf("%i\n",&fen); 会导致scanf匹配fen后还要匹配一个非空白符才返回

scanf("%i ",&fen); // %i后有一空格

请不要将scanf与printf的格式串相混淆,scanf不需要\n
laxpio 2008-11-13
  • 打赏
  • 举报
回复
编译没错 运行出错
在输入第一个人分数时 要输入两个数 这两个数都被获取
mqwind 2008-11-12
  • 打赏
  • 举报
回复
第一段,我机器上编译通过,你出什么错了?把出错信息粘出来。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧