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

第十次作业

#include<stdio.h>
#define M 5
#define N 5
int main()
{
    int i,j,sum1=0,sum2=0,sum3=0,sum4=0,k;
    int a[M][N];
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            a[i][j]=j+1;
            printf(" %d",a[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<M;i++)
    {
        sum1=0;
        for(j=0;j<N;j++)
        {
            sum1+=a[i][j];
        }
        printf("第%d行的和为%d\n",i+1,sum1);
    }
    for(j=0;j<N;j++)
    {
        sum2=0;
        for(i=0;i<M;i++)
        {
            sum2+=a[i][j];
        }
        printf("第%d列的和为%d\n",j+1,sum2);
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            if(i==j)
            {
                sum3+=a[i][j];
            }
        }
    }
    for(i=M-1;i>=0;i--)
    {
        for(j=0;j<N;j++)
        {
            if(i+j==M-1)
            {
                sum4+=a[i][j];
            }
        }
    }
    printf("两对角线的和分别为%d,%d",sum3,sum4);
    return 0;
}
  

 

一、实验内容

1.实验要求.

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

代码

#include<stdio.h>
#define M 5
#define N 3
void  readscore(int score[M][N]);
int sumforstud(int score[M][N],int sum[]);
double aveforstud(int score[M][N],double ave[]);
double aveforcourse(int score[M][N],double ave[]);
void readscore(int score[M][N])
{
    int i,j;
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            switch(j)
            {
                case 0:
                    printf("请输入第%d位学生的数学成绩\n",i+1);
                    scanf("%d",&score[i][j]);
                    continue;
                case 1:
                    printf("请输入第%d位学生的语文成绩\n",i+1);
                    scanf("%d",&score[i][j]);
                    continue;
                case 2:
                    printf("请输入第%d位学生的英语成绩\n",i+1);
                    scanf("%d",&score[i][j]);
                    continue;
            }
        }
    }
}
int sumforstud(int score[M][N],int sum[])
{
    int i,j;
    for(i=0;i<M;i++)
    {
        sum[i]=0;
        for(j=0;j<N;j++)
        {
            sum[i]=sum[i]+score[i][j];
        }
    }
}
//每个学生的平均分
double aveforstud(int score[M][N],double ave[])
{
    int i,j,sum;
    for(i=0;i<M;i++)
    {
        sum=0;
        for(j=0;j<N;j++)
        {
            sum=sum+score[i][j];
        }
        ave[i]=(double)sum/N;
    }
}
//各科平均分
double aveforcourse(int score[M][N],double ave[])
{
    int i,j,sum;
    for(j=0;j<M;j++)
    {
        sum=0;
        for(i=0;i<N;i++)
        {
            sum+=score[i][j];
        }
        ave[j]=(double)sum/N;
    }
}
int main()
{
    int score[M][N];
    double ave[M];
    int sum[M];
    int i,j;
    readscore(score);
    sumforstud(score,sum);
    aveforstud(score,ave);
    printf("数学\t语文\t英语\t总分\t平均分\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            printf(" %d\t",score[i][j]);
        }
        printf("%d\t",sum[i]);
        printf("%.2lf\t",ave[i]);
        printf("\n");
    }
    aveforcourse(score,ave);
    for(j=0;j<N;j++)
    {
        printf(" %.2lf\t",ave[j]);
        
    }
    printf("\n");
    return 0;
}

 

程序运行结果截图技术分享

 

2.实验要求

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

代码

程序运行结果截图技术分享

附加题

1.实验要求

代码

截图

2.实验要求

代码

截图

 

二、实验总结

1.double类型变量输出时是%lf

2.二维函数必需要两层循环

3.注意数组的越界问题

第十次作业