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

第十次作业

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

#include <stdio.h>
#define M 5//五个同学 
#define N 3//三门成绩
void sumscore(int score[M][N],int sum[]);//每个学生的总分
void average(int score[M][N],double ave[]);//每个学生的平均分 
void average1(int score[M][N],double ave[]); //各科成绩的平均
int main()
{
    int score[M][N]={{80,81,82},{83,84,85},{90,91,92},{93,94,95},{96,97,98}},i,j,sum[M]={0};
    double ave[M]={0},ave1[N]={0};
    sumscore(score,sum);
    average(score,ave);
    average1(score,ave1);
    printf("\t语文 \t数学 \t英语 \t总分 \t平均分\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            printf("\t%2d",score[i][j]);
        }
        printf("\t%2d",sum[i]);
        printf("\t%.2f",ave[i]);
        printf("\n");
     } 
     printf("\n平均分");//各科成绩平均分
     for(j=0;j<N;j++)
     {
         printf("\t%.2f",ave1[j]);
      } 
      printf("\n");
      return 0;
 } 
 void sumscore(int score[M][N],int sum[])//每个学生的总分 
 {
     int i,j,sum1;
     for(i=0;i<M;i++)
     {
      sum1=0;
      for(j=0;j<N;j++)
      {
         sum1+=score[i][j];
      } 
      sum[i]=sum1;
     }
 }
 void average(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+=score[i][j];
      } 
      ave[i]=(double)sum/N;
     }
 }
void average1(int score[M][N],double ave[M])    //各科成绩求平均 
{
    int j,i,sum2;
    for(i=0;i<N;i++)
    {    
        sum2=0;
        for(j=0;j<M;j++)
        {
            sum2+=score[i][j];
        }
        ave[i]=(double)sum2/M;
    }
}

技术分享

 

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

#include<stdio.h>
#define M 3
#define N 3
int main()
{
    int num[M][N],i,j,x,y,sum1,sum2,sum3,sum4;
    printf("请输入任意九个数字\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            scanf("%d",&num[i][j]);
        }
    }
    printf("方阵为:\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            if(j%3==0)
            {
                printf("\n");
            }
            printf("%3d",num[i][j]);
        }
    }
    printf("\n");
    for(x=0;x<M;x++)
    {
        sum1=0;
        sum2=0;
        for(y=0;y<N;y++)
        {
            sum1=sum1+num[x][y];
            sum2=sum2+num[y][x];
        }
        printf("第%d行的元素之和为%d\n",x+1,sum1); 
        printf("第%d列的元素之和为%d\n",y+1,sum2);
    }
    sum3=num[0][0]+num[1][1]+num[2][2];
    sum4=num[0][2]+num[1][1]+num[2][0];
    printf("从左上到右下的对角线元素之和为%d\n从左下到右上的对角线元素之和为%d",sum3,sum4);
    return 0;
}

技术分享

 

1.二维数组声明函数形参,可以省略第一维数组的长度,不能省略第二维数组的长度
2.二维数组元素的应用
 数组名[下标][下标]
下标值应该在已定义的数组大小范围内,区分定义数组时的a[1][2]和引用元素时的a[1][2]
刚开始先定义一个二维数组 它表示的是一个矩阵,在引用的时候,它是作为一个位置一个数字数字
3.\b为退格 1字符长度 
    \t 4个字符长度
    \n 回车

 

第十次作业