代码改变世界

第十次作业

2016-12-11 15:38  魏振川  阅读(139)  评论(1编辑  收藏  举报

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

#include<stdio.h>
int main()
{
    int score[5][3]={{70,70,80},{70,70,60},{70,70,90},{80,80,70},{70,70,70}},i,j,sum,sum1[5],h,sum2;
    float ave[5],average,ave1[3];
    for(i=0;i<5;i++)
    {
        sum=0;
        for(j=0;j<3;j++)
        {
            sum+=score[i][j];
        }
        average=sum/3;
        sum1[i]=sum;
        ave[i]=average;    
    }
    for(i=0;i<3;i++)
    {
        sum2=0;
        for(j=0;j<5;j++)
        {
            sum2+=score[i][j];
        }
        ave1[i]=sum2/3;

    }
    printf("    语文    数学   英语    总分    平均分\n");
    h=0;
    for(i=0;i<5;i++)
    {
        for(j=0;j<3;j++)
        { 
        printf("     %d",score[i][j]);
        h++;
        }
        printf("      %d",sum1[i]);
        h++;
        printf("     %.3f",ave[i]);
        h++;
        if(h%5==0)
        printf("\n");
    }
     printf("平均分");    
        for(i=0;i<3;i++)
    {
        printf("%.3f  ",ave1[i]);
    }
    return 0;
 } 

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

#include<stdio.h>
int main()
{
    int a,i,j,shu[20][20],sum1[20],sum2[20],sum3,sum4,sum;
    printf("请输入矩阵边长:");
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {
            printf("请输入第%d行第%d列的数据",i+1,j+1);
            scanf("%d",&shu[i][j]);
        }        
    }
    for(i=0;i<a;i++)
    {
        sum=0;
        for(j=0;j<a;j++)
        {
            sum+=shu[i][j];
        }
        sum1[i]=sum;    
    }
    for(i=0;i<a;i++)
    {
        sum=0;
        for(j=0;j<a;j++)
        
            sum+=shu[j][i];
            sum2[i]=sum;
        
            
    }
    sum=0;
    for(i=0;i<a;i++)
    {
        
        for(j=0;j<a;j++)
        {
            if(i==j)
            sum+=shu[i][j];            
        } 
    }
     sum3=sum;
    sum=0;
    j=a-1;
    for(i=0;i<a;i++)
    {
        sum=sum+shu[i][j];
        j--;
    }
    sum4=sum;
    
    for(i=0;i<a;i++)
    {
        printf("第%d行之和为%d\n",i+1,sum1[i]);
    }
    for(i=0;i<a;i++)
    {
        printf("第%d列之和为%d\n",i+1,sum2[i]);
    }
    printf("对角线之和为:%d %d",sum3,sum4);
    return 0;    
}

实验总结:

1二维数组也是线性存储的。

2.在输出表格形式的数据时灵活使用二维数组。

3.多次求和,注意每次重新求和时给sum赋初值。