第十次作业

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

#include <stdio.h>
int main()
{
    int grade[5][3]={89,45,65,74,58,69,45,31,54,78,98,96,54,78,45},sum[5],i,j,sum1,h;
    double ave[5],ave1[3];
    for(i=0;i<5;i++)
    {
        sum1=0;
        for(j=0;j<3;j++)
        { 
        sum1+=grade[i][j];
        }
        sum[i]=sum1;
        ave[i]=(double)sum1/3;
    }
    for(i=0;i<3;i++)
    {
        sum1=0;
        for(j=0;j<5;j++)
        { 
        sum1+=grade[i][j];
        }
        ave1[i]=(double)sum1/5;
    }
    printf("      语文    数学    英语     总分     平均分
");
    h=0;
    for(i=0;i<5;i++)
    {
        for(j=0;j<3;j++)
        { 
        printf("      %d",grade[i][j]);
        h++;
        }
        printf("       %d",sum[i]);
        h++;
        printf("       %.3f",ave[i]);
        h++;
        if(h%5==0)
        printf("
");
    }
    printf("平均分");    
        for(i=0;i<3;i++)
    {
        printf("%.3f  ",ave1[i]);
    }
    return 0;
 } 
 

                    

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

#include <stdio.h>
int main()
{
    int i,j,sum,num[20][20]={0},sumline[20],sumcolumn[20],sumdiagonal[2],b;
    printf("请输入方阵的边长:");             
    scanf("%d",&b);
    for (i=0;i<b;i++)
    {
        for(j=0;j<b;j++)
        {
            printf("请输入第%d行第%d列的数据:",i+1,j+1);
            scanf("%d",&num[i][j]);
        }
     }   
    for (i=0;i<b;i++)
    {
        sum=0;
        for(j=0;j<b;j++)
        {
        sum+=num[i][j];    
        }
        sumline[i]=sum; 
     }
    for (i=0;i<b;i++)
    {
        sum=0;
        for(j=0;j<b;j++)
        sum+=num[j][i];
        sumcolumn[i]=sum; 
     }
    for (i=0;i<b;i++)
    {
        sum=0;
        for(j=0;j<b;j++)
        {
            if(i==j)
            sum+=num[i][j];            
        } 
     }
     sumdiagonal[0]=sum;
     sum=0;
    for (i=0;i<b;i++)
    {
        sum+=num[i][b-i];        
     }
     sumdiagonal[1]=sum;
    for (i=0;i<b;i++)
    {
        printf("第%d行之和为%d
",i+1,sumline[i]); 
     }
    for (i=0;i<b;i++)
    {
        printf("每%d列之和为%d
",i+1,sumcolumn[i]); 
     }
    for (i=0;i<1;i++)
    {
        printf("对角线之和为%d
",sumdiagonal[i]); 
     }
    return 0;
 } 

实验总结:1有必要的话 记得给函数中的数值初始化

              2不同的编译环境之间是存在差异的   记得在不同的编译环境测试程序

              3二维数组也是线性存储的

原文地址:https://www.cnblogs.com/UUZsama/p/6139473.html