10.15有一個班4個學生,5門課。(1)求第一門課的平均分;(2)找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績;(3)找出平均成績在90分以上或全部課程成績在85分以上的學生。分別編3個函數實現上3個要求。


不是很難,但是有點繁瑣的一道題。注意要把用於計數的變量 count 放到合適的位置。

10.15有一個班4個學生,5門課。(1)求第一門課的平均分;(2)找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績;(3)找出平均成績在90分以上或全部課程成績在85分以上的學生。分別編3個函數實現上3個要求。

 

#include <stdio.h>

int main(){
    void avcour1(char (* pcourse)[10], float (* pscore)[5]);
    void avsco(float (*pscore)[5],float * paver);
    void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);
    void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);

char course[5][10]={"English","Computer","Math","Physics","Chemistry"};
char (* pcourse)[10];

int i, j,* pnum;
int num[4]={1001,1002,1003,1004};
float score[4][5]={{34,56,88,99,89},
                    {77,88,99,67,78},
                    {99,90,87,86,89},
                    {78,89,99,56,77}};
float (* pscore)[5],* paver;
float aver[4];

pnum=num;        //一維數組,存放學生編號
pscore=score;    //二維數組,存放學生的成績
pcourse=course; //一維數組,存放課程名稱
paver=aver;        //一維數組,存放每名學生平均成績

//將學生編號和成績打印
printf("NO. ");
for(i=0; i<5; i++){
    printf(",%s ",course[i]);
}
printf("\n");
//打印學生編號和成績
for(i=0; i<4; i++){
    printf("%-8d",num[i]);
    for(j=0; j<5; j++){
        printf("%4.2f   ",score[i][j]);
    }
    printf("\n");
}

//每名學生所有課程的平均成績
avsco(pscore, paver);

//1.求所有學生第一門課程的平均成績
    avcour1(pcourse, pscore);
//2.找出兩門以上課程不及格的學生,輸出學號,成績,平均成績
    fail2(pcourse, pnum, pscore, paver);
//3.找出平均成績在90分以上或全部課程成績在85分以上的學生,輸出學號,成績,平均成績
    good(pcourse, pnum, pscore,  paver);

    return 0;
}

void avsco(float (*pscore)[5],float * paver){
    int i,j;
    float sum,avg;
    for(i=0; i<4; i++){
        sum=0;
        for(j=0; j<5; j++){
            sum += *(*(pscore+i)+j);
        }
        avg = sum/5;//第i個學生的平均成績
        *(paver+i)=avg;
    }

    for(i=0; i<4; i++){
    printf("第%d個學生的平均成績為%4.2f  \n",i+1,*(paver+i));
    }
}

//1.
void avcour1(char (* pcourse)[10], float (* pscore)[5]){
    int i;
    float sum=0,avg1;
    for(i=0; i<4; i++){
        sum += *(*(pscore+i));
    }
    avg1 = (float)sum/4;
    printf("第一門課%s的平均成績為:%4.2f\n",* pcourse,avg1);
}

//2.找出兩門以上課程不及格的學生,輸出學號,成績,平均成績
void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
    int i,j,count;
    
    printf("\n下面的學生有兩門及以上的課程不及格.\n");
        //將學生編號和成績打印
        printf("NO. ");
        for(i=0; i<5; i++){
            printf(",%s ",*(pcourse+i));
        }
        printf("average");
        printf("\n");

    
    for(i=0; i<4; i++){
        count=0;
        for(j=0; j<5; j++){
            if(*(*(pscore+i)+j) < 60 ) count++;
        }
        if(count>=2){
            printf("%-8d",*(pnum+i));
            for(j=0; j<5; j++){
            printf("%4.2f   ",*(*(pscore+i)+j));
            }
            printf("%4.2f   ",*(paver+i));
            printf("\n");
        }
    }
}

//3.找出平均成績在90分以上或全部課程成績在85分以上的學生,輸出學號,成績,平均成績
void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
        int i,j,count;
        printf("\n下面的學生平均成績在90分以上或全部課程成績在85分以上.\n");
        //將學生編號和課程打印
        printf("NO. ");
        for(i=0; i<5; i++){
            printf(",%s ",*(pcourse+i));
        }
        printf("average");
        printf("\n");
        for(i=0; i<4; i++){
            count=0;
            for(j=0; j<5; j++){
                if(*(*(pscore+i)+j) > 85) count++;
            }
            if(count==5 || *(paver+i)>90){
                printf("%-8d",*(pnum+i));
                for(j=0; j<5; j++){
                printf("%4.2f   ",*(*(pscore+i)+j));
                }
                printf("%4.2f   ",*(paver+i));
                printf("\n");
            }
        }
}

 

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 有一個班4個學生,5門課程①求第1門課程的平均分; ②找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績; ③找出平均成績在90分以上或全部課程成績在85分以上的學生 練習8--查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績 【sql:練習題11】查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績 查詢有2門及以上不及格科目的學生姓名及其平均成績 查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績 從SC表中選取score小於60的,並group by sid,having count 大於1 【sql: 練習題 30,31】查詢存在不及格的課程,查詢課程編號為 01 且課程成績在 80 分及以上的學生的學號和姓名 統計一批學生的平均成績與不及格人數 有10個學生,每個學生的數據包括學號、姓名、3門課的成績,從鍵盤輸入10個學生數據,要求打印出3門課總平均成績,以及最高分的學生的數據(包括學號、姓名、3門課的成績、平均分數)。 /* * 有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據 *(包括學生號,姓名,三門課成績),計算出平均成績, *將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。 */ 有n個結構變量,內含學生學號,姓名和3門課程的成績。要求輸出平均成績的學生的信息
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM