• 2012-12-10


     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]={{90,88,98},{88,77,99},{79,89,97},{66,55,78},{97,66,79}},i,j,sum[M]={0};
        double ave[M]={0},ave1[N]={0};
        sumscore(score,sum);
        average(score,ave);
        average1(score,ave1);
        printf("
      	语文  	数学  	英语  	总分  	平均分
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("	%2d",score[i][j]);
            }
            printf("	%2d",sum[i]);
            printf("	%.2f",ave[i]);
            printf("
    ");
        }
        printf("
    平均分");                //各科成绩平均分
        for(j=0;j<N;j++)
        {
            printf("	%.2f",ave1[j]);
        }
        printf("
    ");
        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 N 100
    int main()
    {
        int arr[N][M],i,j,n,sum1=0,sum2=0,sum=0,sum3=0;
        printf("请输入行列
    ");
        scanf("%d%d",&n,&n);
        for(i=0;i<n;i++)
        {
            printf("请输入第%d行数字
    ",i+1);
            for(j=0;j<n;j++)
            {
                scanf("%d",&arr[i][j]);
            }
        }
        for(i=0;i<n;i++)
        {
            sum=0;
            for(j=0;j<n;j++)
            {
                sum+=arr[i][j];
            }
            printf("第%d行的和为%d
    ",i+1,sum);
        }
        for(j=0;j<n;j++)
        {
            sum3=0;
            for(i=0;i<n;i++)
            {
                sum3+=arr[i][j];
            }
            printf("第%d列的和为%d
    ",j+1,sum3);
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(i==j)
                {
                    sum1+=arr[i][j];
                }
                if(i+j==n-1)
                {
                    sum2+=arr[i][j];
                }
            }
        }
        printf("对角线之和分别为%d   %d
    ",sum1,sum2);
        return 0;
    }

    总结:找规律对角线的坐标i和j相等   或者  相加=n-1,   不要忘记给sum赋初值

    知识点总结:

    1.    二维数组      数组名【下标】【下标】,注意:下标值应在已定义的数组大小的范围内

    2.   可以省略数组第一维的长度,不能省略第二维的长度

    3.   在一维数组的输入与输出时,用一层循环来实现,在二维数组的输入与输出时,用两层循环来实现,即用外层循环来控制行数,用内层循环来控制列数

    4.    二维数组虽然称作二维,但在计算机中存储时是一维的

  • 相关阅读:
    Mongodb相关操作
    ESP8266 + MQTT (platformio 开发环境)
    ESP8266 + L298N
    ESP8266 + mg90s(舵机)
    ESP8266 + SN74HC595N(8位移位寄存器)
    Bootstrap Blazor Table 组件(四)自定义列生成
    .Net Core 依赖注入(IOC) 一些简单的使用技巧
    RabbitMQ 消费者
    Bootstrap Blazor AutoComplete 自动完成 组件
    RabbitMQ 生产者
  • 原文地址:https://www.cnblogs.com/333xar/p/6156225.html
Copyright © 2020-2023  润新知