一個班4個學生,5門課程;

來源:互聯網
上載者:User

1.求第一門課程的平均分;

2.找出有兩門以上課程不及格的學生,輸出學號和群不課程成績及平均成績;

3.找出平均成績在90分以上或全部課程成績在85分以上學生;

#include<stdio.h>
int main()
{
 void avsco(float *,float *);
 void avcour1(char (*)[10],float *);
 void fail2(char course[5][10],int num[],float *pscore,float aver[4]);
 void good(char course[5][10],int num[4],float *pscore,float aver[4]);
 int i,j,num[4],*pnum;//編號碼是整型資料;
 float score[4][5],*pscore,*paver,aver[4];//分數都為float類型資料;
 char (*pcourse)[10],course[5][10];
 printf("please input course:/n");
 pcourse=course;
 for(i=0;i<5;i++)
  scanf("%s",&course[i]);
 printf("input NO. and score:/n");
 printf("NO.");
 for(i=0;i<5;i++)
  printf(",%s",course[i]);
 printf("/n");
 pnum=&num[0];
 pscore=&score[0][0];
 for(i=0;i<4;i++)
 {
  scanf("%d",pnum+i);//這是對每一個人進行編號;只需要給四個值;所以只能放在此處;
  for(j=0;j<5;j++)
   scanf("%f",pscore+5*i+j);//分數要給20個值;
 }
 paver=&aver[0];
 printf("/n/n");
 avsco(pscore,paver);
 avcour1(pcourse,pscore);
 printf("/n/n");
 fail2(pcourse,pnum,pscore,paver);
    printf("/n/n");
 good(pcourse,pnum,pscore,paver);
 return 0;
}
void avsco(float *pscore,float *paver)
{
 int i,j;
 float sum,average;
 
 for(i=0;i<4;i++)
 {   sum=0.0;
  for(j=0;j<5;j++)
   sum=sum+(*(pscore+5*i+j));//在這個等式當中,*(pscore+5*i+j)一定要加括弧;
  average=sum/5;
  *(paver+i)=average;
 }
}
//此處不能將char (*pcourse)[10]寫成*(pcourse)[10];否則link嚴重錯誤;
void avcour1(char (*pcourse)[10],float *pscore)//此處聲明不是char course[5][10],而是char (*pcousre)[10]);
{
 int i;
 float sum,average1;
 sum=0.0;//sum需要初始化為0.0;
 for(i=0;i<4;i++)
  sum=sum+(*(pscore+5*i));
 average1=sum/4;
 printf("the first course %s average score is %f",*pcourse,average1);
}
void fail2(char course[5][10],int num[],float *pscore,float aver[4])//因為採用數組指標course[i],所以不能用char *(pcourse)[10];
{
 int i,j,k,label;
 printf("==================Student who is fail in two couses===================/n");
 printf("NO.");
 for(i=0;i<5;i++)
    printf("%11s",course[i]);//因為要用course[i]輸出課程名稱,所以不能聲明char *(pcourse)[10];只能是char course[5][10];
 printf("average/n");
 for(i=0;i<4;i++)
 {label=0;//每個人的不及格的course 計數;
  for(j=0;j<5;j++)
   if(*(pscore+5*i+j)<60) label++;
  if(label>=2)//只能在label>=2中輸出每個人的成績和平均分;
  {
  printf("%d",num[i]);
  for(k=0;k<5;k++)
     printf("%11.2f",*(pscore+5*i+k));//輸出這個人的課程成績;
  printf("%11.2f",aver[i]);//因為平均成績已經算好,儲存在aver[i]當中;所以聲明也適用aver[4];
  }
 }
}
void good(char course[5][10],int num[4],float *pscore,float aver[4])
{
 int i,j,k,n;
 printf("================Students whose score is good========/n");
 printf("NO.");
 for(i=0;i<5;i++)
  printf("%11s",course[i]);
 printf("average/n");
 for(i=0;i<4;i++)
 {n=0;//對每個人的成績大於85計數;初值給0;
  for(j=0;j<5;j++)
   if(*(pscore+5*i+j)>85) n++;
  if((n==5)||(aver[i]>90))//注意此處,aver[i]>90需要加括弧;(aver[i]>90)找出每門課程成績>85或者平均分大於90的學生;
  {printf("%d",num[i]);
   for(k=0;k<5;k++)
    printf("%11.2f",*(pscore+5*i+k));
   printf("%11.2f/n",aver[i]);//此處不能與上一句加{}括弧,否則錯誤;
  }
 }
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.