Press "Enter" to skip to content

明解C语言练习题

练习5-11

编写一段程序,输入6名学生2门课程(语文、数学)的分数,显示各门课程的总分和平均分,以及各个学生的总分和平均分。

#include <stdio.h>
int main(void)
{
    int grade[2][6]={0};
    int i=0,j=0,n=1;
    char *k;
    int sum[2]={0};
    int stdusum[6]={0};

    puts("请输入六名学生的数学与语文课程成绩:");
    while(n<6){
        for(i=0;i<2;i++){
            switch(i){
                case 0 : k = "数学";  break;
                case 1 : k = "语文";  break;
            }           
            printf("\n%s课程成绩为:\n",k);
            for(j=0;j<6;j++){
                printf("第%2d号同学的成绩为:",j+1);
                scanf("%d",&grade[i][j]);
                n++;
            }           
        }
    };  
    puts("---------总成绩--------------");
    for(i=0;i<2;i++){
        for(j=0;j<6;j++){
            sum[i] += grade[i][j];
        }
        if(i==0){
            printf("数学课程的总分为:%2d    平均分为: %2d\n",sum[i],sum[i]/6);
        }else{
            printf("语文课程的总分为:%2d    平均分为: %2d\n",sum[i],sum[i]/6);
        }
    }
    puts("--------个人成绩---------------");
    for(j=0;j<6;j++){
        for(i=0;i<2;i++){
            stdusum[j] += grade[i][j];
        }
        printf("第%d号同学总成绩为:%d   平均分为:%.2f\n",j+1,stdusum[j],(double)stdusum[j]/2);
    }

    return 0;
}

效果:

请输入六名学生的数学与语文课程成绩:

数学课程成绩为:
第 1号同学的成绩为:1
第 2号同学的成绩为:1
第 3号同学的成绩为:1
第 4号同学的成绩为:1
第 5号同学的成绩为:1
第 6号同学的成绩为:1

语文课程成绩为:
第 1号同学的成绩为:2
第 2号同学的成绩为:2
第 3号同学的成绩为:2
第 4号同学的成绩为:2
第 5号同学的成绩为:2
第 6号同学的成绩为:2
---------总成绩--------------
数学课程的总分为: 6 平均分为:  1
语文课程的总分为:12 平均分为:  2
--------个人成绩---------------
第1号同学总成绩为:3 平均分为:1.50
第2号同学总成绩为:3 平均分为:1.50
第3号同学总成绩为:3 平均分为:1.50
第4号同学总成绩为:3 平均分为:1.50
第5号同学总成绩为:3 平均分为:1.50
第6号同学总成绩为:3 平均分为:1.50

5-12

求4名学生在两次考试中的3门课程的总分并显示,将考试的分数存储在三维数组中。

#include <stdio.h>
int main(void)
{
    int i,j,k;
    int tensu[2][4][3] = {{{91,63,78},{67,72,46},{89,34,53},{32,54,34}},{{97,67,82},{73,43,46},{97,56,21},{85,46,35}}};
    int sum[0][4][3];   
    for(i=0;i<2;i++){
        printf("第%d次考试成绩为: \n\n",i+1);
        for(j=0;j<4;j++){
            for(k=0;k<3;k++){
                printf("%4d",tensu[i][j][k]);
            }
            putchar('\n');  
        }
        puts("\n-----------------\n");
    }

    puts("总分:\n");
    /*求两次考试的分数之和*/
        for(j=0;j<4;j++){
            for(k=0;k<3;k++){
                sum[0][j][k] = tensu[0][j][k] + tensu[1][j][k];
                printf("%4d",sum[0][j][k]);
            }
            puts("\n");     
    }   

    return 0;
}

5-10

编写一段程序,求4行3列矩阵和3行4列矩阵的乘积

#include<stdio.h>
int main(void){
    int A[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int B[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
    int i=0,j=0,k=0,x=0;
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            for(k=0;k<4;k++){
                x+=A[i][k]*B[k][j];
            }
            printf("%6d",x);
        }
        printf("\n");
    }
    return 0;
}

Be First to Comment

    Leave a Reply

    Your email address will not be published. Required fields are marked *