C言語実習学生成績計算(構造体+関数+ポインタ)

1221 ワード

10人の学生がいて、各学生のデータには学号、名前と2つの授業の成績が含まれています.キーボードから10人の学生のデータを入力します.すべての学生の総成績を計算し、すべての学生の中で2つの授業の総得点が最も高い学生のデータを見つけます.プログラミング構想:まず学生情報を含む構造体タイプを定義し,このタイプに基づいて10要素の構造体配列を定義する.cal関数で総成績と最高点の学生の配列内のインデックスを計算し、メイン関数に学生データを入力し、cal関数を呼び出して所望の結果を得ます.
#include
 struct student
{
    int num;//     
    char name[20];//      
    int score[2];//           
    int sum;//       
}stu[10];//   10      ,      
void cal(int *sum,int *maxi)
{
    int i,j,max;
    *sum=0;
    *maxi=0;
    max=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<2;j++)
        {
            stu[i].sum+=stu[i].score[j];
        }
        *sum+=stu[i].sum;
        if(stu[i].sum>max)//            
        {
            max=stu[i].sum;
            *maxi=i;
        }
    }
}
int main()
{
    int i,sum,maxi;
    for(i=0;i<10;i++)
    {
  	   printf("   %d                :",i+1);
        scanf("%d%s%d%d",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1]);
    }
        cal(&sum,&maxi);
        printf("    %d,         %d\t%s\t%d\t%d\t%d
",sum,stu[maxi].num,stu[maxi].name,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].sum); return 0; }