如下表学号 姓名 数学成绩
1 Zhang 90
2 Li 85
3 Wang 73
4 Ma 92
5 Zhen 86
6 Zhao 100
7 Gao 87
8 Xu 82
9 Mao 78
10 Liu 95
为什么不对?
#include<stdio.h>
struct Student
{ int num;
char name[10];
int grade;
};
void main()
{void input(struct Student stu[]);//函数声明//
void order(struct Student stu[]);
struct Student stu[10],*p=stu;
int sum,i;
input(p);
order(p);
sum+=stu[i].grade;
printf("Sum=%d",sum);
}
void input(struct Student stu[])
{int i;
printf("请输入各学生的信息:学号、姓名、成绩:\n");
for(i=0;i<10;i++)
scanf("%d%s%d",&stu[i].num,stu[i].name,stu[i].grade);
}
void order(struct Student stu[])
{ int i,a[5]={0},j,k;
a[i]=stu[i].grade;
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
if(a[j]<a[i])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(k=0;k<10;k++)
{
if(stu[k].grade==a[i])
{ printf("%d%s%d",stu[k].num,stu[k].name,stu[k].grade);
break;
}
continue;
}
}
}
程序都没有错,但是为什么输入不了信息,总是输入两个出错,是输入方式不对吗
追答每行输入三个数据,用空格隔开,结束,如
1 Zhang 90
2 Li 85
3 Wang 73
4 Ma 92
5 Zhen 86
6 Zhao 100
还有一个问题,排序没有起作用啊?怎么输出排序后的?
已经好了,谢谢啦
可以写在主函数里面做声明,书上也是这样写的,现在的问题是不能输入十条数据