第十次作业

实验一:

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

#include<stdio.h>
void average1(int score[5][3],double ave[]);
void average2(int score[5][3],double ave[]);
int main()
{
    int score[5][3]={0},i,j,sum,sum1=0;
    double ave[5];


    for(i=0;i<5;i++)
    {
        printf("请分别输入学生%d的语文,数学,英语成绩:
",i+1); 
        for(j=0;j<=2;j++)
        {
            scanf("%d",&score[i][j]);
        }
    }
    average1(score,ave);
    average2(score,ave);
    printf("学号    语文    数学    英语    总分    平均分
");
    for(i=0;i<5;i++)
    {
        sum=0;
        printf("学生%d:",i+1);
        for(j=0;j<3;j++)
        {
            printf("     %d",score[i][j]);
            sum=sum+score[i][j];
        }
        printf("    %d",sum);
        sum1=sum1+sum;
        printf("    %.2f",ave[i]);
        printf("
");
    }
    printf("平均分	");
    for(j=0;j<3;j++)
    {
        printf("%.2f	",ave[j]);
    }
    printf("%d",sum1);
    return 0;
 } 
void average1(int score[5][3],double ave[5])
{
    int sum,i,j;
    for(i=0;i<5;i++)
    {
        sum=0;
        for(j=0;j<3;j++)
        {
            sum=sum+score[i][j];
        }
        ave[i]=(double)sum/3.0;
    }
}
void average2(int score[5][3],double ave[3])
{
    int sum,i,j;
    for(j=0;j<3;j++)
    {
        sum=0;
        for(i=0;i<5;i++)
        {
            sum=sum+score[i][j];
        }
        ave[j]=(double)sum/5.0;

    }
    
}

实验二:

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

#include<stdio.h>
#define N1 100
#define N2 100
int main()
{
    int zhen[N1][N2],n1,i,j,sum;
    printf("请输入方阵的行数:");
    scanf("%d",&n1);
    for(i=0;i<n1;i++)
    {
        printf("请输入第%d行的数
",i+1);
        for(j=0;j<n1;j++)
        {
            scanf("%d",&zhen[i][j]);
        }
     } 
     for(i=0;i<n1;i++)
     {
         printf("
");
         for(j=0;j<n1;j++)
         {
             printf(" %d ",zhen[i][j]);
         }
    }
    for(i=0;i<n1;i++)
    {
        sum=0;
        for(j=0;j<n1;j++)
        {
            sum+=zhen[i][j];
        }
        printf("
方阵第%d行的和为:%d",i+1,sum);
    }
    for(j=0;j<n1;j++)
    {
        sum=0;
        for(i=0;i<n1;i++)
        {
            sum+=zhen[i][j];
        }
        printf("
方阵第%d列的和为:%d",j+1,sum);
    }
    sum=0;
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n1;j++)
        {
            if(i==j)
            {
                sum+=zhen[i][j];
            }
        }
    }
    printf("
对角线元素之和为%d",sum);
    sum=0;
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n1;j++)
        {
            if(i+j==n1-1)
            sum+=zhen[i][j];
        }
    }
    printf("
对角线元素之和为%d",sum);
         return 0;
 } 

附加题一:

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

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

        

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

实验总结

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

2  二维数组的完成需要两个循环,内层控制行,外层控制列;

3  二维数组的长度不能省略,一位数组可以;

4  二维数组的第一维表示数组行数度第二维表示数组的列;

5  字符数组也可以是二维数组;

原文地址:https://www.cnblogs.com/myfdpk/p/6147172.html