程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> 用c語言編程。

用c語言編程。

編輯:C語言問答

用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語言討論群 ,等你加入
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved