用c語言編程。
80
在主函數定義兩個數組,分別存放在兩個班(人數不同)的一門成績,請編寫這個函數,分別求:
1;兩個班的平均分。最高分,最低分及所對應的學生號
2;對兩個成績從高到低進行排序,但對應分數的學生的學號也要進行改。
3“求兩個班的及格人數和及格率
最佳回答:
好評刷上,程序如下,有圖有真想
#include<stdio.h>
#define N 3
#define M 4
struct Class1
{
int munber1;
int score1;
} student1[4];
struct Class2
{
int munber2;
int score2;
} student2[4];
void main()
{
int i,j,t,l,k,f1=0;
int max1=0,max2=0,t1;
float average1=0,average2=0,sum1=0,sum2=0;
printf("輸入第一個班的學生學號和成績:\n");
for(i=0;i<4;i++)
{
scanf("%d%d",&(student1[i].munber1),&(student1[i].score1));
sum1=sum1+student1[i].score1;
}
printf("輸入第二個班的學生學號和成績:\n");
for(j=0;j<4;j++)
{
scanf("%d%d",&(student2[j].munber2),&(student2[j].score2));
sum2=sum2+student2[j].score2;
}
for(j=0;j<3;j++)
for(i=0;i<=3-j;i++)
if(student1[i].score1<student1[i+1].score1)
{
max1=student1[i].score1;
student1[i].score1=student1[i+1].score1;
student1[i+1].score1=max1;
}
printf("第一個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%d %d %d %d",student1[0].munber1,student1[0].score1,student1[3].munber1,student1[3].score1);
printf("\n");
printf("第一個班排行列表:\n");
for(i=0;i<4;i++)
{
printf("%.2f %d %d",average1=sum1/4,student1[i].munber1,student1[i].score1);
printf("\n");
} /*前面無措*/
for(k=0;k<3;k++)
for(j=0;j<=3-k;j++)
if(student2[j].score2<student2[j+1].score2)
{
max2=student2[j].score2;
student2[j].score2=student2[j+1].score2;
student2[j+1].score2=max2;
}
printf("第二個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%d %d %d %d",student2[0].munber2,student2[0].score2,student2[3].munber2,student2[3].score2);
printf("\n");
printf("第二個班排行列表:\n");
for(j=0;j<4;j++)
{
printf("%.2f %d %d",average2=sum2/4,student2[j].munber2,student2[j].score2);
printf("\n");
}
for(i=0;i<4;i++)
if(student1[i].score1>=60)
{
t1=t1+f1;
f1++;
}
printf("%.3f",t1/4);
printf("\n");
}
-
補充:
-
#include<stdio.h>
#define N 3 /*自己定義倆個班人數下面的參數自己改動*/
#define M 4
struct Class1
{
int munber1;
int score1;
} student1[N];
struct Class2
{
int munber2;
int score2;
} student2[M];
void main()
{
int i,j,k,f1=1,f2=1;
int max1=0,max2=0;
float average1=0,average2=0,sum1=0,sum2=0,t1=0,t2=0;
/**************************************************/
printf("輸入第一個班的學生學號和成績:\n");
for(i=0;i<N;i++)
{
scanf("%d%d",&(student1[i].munber1),&(student1[i].score1));
sum1=sum1+student1[i].score1;
}
/**************************************************/
printf("輸入第二個班的學生學號和成績:\n");
for(j=0;j<M;j++)
{
scanf("%d%d",&(student2[j].munber2),&(student2[j].score2));
sum2=sum2+student2[j].score2;
}
/*************************************************/
for(j=0;j<N-1;j++)
for(i=0;i<=N-j;i++)
if(student1[i].score1<student1[i+1].score1)
{
max1=student1[i].score1;
student1[i].score1=student1[i+1].score1;
student1[i+1].score1=max1;
}
printf("第一個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%.2f %d %d %d %d",sum1/4,student1[0].munber1,student1[0].score1,student1[3].munber1,student1[3].score1);
printf("\n");
printf("第一個班排行列表:\n");
for(i=0;i<=N;i++)
{
printf("%d %d",student1[i].munber1,student1[i].score1);
printf("\n");
} /*前面無措*/
/************************************************/
printf("第一班及格人數和及格率\n");
for(i=0;i<=N;i++)
if(student1[i].score1>=60)
{
++f1;
t1=f1;
}
printf("%d %.3f",f1-1,(t1-1)/N);
printf("\n");
/***********************************************/
for(k=0;k<M-1;k++)
for(j=0;j<=M-k;j++)
if(student2[j].score2<student2[j+1].score2)
{
max2=student2[j].score2;
student2[j].score2=student2[j+1].score2;
student2[j+1].score2=max2;
}
printf("第二個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%.2f %d %d %d %d",sum2/4,student2[0].munber2,student2[0].score2,student2[3].munber2,student2[3].score2);
printf("\n");
printf("第二個班排行列表:\n");
for(j=0;j<M;j++)
{
printf("%d %d",student2[j].munber2,student2[j].score2);
printf("\n");
}
/*************************************************/
printf("第二班及格人數和及格率\n");
for(j=0;j<M;j++)
if(student2[j].score2>=60)
{
++f2;
t2=f2;
}
printf("%d %.3f",f2-1,(t2-1)/M);
printf("\n");
}
這個才是,上面個程序是班成品 我發錯了。。。。。。
-
補充:
-
不好意思,上邊倆個程序都是半成品,我粗心了,副本開錯了 ,復制錯了,這下面個保證是對的
#include<stdio.h>
#define N 3 /*自己定義倆個班人數下面的參數自己改動*/
#define M 4
struct Class1
{
int munber1;
int score1;
} student1[N];
struct Class2
{
int munber2;
int score2;
} student2[M];
void main()
{
int i,j,k,f1=1,f2=1;
int max1=0,max2=0;
float average1=0,average2=0,sum1=0,sum2=0,t1=0,t2=0;
/**************************************************/
printf("輸入第一個班的學生學號和成績:\n");
for(i=0;i<N;i++)
{
scanf("%d%d",&(student1[i].munber1),&(student1[i].score1));
sum1=sum1+student1[i].score1;
}
/**************************************************/
printf("輸入第二個班的學生學號和成績:\n");
for(j=0;j<M;j++)
{
scanf("%d%d",&(student2[j].munber2),&(student2[j].score2));
sum2=sum2+student2[j].score2;
}
/*************************************************/
for(j=0;j<N-1;j++)
for(i=0;i<=N-j;i++)
if(student1[i].score1<student1[i+1].score1)
{
max1=student1[i].score1;
student1[i].score1=student1[i+1].score1;
student1[i+1].score1=max1;
}
printf("第一個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%.2f %d %d %d %d",sum1/4,student1[0].munber1,student1[0].score1,student1[N-1].munber1,student1[N-1].score1);
printf("\n");
printf("第一個班排行列表:\n");
for(i=0;i<N;i++)
{
printf("%d %d",student1[i].munber1,student1[i].score1);
printf("\n");
} /*前面無措*/
/************************************************/
printf("第一班及格人數和及格率\n");
for(i=0;i<N;i++)
if(student1[i].score1>=60)
{
++f1;
t1=f1;
}
printf("%d %.3f",f1-1,(t1-1)/N);
printf("\n");
/***********************************************/
for(k=0;k<M-1;k++)
for(j=0;j<=M-k;j++)
if(student2[j].score2<student2[j+1].score2)
{
max2=student2[j].score2;
student2[j].score2=student2[j+1].score2;
student2[j+1].score2=max2;
}
printf("第二個班的平均分 最高分的學號 最高分 最低分學號 最低分\n");
printf("%.2f %d %d %d %d",sum2/4,student2[0].munber2,student2[0].score2,student2[M-1].munber2,student2[M-1].score2);
printf("\n");
printf("第二個班排行列表:\n");
for(j=0;j<M;j++)
{
printf("%d %d",student2[j].munber2,student2[j].score2);
printf("\n");
}
/*************************************************/
printf("第二班及格人數和及格率\n");
for(j=0;j<M;j++)
if(student2[j].score2>=60)
{
++f2;
t2=f2;
}
printf("%d %.3f",f2-1,(t2-1)/M);
printf("\n");
}
記得給好品喲,如果有興趣可以加我的群 C語言討論群 ,等你加入