定义一个结构体,用于存储某班级20名同学的学号、姓名、语文成绩、数学成绩和英语成绩。
计算各位同学三门课程的总分和平均分
按平均分由高到低排出名次表。
多谢!
参考
#define N 2 struct student{ int id; char name[20]; int kaoqun; int biaoxian; int zuoye; int biji; int sum; }stud[N],t;
int main() { int i,j; for(i=0;i<N;i++){ printf("请输入第%d个学生信息\n",i+1); scanf("%d %s",&stud[i].id,&stud[i].name); fflush(stdin); scanf("%d %d %d %d",&stud[i].kaoqun,&stud[i].biaoxian,&stud[i].zuoye,&stud[i].biji); stud[i].sum = stud[i].kaoqun0.3+stud[i].biaoxian0.3+stud[i].zuoye0.3+stud[i].biji0.1; }
<span class="hljs-comment">//排序</span>
<span class="hljs-keyword">for</span> (i <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i <span class="hljs-operator"><</span> <span class="hljs-type">N</span> <span class="hljs-operator">-</span> <span class="hljs-number">1</span>; i<span class="hljs-operator">++</span>){
<span class="hljs-keyword">for</span> (j <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; j <span class="hljs-operator"><</span> <span class="hljs-type">N</span> <span class="hljs-operator">-</span> <span class="hljs-number">1</span> <span class="hljs-operator">-</span> i; j<span class="hljs-operator">++</span>){ <span class="hljs-comment">//按成绩对学生信息进行排序</span>
<span class="hljs-keyword">if</span> (stud[j].sum <span class="hljs-operator">></span> stud[j <span class="hljs-operator">+</span> <span class="hljs-number">1</span>].sum){ <span class="hljs-comment">//整型数字的比较</span>
t <span class="hljs-operator">=</span> stud[j];
stud[j] <span class="hljs-operator">=</span> stud[j <span class="hljs-operator">+</span> <span class="hljs-number">1</span>];
stud[j <span class="hljs-operator">+</span> <span class="hljs-number">1</span>] <span class="hljs-operator">=</span> t;
}
}
}
<span class="hljs-comment">//打印</span>
printf(<span class="hljs-string">"学号<span class="hljs-subst">\t</span>姓名<span class="hljs-subst">\t</span>考勤<span class="hljs-subst">\t</span>表现<span class="hljs-subst">\t</span>作业<span class="hljs-subst">\t</span>笔记<span class="hljs-subst">\t</span>总分<span class="hljs-subst">\t</span><span class="hljs-subst">\n</span>"</span>);
<span class="hljs-keyword">for</span> (i <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i <span class="hljs-operator"><</span> <span class="hljs-type">N</span>; i<span class="hljs-operator">++</span>){
printf(<span class="hljs-string">"%d<span class="hljs-subst">\t</span>"</span>, stud[i].id);
printf(<span class="hljs-string">"%s<span class="hljs-subst">\t</span>"</span>, stud[i].name);
printf(<span class="hljs-string">"%d<span class="hljs-subst">\t</span>"</span>, stud[i].kaoqun);
printf(<span class="hljs-string">"%d<span class="hljs-subst">\t</span>"</span>, stud[i].biaoxian);
printf(<span class="hljs-string">"%d<span class="hljs-subst">\t</span>"</span>, stud[i].zuoye);
printf(<span class="hljs-string">"%d<span class="hljs-subst">\t</span>"</span>, stud[i].biji);
printf(<span class="hljs-string">"%d <span class="hljs-subst">\n</span>"</span>, stud[i].sum);
}
<span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;
}
typedef struct _student
{
<span class="hljs-keyword">int</span> num;
char name[<span class="hljs-number">20</span>];
float chn;
float maths;
float eng;
float total;
float avg;
}student;
void input(student *stu,<span class="hljs-keyword">int</span> n)
{
<span class="hljs-keyword">int</span> i;
<span class="hljs-keyword">printf</span>(<span class="hljs-string">"请逐行输入%d个学生信息:"</span>,n);
<span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++)
{
scanf(<span class="hljs-string">"%d %s %f %f %f"</span>,&stu[i].num,stu[i].name,&stu[i].chn,&stu[i].maths,&stu[i].eng);
}
}
void calculate(student *stu,<span class="hljs-keyword">int</span> n)
{
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>;i<n;i++)
{
stu[i].total = stu[i].chn + stu[i].maths + stu[i].eng;
stu[i].avg = stu[i].total/<span class="hljs-number">3</span>;
}
}
void <span class="hljs-keyword">sort</span>(student *stu,<span class="hljs-keyword">int</span> n)
{
<span class="hljs-keyword">int</span> i,j;
student t;
<span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n-<span class="hljs-number">1</span>;i++)
<span class="hljs-keyword">for</span>(j=<span class="hljs-number">0</span>;j<n-i-<span class="hljs-number">1</span>;j++)
{
<span class="hljs-keyword">if</span>(stu[j].avg < stu[j].avg)
{
t = stu[j];
stu[j] = stu[j+<span class="hljs-number">1</span>];
stu[j+<span class="hljs-number">1</span>] = t;
}
}
}
void <span class="hljs-keyword">print</span>(student *stu,<span class="hljs-keyword">int</span> n)
{
<span class="hljs-keyword">int</span> i;
<span class="hljs-keyword">printf</span>(<span class="hljs-string">"%10s%20s%10s%10s%10s%10s%10s\n"</span>,<span class="hljs-string">"学号"</span>,<span class="hljs-string">"姓名"</span>,<span class="hljs-string">"语文"</span>,<span class="hljs-string">"数学"</span>,<span class="hljs-string">"英语"</span>,<span class="hljs-string">"总分"</span>,<span class="hljs-string">"均分"</span>);
<span class="hljs-keyword">for</span>(i=<span class="hljs-number">0</span>;i<n;i++)
{
<span class="hljs-keyword">printf</span>(<span class="hljs-string">"%10d%20s%10.1f%10.1f%10.1f%10.1f%10.1f\n"</span>, stu[i].num,stu[i].name,stu[i].chn,stu[i].maths,stu[i].eng,stu[i].total,stu[i].avg);
}
<span class="hljs-keyword">int</span> main
{
student stu[<span class="hljs-number">10</span>];
input(stu,<span class="hljs-number">10</span>);
calculate(stu,<span class="hljs-number">10</span>);
<span class="hljs-keyword">sort</span>(stu,<span class="hljs-number">10</span>);
<span class="hljs-keyword">print</span>(stu,<span class="hljs-number">10</span>);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}