各位大哥帮忙看一下,小弟不知道错在哪了!(学生成绩的输入输出)
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define N 2
/*void input(struct student info[],int num);
void Sum_andAve(struct student info[],int num);//总分和平均成绩函数声明
void output(struct student info[],int num);*/
struct student//结构体的声明//
{
char name[10]; // 姓名
int str_num; //学号
float cgrade; //C语言成绩
float egrade; // 英语成绩
float mgrade; // 数学成绩
float pgrade; // 物理成绩
float dgrade; // 电路成绩
float Ave; // 平均分
float sum; // 总分
};
struct student input(struct student info[],int num)//输入函数声明//
{// 18
int i;
printf("\tPlease input student's infomation::\n");
printf("\t姓名----学号----C语言----英语----数学----物理-----电路\n\t");
for(i=0;i<num;i++)
{
printf("please input the %dth student's infomation::\n",i);
printf("\t姓名::");scanf("%s",&info[i].name );//姓名
printf("\n\t学号::");scanf_s("%d",&info[i].str_num );//学号
printf("\n\tC语言=");scanf_s("%d",&info[i].cgrade );//C语言成绩
printf("\n\t英语=");scanf_s("%d",&info[i].egrade );//英语成绩
printf("\n\t数学=");scanf_s("%d",&info[i].mgrade );//数学成绩
printf("\n\t物理=");scanf_s("%d",&info[i].pgrade );//物理成绩
printf("\n\t电路=");scanf_s("%d",&info[i].dgrade );//电路成绩
}
return ;
}
void Sum_andAve(struct student info[],int num)//总分和平均分的函数以及按平均分排序
{
int i,j;
struct student temp;
printf("\t");
for(i=0;i<num;i++)//求总分和平均分的循环
{
info[i].sum=(info[i].cgrade) +(info[i].dgrade) +(info[i].egrade) +(info[i].mgrade) +(info[i].pgrade);
info[i].Ave=(info[i].sum)/num;
printf("学号为%d同学的总成绩和课程平均分是::\n\t总分=%d\n\t平均分=%d\n\t",info[i].str_num ,info[i].sum,info[i].Ave);
}//循环结束
for(i=0;i<num-1;i++){//平均成绩排序
for(j=0;j<num;j++){
if(info[i].Ave >info[i+1].Ave)
{
temp=info[j] ;
info[j] =info[j+1];
info[j+1]=temp;
}}}
printf("按课程成绩排序::\n\t");
printf("姓名 学号 平均成绩\n");
for(i=0;i<num;i++)
{
printf("\t%-12s%-10d%-4.2f\n",info[i].name ,info[i].str_num ,info[i].Ave );}
printf("\n\n");
return;
}
struct student output(struct student info[N],int num)//定义输出函数//
{
int i;
printf("姓名\t学号\tC语言\t英语\t数学\t物理\t电路\t平均分\t总分\n");
for(i=0;i<num;i++)
{
printf("%-10s%-6d%-4d%-4d%-4d%-4d%-4d%-4d%-4d%\n",info[i].name ,info[i].str_num ,info[i].cgrade ,
info[i].egrade ,info[i].mgrade ,info[i].pgrade ,info[i].dgrade ,info[i].Ave ,info[i].sum );}
}
int main()//主函数的开始
{
struct student info[N];//结构体数组的声明
input(info,N);//调用输入函数
Sum_andAve(info,N);
output(info,N);
return 0;
}