第十次作业

 一、实验内容        

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

代码:

#include<stdio.h>
#define N 5
#define M 3
int main()
{
    int fen[N][M]={{100,99,98},{97,96,95},{94,93,92},{91,90,89},{88,87,86}},sum1,sum2,i,j,a=0;
    double ave1,ave2,b=0,c=0,d=0;
    printf("\t语文    数学    英语    总分    平均分\n\t");
    sum1=0;
    sum2=0;
    ave1=0;
    ave2=0;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%d\t",fen[i][j]);
            a++;
            sum1=sum1+fen[i][j];
            ave1=sum1/3;
            if(a%3==0)
            {
                printf("%d\t%.2lf\n\t",sum1,ave1);
                sum1=0;    
            }
            if(j==0)
            {
                b=b+fen[i][j];
            }
            if(j==1)
            {
                c=c+fen[i][j];
            }
            if(j==2)
            {
                d=d+fen[i][j];
            }
        }
    }
    printf("\n平均分\t%.2f\t%.2f\t%.2f",b/5,c/5,d/5);
    return 0;
 } 

程序运行结果:

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

代码:

#include<stdio.h>
# define N 3
int main()
{
    int a[N][N]={{5,9,4},{11,9,6},{1,9,7}};
    int i,j,hang1=0,hang2=0,hang3,lie1=0,lie2=0,lie3,dui1=0,dui2=0;
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<N;i++)
    {
        hang1+=a[0][i];
        hang2+=a[1][i];
        hang3+=a[2][i];
        lie1+=a[i][0];
        lie2+=a[i][1];
        lie3+=a[i][2];
        dui1+=a[i][i];
        dui2+=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,dui1,dui2);
    return 0;
}

程序运行结果:

 二、实验总结(实验中遇到的问题及解决方法) 

1、减少判断和赋值来节省运行时间。

2、二维数组的存储是以一维数组的形式进行存储与输出。

3、在程序中使用数组时不能越界(超出数组的定义长度);

4、测试时可以先用简单的数进行测试

5、在输出表格形式的数据时使用二维数组。

posted on 2016-12-11 15:35  差不多先森i  阅读(163)  评论(1编辑  收藏  举报

导航