C語言 測試題舉例

問題 一

(1) 比賽評分。從10個評委的評分中扣除一個最高分和一個最低分,得到8個有效分,選手的最後得分爲8個有效分相加,求平均值。要求從鍵盤輸入10個評委的評分,輸出選手的最後得分,結果保留兩位小數。
(2) 將第(1)題的8個有效分從大到小排序輸出。

詳細代碼如下:
#include <stdio.h>
int main()
 {
    // 聲明數組,以及變量
    int a[10],i,j,t,sum=0;
    
    //輸入十個評委的成績 
    for(i=0;i<10;i++)
    {
        printf("請輸入第 %d個評委的打分成績: \n",i+1); 
        scanf("%d",&a[i]);
        printf("第 %d 個評委的打分成績:%d \n",i+1,a[i]); 
    }
    
    printf("原始評委評分數組內容爲:"); 
    // 原始評委評分數組內容
    for(i=0;i<10;i++)
    {
        printf(" %d",a[i]); 
    }
    
    //從大到小排序 
    for(i=0;i<9;i++)
    {
        for(j=0;j<9-i;j++)
        {
            if(a[j]<a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
            
            printf("\n 第i= %d 輪,第j=%d 次排序數組內容爲:",i,j); 
            for(int tmp=0;tmp<10;tmp++)
            {
                printf("%d ",a[tmp]); 
            }
        }
        
    }
    // 輸出從大到小排序後的數組
    printf("\n 輸出數組從大到小的排列順序:"); 
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]); 
    }
    
    // for循環進行數組求和
    printf("\n 去掉最大值a[0],最小值a[9]:"); 
    for(i=1;i<9;i++)
    {
        sum=sum+a[i];
        printf("%d ",a[i]); 

    }   
    // 去掉最大值a[0],最小值a[9] 的平均值
    printf("\n 平均值成績爲:%.2f\n",sum/8.0);

    return 0;
}

C 語言在線運行網站如下:
https://www.nhooo.com/tool/c/
輸入參數如下:
2 3 4 5 6 7 8 9 10 11
運行結果如下
$gcc -o main *.c -lm
$main
請輸入第 1個評委的打分成績: 
第 1 個評委的打分成績:2 
請輸入第 2個評委的打分成績: 
第 2 個評委的打分成績:3 
請輸入第 3個評委的打分成績: 
第 3 個評委的打分成績:4 
請輸入第 4個評委的打分成績: 
第 4 個評委的打分成績:5 
請輸入第 5個評委的打分成績: 
第 5 個評委的打分成績:6 
請輸入第 6個評委的打分成績: 
第 6 個評委的打分成績:7 
請輸入第 7個評委的打分成績: 
第 7 個評委的打分成績:8 
請輸入第 8個評委的打分成績: 
第 8 個評委的打分成績:9 
請輸入第 9個評委的打分成績: 
第 9 個評委的打分成績:10 
請輸入第 10個評委的打分成績: 
第 10 個評委的打分成績:11 
原始評委評分數組內容爲: 2 3 4 5 6 7 8 9 10 11
 第i= 0 輪,第j=0 次排序數組內容爲:3 2 4 5 6 7 8 9 10 11 
 第i= 0 輪,第j=1 次排序數組內容爲:3 4 2 5 6 7 8 9 10 11 
 第i= 0 輪,第j=2 次排序數組內容爲:3 4 5 2 6 7 8 9 10 11 
 第i= 0 輪,第j=3 次排序數組內容爲:3 4 5 6 2 7 8 9 10 11 
 第i= 0 輪,第j=4 次排序數組內容爲:3 4 5 6 7 2 8 9 10 11 
 第i= 0 輪,第j=5 次排序數組內容爲:3 4 5 6 7 8 2 9 10 11 
 第i= 0 輪,第j=6 次排序數組內容爲:3 4 5 6 7 8 9 2 10 11 
 第i= 0 輪,第j=7 次排序數組內容爲:3 4 5 6 7 8 9 10 2 11 
 第i= 0 輪,第j=8 次排序數組內容爲:3 4 5 6 7 8 9 10 11 2 
 第i= 1 輪,第j=0 次排序數組內容爲:4 3 5 6 7 8 9 10 11 2 
 第i= 1 輪,第j=1 次排序數組內容爲:4 5 3 6 7 8 9 10 11 2 
 第i= 1 輪,第j=2 次排序數組內容爲:4 5 6 3 7 8 9 10 11 2 
 第i= 1 輪,第j=3 次排序數組內容爲:4 5 6 7 3 8 9 10 11 2 
 第i= 1 輪,第j=4 次排序數組內容爲:4 5 6 7 8 3 9 10 11 2 
 第i= 1 輪,第j=5 次排序數組內容爲:4 5 6 7 8 9 3 10 11 2 
 第i= 1 輪,第j=6 次排序數組內容爲:4 5 6 7 8 9 10 3 11 2 
 第i= 1 輪,第j=7 次排序數組內容爲:4 5 6 7 8 9 10 11 3 2 
 第i= 2 輪,第j=0 次排序數組內容爲:5 4 6 7 8 9 10 11 3 2 
 第i= 2 輪,第j=1 次排序數組內容爲:5 6 4 7 8 9 10 11 3 2 
 第i= 2 輪,第j=2 次排序數組內容爲:5 6 7 4 8 9 10 11 3 2 
 第i= 2 輪,第j=3 次排序數組內容爲:5 6 7 8 4 9 10 11 3 2 
 第i= 2 輪,第j=4 次排序數組內容爲:5 6 7 8 9 4 10 11 3 2 
 第i= 2 輪,第j=5 次排序數組內容爲:5 6 7 8 9 10 4 11 3 2 
 第i= 2 輪,第j=6 次排序數組內容爲:5 6 7 8 9 10 11 4 3 2 
 第i= 3 輪,第j=0 次排序數組內容爲:6 5 7 8 9 10 11 4 3 2 
 第i= 3 輪,第j=1 次排序數組內容爲:6 7 5 8 9 10 11 4 3 2 
 第i= 3 輪,第j=2 次排序數組內容爲:6 7 8 5 9 10 11 4 3 2 
 第i= 3 輪,第j=3 次排序數組內容爲:6 7 8 9 5 10 11 4 3 2 
 第i= 3 輪,第j=4 次排序數組內容爲:6 7 8 9 10 5 11 4 3 2 
 第i= 3 輪,第j=5 次排序數組內容爲:6 7 8 9 10 11 5 4 3 2 
 第i= 4 輪,第j=0 次排序數組內容爲:7 6 8 9 10 11 5 4 3 2 
 第i= 4 輪,第j=1 次排序數組內容爲:7 8 6 9 10 11 5 4 3 2 
 第i= 4 輪,第j=2 次排序數組內容爲:7 8 9 6 10 11 5 4 3 2 
 第i= 4 輪,第j=3 次排序數組內容爲:7 8 9 10 6 11 5 4 3 2 
 第i= 4 輪,第j=4 次排序數組內容爲:7 8 9 10 11 6 5 4 3 2 
 第i= 5 輪,第j=0 次排序數組內容爲:8 7 9 10 11 6 5 4 3 2 
 第i= 5 輪,第j=1 次排序數組內容爲:8 9 7 10 11 6 5 4 3 2 
 第i= 5 輪,第j=2 次排序數組內容爲:8 9 10 7 11 6 5 4 3 2 
 第i= 5 輪,第j=3 次排序數組內容爲:8 9 10 11 7 6 5 4 3 2 
 第i= 6 輪,第j=0 次排序數組內容爲:9 8 10 11 7 6 5 4 3 2 
 第i= 6 輪,第j=1 次排序數組內容爲:9 10 8 11 7 6 5 4 3 2 
 第i= 6 輪,第j=2 次排序數組內容爲:9 10 11 8 7 6 5 4 3 2 
 第i= 7 輪,第j=0 次排序數組內容爲:10 9 11 8 7 6 5 4 3 2 
 第i= 7 輪,第j=1 次排序數組內容爲:10 11 9 8 7 6 5 4 3 2 
 第i= 8 輪,第j=0 次排序數組內容爲:11 10 9 8 7 6 5 4 3 2 
 輸出數組從大到小的排列順序:11 10 9 8 7 6 5 4 3 2 
 去掉最大值a[0],最小值a[9]:10 9 8 7 6 5 4 3 
 平均值成績爲:6.50
簡單代碼實現如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    
    // 聲明一個二維數組用來存放3個人4門課的成績
    int a[3][4],i,j,sum=0;
    float b[3],c[4],max;
    int n=0;
    //數組b存放每個學生的平均成績,數組c存放每門課程的平均成績 
    //輸入3個人4門課的成績 
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    
//求每名學生的平均成績    
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
          sum=sum+a[i][j];  
        }
        
        b[i]=sum/4.0;
        sum=0;
    }
    // 打印3個學生的成績
    for(i=0;i<3;i++)
        printf("第%d名學生的平均成績爲%.2f\n",i,b[i]) ;
    
    //求3個學生最好的平均成績及序號 
    max=b[0];
    for(i=0;i<3;i++)
        if(max<b[i])
        {
            max=b[i];
            n=i;
        }   
    printf("第%d名學生的平均成績最高爲%.2f\n",n,max);   
    
    //求每名門課程的平均成績
    sum=0;
    for(j=0;j<4;j++)
    {
        for(i=0;i<3;i++)
            sum=sum+a[i][j];
        c[j]=sum/4.0;
        sum=0;
    }
    // 打印4門課的平均成績
    for(i=0;i<4;i++)
        printf("第%d門課程的平均成績爲%.2f\n",i,c[i]) ;
    
    //求最好的課程平均成績及序號
    max=c[0];
    for(i=0;i<4;i++)
        if(max<c[i])
        {
            max=c[i];
            n=i;
        }   
    printf("第%d門課程的平均成績最高爲%.2f\n",n,max);
    return 0;
}

問題二

(3) 有3個學生,上4門課,要求輸入全部學生的各門課成績,並分別求出每個學生的平均成績。
(4) 求出第(3)題中平均成績最高的成績,以及該學生的序號。
(5) 求出第(3)題中每門課的平均成績,並求出平均成績最高的課程序號。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    
    // 聲明一個二維數組用來存放3個人4門課的成績
    int a[3][4],i,j,sum=0;
    float b[3],c[4],max;
    int n=0;
    //數組b存放每個學生的平均成績,數組c存放每門課程的平均成績 
    //輸入3個人4門課的成績 
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    
 //求每名學生的平均成績   
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
          sum=sum+a[i][j];  
        }
        
        b[i]=sum/4.0;
        sum=0;
    }
    // 打印3個學生的成績
    for(i=0;i<3;i++)
        printf("第%d名學生的平均成績爲%.2f\n",i,b[i]) ;
    
    //求3個學生最好的平均成績及序號 
    max=b[0];
    for(i=0;i<3;i++)
        if(max<b[i])
        {
            max=b[i];
            n=i;
        }   
    printf("第%d名學生的平均成績最高爲%.2f\n",n,max);   
    
    //求每名門課程的平均成績
    sum=0;
    for(j=0;j<4;j++)
    {
        for(i=0;i<3;i++)
            sum=sum+a[i][j];
        c[j]=sum/4.0;
        sum=0;
    }
    // 打印4門課的平均成績
    for(i=0;i<4;i++)
        printf("第%d門課程的平均成績爲%.2f\n",i,c[i]) ;
    
    //求最好的課程平均成績及序號
    max=c[0];
    for(i=0;i<4;i++)
        if(max<c[i])
        {
            max=c[i];
            n=i;
        }   
    printf("第%d門課程的平均成績最高爲%.2f\n",n,max);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章