
c语言编程,输入学生成绩记录表重的信息。再按从高到低的排序输出,并计算总分
如下表学号姓名数学成绩1Zhang902Li853Wang734Ma925Zhen866Zhao1007Gao878Xu829Mao7810Liu95为什么不对?#inc...
如下表学号 姓名 数学成绩
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
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;
}
}
} 展开
2个回答
展开全部
#include <stdio.h>
struct Student {
int num;
char name[10];
int grade;
};
void main() {
void input(struct Student stu[],int n);//函数声明//
void order(struct Student stu[],int n);
int sum(struct Student stu[],int n);
struct Student stu[10];
input(stu,10);
order(stu,10);
printf("Sum = %d\n",sum(stu,10));
}
void input(struct Student stu[],int n) {
int i;
printf("请输入各学生的信息:学号、姓名、成绩:\n");
for(i = 0;i < n;i++)
scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].grade);
}
void order(struct Student stu[],int n) {
int i,j;
struct Student temp;
for(i = 0;i < n - 1;i++) {
for(j = i + 1;j < n;j++){
if(stu[i].grade < stu[j].grade) {
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
int sum(struct Student stu[],int n) {
int i,sum = 0;
for(i = 0; i < n; ++i)
sum += stu[i].grade;
return sum;
}
更多追问追答
追问
程序都没有错,但是为什么输入不了信息,总是输入两个出错,是输入方式不对吗
追答
每行输入三个数据,用空格隔开,结束,如
1 Zhang 90
2 Li 85
3 Wang 73
4 Ma 92
5 Zhen 86
6 Zhao 100
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询