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;
}

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