統計計算學生成績類問題匯總


(注:暫時先記錄這些問題,后期再持續更新)

1,輸入一個正整數n,再輸入n個學生的成績,計算平均分,並統計不及格成績的學生人數。

    int count,i,n;  //count 為記錄不及格成績的個數
    double grade,total;  //grade 存放輸入的成績,total保存成績之和
    printf("Enter n:");
    scanf("%d",&n);  //輸入學生人數n 
    total = 0;
    count = 0;
    for(i=1;i<=n;i++){
        printf("Enter grade #%d:",i);
        scanf("%lf",&grade);  //輸入第i個成績
        total = total + grade;
        if(grade<60){  //統計不及格的學生人數 
            count++;
        } 
    } 
    printf("Grade average = %.2f\n",total/n);
    printf("Number of failures = %d\n",count);
    return 0; 

 

 

2,輸入一批學生的成績,以負數作為結束標志,計算平均成績,並統計不及格人數。

    int count,num;  //count 為記錄不及格成績的個數;num 為記錄輸入的個數 
    double grade,total;  //grade 存放輸入的成績,total保存成績之和
    num = 0;
    total = 0;
    count = 0;
    printf("Enter grades:");
    scanf("%lf",&grade);
    while(grade>=0){
        total = total+grade;  //累加成績
        num++;  //計數
        if(grade<60)
            count++;
        scanf("%lf",&grade);  //讀入一個新數據,為下次循環做豬呢比 
    }
    if(num != 0){
        printf("Grade average = %.2f\n",total/num);
        printf("Number of failures is %d\n",count);
    }
    else
        printf("Grade average is 0\n");
    return 0; 

 

 

3,從輸入的n個成績中選出最高分,用for語句實現。

    int i,mark,max,n;
    printf("Enter n:");
    scanf("%d",&n);  //輸入數據個數 
    printf("Enter %d marks:",n);
    scanf("%d",&mark);  //讀入第一個成績
    max = mark;
    for(i=1;i<n;i++){
        scanf("%d",&mark);
        if(max<mark)
            max = mark;
    } 
    printf("Max = %d\n",max);
    return 0;

 

注:若輸入的一批以負數結束的成績中選出最高分,可以用while語句實現。

 

4,輸入n個學生的成績信息,計算並輸出每個學生的個人平均成績(結構變量作為函數參數)。

struct student{  //學生信息結構定義 
    int num;  //學號 
    char name[10];  //姓名
    int computer,english,math;  //三門課程成績
    double average;  //個人平均成績 
};
double count_average(struct student s);  //函數聲明,計算個人平均成績
int main(void)
{
    int i,n;
    struct student s1;  //定義結構變量
    printf("Input n:");
    scanf("%d",&n);
    printf("Input the student's number,name,course scores\n");
    for(i=1;i<=n;i++){
        printf("No.%d:",i);
        scanf("%d%s%d%d%d",&s1.num,&s1.name,&s1.math,&s1.english,&s1.computer);  
        s1.average = count_average(s1);  //函數調用,結構變量作為函數參數
        printf("num:%d,name:%s,average:%.2lf\n",s1.num,s1.name,s1.average); 
    } 
    return 0;
} 

double count_average(struct student s)
{
    return (s.math + s.english + s.computer)/3.0;
}

 

 

5,輸入n(n<50)個學生的成績信息,按照學生的個人平均成績從高到低輸出他們的信息。

struct student{  //學生信息結構定義 
    int num;  //學號 
    char name[10];  //姓名
    int computer,english,math;  //三門課程成績
    double average;  //個人平均成績 
};
int main(void)
{
    int i,index,j,n;  
    struct student students[50],temp; //定義結構數組
    double count_average(struct student s);
    
    /* 輸入*/
    printf("Input n:");
    scanf("%d",&n);
    for(i=0;i<n;i++){
        printf("Input the info of No.%d:\n",i+1);
        printf("number:");
        scanf("%d",&students[i].num);
        printf("name:");
        scanf("%s",&students[i].name);
        printf("math.score:");
        scanf("%s",&students[i].math);
        printf("english.score:");
        scanf("%s",&students[i].english);
        printf("computer.score:");
        scanf("%s",&students[i].computer);
        students[i].average = count_average(students[i]);
    } 
    
    /* 結構數組排序,選擇排序法*/
    for(i=0;i<n-1;i++){
        index = i;
        for(j=i+1;j<n;j++)
            if(students[j].average>students[index].average)  //比較平均成績
                index = j;
        temp = students[index];  //交換數組元素 
        students[index] = students[i]; 
        students[i] = temp;
    } 
    
    /* 輸出排序后的信息*/
    printf("num\tname\taverage\n");
    for(i=0;i<n;i++)
        printf("%d\t%s\t%.2lf\n",students[i].num,students[i].name,students[i].average);
    
    return 0; 
}

double count_average(struct student s)
{
    return (s.math + s.english + s.computer)/3.0;
}

 

注:本題中,定義了結構數組students用於存儲學生信息,先輸入n個學生的基本信息,其中個人平均成績的計算通過調用函數count_average()實現,然后使用選擇排序法根據個人平均成績從高到低對學生的信息排序,最后按順序輸出結構數組中的數據。

 


免責聲明!

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



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM