• 第十次作业


     

    一、实验内容

    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位学生的数学成绩
    ",i+1);
                        scanf("%d",&score[i][j]);
                        continue;
                    case 1:
                        printf("请输入第%d位学生的语文成绩
    ",i+1);
                        scanf("%d",&score[i][j]);
                        continue;
                    case 2:
                        printf("请输入第%d位学生的英语成绩
    ",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("数学	语文	英语	总分	平均分
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf(" %d	",score[i][j]);
            }
            printf("%d	",sum[i]);
            printf("%.2lf	",ave[i]);
            printf("
    ");
        }
        aveforcourse(score,ave);
        for(j=0;j<N;j++)
        {
            printf(" %.2lf	",ave[j]);
            
        }
        printf("
    ");
        return 0;
    }

    程序运行结果截图

    2.实验要求

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

    代码

    #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("
    ");
        }
        for(i=0;i<M;i++)
        {
            sum1=0;
            for(j=0;j<N;j++)
            {
                sum1+=a[i][j];
            }
            printf("第%d行的和为%d
    ",i+1,sum1);
        }
        for(j=0;j<N;j++)
        {
            sum2=0;
            for(i=0;i<M;i++)
            {
                sum2+=a[i][j];
            }
            printf("第%d列的和为%d
    ",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.实验要求

    .按照以下形式打印杨辉三角(要求输出10行)

        杨辉三角形具有如下特点:(1)第一列和对角线上的元素都为1 (2)除第一列和对角线上的元素之外,其他元素的值均为前一行上的同列元素和前一列元素之和。        

            

    代码

    #include<stdio.h>
    #define M 10
    #define N 10
    int main()
    {
        int i,j,m,a[M][N];
        for(i=0;i<N;i++)
        {
            for(j=0;j<=i;j++)
            {
                if(j==0||j==i)
                {
                    a[i][j]=1;
                }
                else
                {
                    a[i][j]=a[i-1][j-1]+a[i-1][j];
                    a[i][i-j]=a[i][j];
                }
            }
        }
        for(i=0;i<N;i++)
        {
            for(m=9-i;m>0;m--)
            {
                printf("  "); 
            }
            for(j=0;j<=i;j++)
            {
                printf("%4d",a[i][j]);
            }
            printf("
    ");
        }
        return 0;
    }        

    截图

    2.实验要求

    猴子选大王

     一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

    输入格式:输入在一行中给一个正整数N(≤1000)。

    输出格式:在一行中输出当选猴王的编号。

    输入样例:11

    输出样例:7

    代码
            

    截图

    二、实验总结

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

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

    3.注意数组的越界问题

  • 相关阅读:
    Python学习之旅—生成器对象的send方法详解
    对集合多列进行求和方法的选择
    23种设计模式
    这一天,我真正的体会到。。。
    火狐浏览器导出EXCEL 表格,文件名乱码问题
    K-fold Train Version3
    K-fold Train Version2
    K-fold Train
    Confusion matrix
    Kaggle Solutions
  • 原文地址:https://www.cnblogs.com/xxs812/p/6139370.html
Copyright © 2020-2023  润新知