代码改变世界

第十次作业

2016-12-06 21:25  沉默的核桃  阅读(186)  评论(1编辑  收藏  举报

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

#include <stdio.h>
#define N 5
#define M 6
int main()
{
    int  i,j;
    double sum,score[M][N];
    for(i=0;i<M-1;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("请输入第%d个学生的成绩\n",i+1);
            scanf("%lf",&score[i][j]);
        }
    }
    for(i=0;i<M;i++)
    {
        sum=0;
        for(j=0;j<3;j++)
        {
            sum+=score[i][j];        
        }
        score[i][N-2]=sum;
        score[i][N-1]=sum/3;
    }
    for(j=0;j<3;j++)
    {
        sum=0;
        for(i=0;i<M-1;i++)
        {
            sum+=score[i][j];        
        }
        score[M-1][j]=sum/5;
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            if(i==M-1&&j>2)
            {
                break;
            }
            else 
            printf("%8.2f",score[i][j]);
        }
        printf("\n");
    }
    return 0;
}

总结:我没有用函数,在函数那一块还不是很明白,用上函数,主函数都不会写;

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

#include <stdio.h>
#define N 100
int main()
{
    int square[N][N],i,j,M,sum,a=0;    
    printf("请输入正方形的边长\n");
    scanf("%d",&M);
    for(i=0;i<M;i++)
    {
        for(j=0;j<M;j++)
        {
            a++;
            square[i][j]=a;
        }
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%2d",square[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<M;i++)
    {
        sum=0;
        for(j=0;j<M;j++)
        {
            sum+=square[i][j];
        }
        printf("每行的和为%d\n",sum);
    }
    for(j=0;j<M;j++)
    {
        sum=0;
        for(i=0;i<M;i++)
        {
            sum+=square[i][j];
        }
        printf("每列的和为%d\n",sum);
    }
    sum=0;
    for(j=0;j<M;j++)
    {
        
        for(i=0;i<M;i++)
        {
            if(i==j)
            {
                sum=sum+square[i][j];
            }
        }
    }
    printf("左对角线的和为%d\n",sum);
        sum=0;
    for(j=0;j<M;j++)
    {
    
        for(i=0;i<M;i++)
        {
            if(i+j==M-1)
            {
                sum=sum+square[i][j];
            }
        }
    }
    printf("右对角线的和为%d\n",sum);

    return 0;
}

总结:这个相对简单一点,输入输出的位置一定要想对放在哪个位置。

 

 

 

知识点

1,二维数组有行和列,长度必须要定义;

2,在二维数组里,元素个数=行数*列数;

3,数组初始化,指的是自己给数组赋值。

 

 

实验总结

都没有用函数写,函数那一块学的不太到位。还有输出的位置不太会放,好几次都错在了这个上面。