1、程序改错题:以下程序功能是对任意输入的5个学生成绩中找出最高分成绩及其对应的姓名。
#include <stdio.h>
struct student
{
char name[10];int score;
};
void main()
{
int i,max=0;
struct student st[5],*p=st,*q=st;
for(i=0;i<5;i++)
{
printf("请输入第%d个学生信息(姓名 成绩):",i+1);
scanf("%s%d",st[i].name,&st[i].score);
}
for (;p<st+5;p++)
{
if(max<p->score)
{
max=p->score;
q=p;
}
}
printf("成绩最高的学生信息是:%s:%d\n",q->name,q->score);
}
2、编写结构体stuscore(学号,英语,C语言,数据库,编译原理)kemuaver(科目,平均分)
编程实现:根据输入的5个学生的成绩计算出每科的平均分并存入相应的结构体变量中并输出科目及其对应的平均分。
#include <stdio.h>
struct stuscore{
char sid[5];
int en;
int clan;
int data;
int bianyi;
}stc[5]={};
struct kemuaver
{ char sub[10];
float avg;
}av[4]={"英语:",0,"C语言:",0,"C语言:",0,"编译原理:",0};
void main()
{
int i,sum[4]={0};
for(i=0;i<5;i++){
printf("请输入第%d个学生信息(学号 英语 C语言 C语言 编译原理):",i+1);
scanf("%s%d%d%d%d",stc[i].sid,&stc[i].en,&stc[i].clan,&stc[i].data,&stc[i].bianyi);
}
for(i=0;i<5;i++){
sum[0]+=stc[i].en;
sum[1]+=stc[i].clan;
sum[2]+=stc[i].data;
sum[3]+=stc[i].bianyi;
}
for(i=0;i<4;i++){
av[i].avg=sum[i]/5;
}
printf("科的平均成绩是:");
for(i=0;i<4;i++)
{
printf("%s%.2f ",av[i].sub,av[i].avg);
}
printf("\n");
}
3、编写结构体stu(学号,姓名,成绩)
编写函数:对stu结构体类型的n个学生按成绩由高到低排序
编程实现:任意输入5个学生的信息,按成绩由高到低排序并输出成绩排序后的信息(可任选排序方法实现)。
#include <stdio.h>
struct st
{
char sid[10];
char name[10];
int score;
} st[5] = {},t[5]={};
void sort(struct st st[],struct st t[],int len);
void main()
{
int i,j;
int len=sizeof(st)/sizeof(st[0]);
for (i = 0; i < 5; i++)
{
printf("请输入第%d个学生信息(学号 姓名 成绩):", i+1);
scanf("%s%s%d", st[i].sid, st[i].name, &st[i].score);
}
sort(st,t,len);
printf("按成绩从高到底排列为:\n");
for(i=len-1;i>=0;i--){
printf("%s %s %d\n",t[i].sid,t[i].name,t[i].score);
}
}
void sort(struct st st[],struct st t[],int len)
{
int i,j;
for(i=0;i<len;i++){
for(j=0;j<len-i;j++){
if(st[j].score>st[j+1].score){
t[j]=st[j];
st[j]=st[j+1];
st[j+1]=t[j];
}
}
}
}