首页 > 代码库 > 第十次作业

第十次作业

 1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。

#include<stdio.h>
#define M 5
#define N 5
int main()
{
    int a,b;
    double sum;
    double he[5]={0},shu[M][N]={{55,49,46},{58,84,76},{94,56,86},{49,78,56},{49,85,75}};
    printf("\t语文\t数学\t英语\t总和\t平均\n");
     for(a=0;a<M;a++)
     {
         sum=0;
         for(b=0;b<N-2;b++)
         {
             sum=sum+shu[a][b];
        }
        shu[a][3]=sum;
        shu[a][4]=shu[a][3]/(N-2);
    }
    for(a=0;a<M;a++)
     {
        printf("\t");
         for(b=0;b<N;b++)
         {
             printf("%.2f\t",shu[a][b]);
        }
        printf("\n");
    }
    for(a=0;a<M;a++)
     {
         sum=0;
         for(b=0;b<N;b++) 
         {
             sum=sum+shu[b][a];
        }
        he[a]=sum/N;
    }
    printf("平均\t");
    for(a=0;a<N;a++)
    {
        printf("%.2f\t",he[a]);
    }
    return 0;
}

技术分享

2.求任意方阵每行、每列、两对角线上元素之和。

#include<stdio.h>
#define M 3
#define N 3
int main()
{
    int a[M][N]={{1,2,3},{1,2,3},{1,2,3}};
    int i,j,hang1=0,hang2=0,hang3=0,lie1=0,lie2=0,lie3=0,zuoxie=0,youxie=0;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<N;i++)
    {
        hang1=hang1+a[0][i];
        hang2=hang2+a[1][i];
        hang3=hang3+a[2][i];
        lie1=lie1+a[i][0];
        lie2=lie2+a[i][1];
        lie3=lie3+a[i][2];
        zuoxie=zuoxie+a[i][i];
        youxie=youxie+a[i][N-1-i];
    }
    printf("第一行是%d\n第二行是%d\n第三行是%d\n第一列是%d\n第二列是%d\n第三列是%d\n左斜对角线是%d\n右斜对角线是%d\n",hang1,hang2,hang3,lie1,lie2,lie3,zuoxie,youxie);
    return 0;
}

技术分享

二、实验总结;

1.在一维数组的输入与输出时,用一层循环来实现,在二维数组的输入与输出时,用两层循环来实现,用外层循环来控制行数,用内层循环来控制列数。
2.制作表格用\t,一个\t表示4个字符。
3.在循环中要注意先循环行还是先循环列。
4.二维数组中可以省略行的数组长度,但是不能省略列的数组长度。

第十次作业