第十次作业

Posted 张晓楠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十次作业相关的知识,希望对你有一定的参考价值。

 

 

一、实验内容

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.实验要求

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

代码

#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.实验要求

.按照以下形式打印杨辉三角(要求输出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("\\n");
    }
    return 0;
}        

 

截图

 

2.实验要求

猴子选大王

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

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

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

输入样例:11

输出样例:7

代码
        

截图

 

二、实验总结

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

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

3.注意数组的越界问题

以上是关于第十次作业的主要内容,如果未能解决你的问题,请参考以下文章

第十次作业

第十次作业

第十次作业:期末大作业

第十次作业

201621123042《java程序设计》第十次作业

耿丹16-1第十次作业