关于c语言的小问题

yang8210 2003-05-29 10:44:53
struct student
{int num;
char name[12];
float mark;
};
main()
{
struct student stu[2];
int i,j,temp;
float max;
printf("\n");
for(i=0;i<2;i++)
scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].mark);
for(max=stu[0].mark,i=0;i<2;i++)
if(max<=stu[i].mark)
{max=stu[i].mark;
j=i;
}
printf("\n%d");
printf("%d\t%s\t%f",stu[j].num,stu[j].name,stu[j].mark);
}
错误为:运行错误为 floating point error:domain.
请各位大虾赐教,谢谢。
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
william0129 2003-06-02
  • 打赏
  • 举报
回复
这个 程序有很多小问题
首先,应有#include<stdio.h>,否则使用printf和scanf是非法的。
其次,你的程序没有返回值,有在main前加上void
最后,有一个非常隐蔽的问题,就是sanf 函数惹的祸。你输入是先输入的是int型,后面是char型,故输完int的数据后面的空格或者回车被char接受了。对于这个多看看基础知识就没问题了!
greening 2003-06-01
  • 打赏
  • 举报
回复
1。没有#include <stdio.h>
2。scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].mark);
改为:
scanf("%d,%s,%f",&stu[i].num,&stu[i].name,&stu[i].mark);
3。虽然没错,但是没有意义。
printf("\n%d");
改为:
printf("\n");
4。scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].mark);
改为:
scanf("%d%s%f",&stu[i].num,stu[i].name,&stu[i].mark);
输入时,以这种方式输入:
3(空格)kevin(空格)4.645(回车)
5(空格)greening(空格)9.999(回车)
即可得到正确答案。
5。main()前面加上返回值int,在main()中最后加上一句
return 0;
这也不是错误,一个好习惯而已。
flab_lwq 2003-05-29
  • 打赏
  • 举报
回复
scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].mark);出问题了
yang8210 2003-05-29
  • 打赏
  • 举报
回复
hillyee(山之笛)
struct student stu[2] 是结构数组。
hillyee 2003-05-29
  • 打赏
  • 举报
回复
变量temp没有用。
student stu[2] 不行,不能传递函数值。
yang8210 2003-05-29
  • 打赏
  • 举报
回复
printf("\n%d");
这一行不要。
ewayne 2003-05-29
  • 打赏
  • 举报
回复
scanf("%d,%s,%f",&stu[i].num,stu[i].name,&stu[i].mark);

浮点型这样输入不合法.

69,373

社区成员

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

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