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

第十次作业

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

#include <stdio.h>
#define M 5
#define N 3
void Score(int score[M][N]);
void aveforstudent(int score[M][N],double average1[]);
void aveforsubject(int score[M][N],double average2[]);
int main()
{
    int score[M][N],i,j,sum1;
    double average1[M],average2[N];
    Score(score);
    aveforstudent(score,average1);
    aveforsubject(score,average2);
    printf("\t语文\t数学\t英语\t总分\t平均分\n");
    for(i=0;i<M;i++)
    {
        printf("学生%d\t",i+1);
        sum1=0;
        for(j=0;j<N;j++)
        {
            printf("%d\t",score[i][j]);
            sum1=sum1+score[i][j];
        }
        printf("%d\t",sum1);0
        printf("%.2f",average1[i]);
        printf("\n");
    }
    printf("平均分\t");
    for(j=0;j<N;j++)
    {
        printf("%.2f\t",average2[j]);
    }
    return 0;
}

void aveforstudent(int score[M][N],double average1[])
{
    int i,j,sum;
    for(i=0;i<M;i++)
    {
        sum=0;
        for(j=0;j<N;j++)
        {
            sum=sum+score[i][j];
        }
        average1[i]=(double)sum/N;
    }
}
void aveforsubject(int score[M][N],double average2[])
{
int i,j,sum;
    for(j=0;j<N;j++)
    {
        sum=0;
        for(i=0;i<M;i++)
        {
            sum=sum+score[i][j];
        }
        average2[j]=(double)sum/M;
    }
}
void Score(int score[M][N])
{
    int i,j;
    for(i=0;i<M;i++)
    {
        printf("请输入第%d个学生成绩\n",i+1);
        for(j=0;j<N;j++)
        {
            scanf("%d",&score[i][j]);
        }
        
    }
}

技术分享

 

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

#include <stdio.h>
#define N 100
int main()
{
    int fz[N][N],i,j,sum,a,b=0;
    printf("请输入行数");
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {
           b++;
           fz[i][j]=b;
           printf("%3d",b);
        }
        printf("\n");
    }
    for(i=0;i<a;i++)
    {
        sum=0;
        for(j=0;j<a;j++)
        {
            sum=sum+fz[i][j];
        }
        printf("第%d行的和为%d\n",i+1,sum);
    }
    for(j=0;j<a;j++)
    {
        sum=0;
        for(i=0;i<a;i++)
        {
            sum=sum+fz[i][j];
        }
        printf("第%d列的和为%d\n",j+1,sum);
    }
    sum=0;
    for(i=0;i<a;i++)
    {
        sum=sum+fz[i][i];
    }
    printf("左对角线的和为%d\n",sum);
    sum=0;
    j=a-1;
    for(i=0;i<a;i++)
    {
        sum=sum+fz[i][j];
        j--;
    }
    printf("右对角线的和为%d\n",sum);
    return 0;
}

技术分享

 

实验总结:

1 \t为制表位!

2 输出语句应判断好在循环内还是循环外!

3 定义函数时数组名不能相同!

第十次作业