一道初学者的C语言题目

2025-02-26 02:50:50
推荐回答(1个)
回答1:

#include
#define ALL 10
struct student
{
int num;
char name[10];
float ch;
float mt;
float en;
float score;
}stu[ALL];
void average(float *pch,float *pmt,float *pen,int *pchlw,int *pmtlw,int *penlw)
{
int i;
for(i=0;i {
*pch+=stu[i].ch ;
*pmt+=stu[i].mt ;
*pen+=stu[i].en ;
}
*pch/=ALL;
*pmt/=ALL;
*pen/=ALL;
for(i=0;i {
if(stu[i].ch <*pch)
(*pchlw)++;
if(stu[i].mt <*pmt)
(*pmtlw)++;
if(stu[i].en <*pen)
(*penlw)++;
}

}
void arrange()
{
int i;
int j;
struct student temp;
for (i=0;i stu[i].score=stu[i].ch+stu[i].mt+stu[i].en;
for(i=0;i for(j=i+1;j {
if(stu[i].score {
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}

}
int find(int flag,int *want)
{
int no;
printf("please input sutdent's num:\n");
scanf("%d",&no);
if((no>=1)&&(no<=ALL))
{
flag=1;
*want=no;
}
else flag=0;

return flag;
}
void main()
{
int flag=0;
int want=0;
char answer;
int i;
int avechlw=0,avemtlw=0,aveenlw=0;
float chave=0.0,mtave=0.0,enave=0.0;
for(i=0;i {
printf("please input NO.%d student's information:\n",i+1);
printf("NO. is:\n");
scanf("%d",&stu[i].num);
printf("name is:\n");
scanf("%s",stu[i].name);
printf("chinese score:\n");
scanf("%f",&stu[i].ch);
printf("math score:\n");
scanf("%f",&stu[i].mt);
printf("English score:\n");
scanf("%f",&stu[i].en);
printf("\n\n");
}
average(&chave,&mtave,&enave,&avechlw,&avemtlw,&aveenlw);
printf("chinese average is:%f\n",chave);
printf("chinese scores lower than the average are:%d students\n",avechlw);
printf("math average is:%f\n",mtave);
printf("math scores lower than the average are:%d students\n",avemtlw);
printf("English average is:%f\n",chave);
printf("English scores lower than the average are:%d students\n\n",aveenlw);

arrange();
printf("stunum stuname stuscore\n");
for(i=0;i {
printf("%d\t%s\t%f\n",stu[i].num ,stu[i].name ,stu[i].score );
}

printf("do you want to find student score?(y/n or Y/N)");
scanf(" %c",&answer);
if((answer=='y')||(answer=='Y'))
{
flag=find(flag,&want);
if(flag)
{ printf("num\tname\tchinese\t\tmath\t\tEnglish\t\tscore\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\n",stu[want].num ,stu[want].name ,stu[want].ch ,stu[want].mt ,stu[want].en ,stu[want].score );
}
else
printf("error num!\n");
}

}
//用了比较多的printf为了实现良好的人机界面,如果是自己做了调的,就不必这么多了。