• 作业,10


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

    复制代码

    #include<stdio.h>
    void ave(int a[][3]);
    int sum(int a[][3],int i);
    int main()
    {
    int fs[5][3]={76,46,87,67,59,74,36,85,67,46,86,78,64,58,57},i,j,Sum;
    double average;
    printf(" 数学 语文 英语 总分 平均分 ");
    for(i=0;i<5;i++)
    {
    printf("学生%d ",i+1);
    for(j=0;j<3;j++)
    {
    printf("%d ",fs[i][j]);
    }
    Sum=sum(fs,i);
    average=(double)Sum/3;
    printf("%d %.2f ",Sum,average);
    }
    printf("平均分 ");
    ave(fs);
    }
    void ave(int a[][3])
    {
    int i,j,sum;
    double ave;
    for(j=0;j<3;j++)
    {
    for(i=0,sum=0;i<5;i++)
    {
    sum+=a[i][j];
    }
    ave=(double)sum/5;
    printf("%.2f ",ave);
    }
    }
    int sum(int a[][3],int i)
    {
    int j,Sum;
    for(j=0,Sum=0;j<3;j++)
    {
    Sum+=a[i][j];
    }
    return Sum;
    }

    复制代码

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

    复制代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int Sum1(int a[7][7],int i);
    int Sum2(int a[7][7],int j);
    int main()
    {
    int fz[7][7],i,j,a,sum1,sum2,sum3,sum4;
    srand(time(NULL));
    for(i=0;i<7;i++)
    for(j=0;j<7;j++)
    {
    a=rand()%100;
    fz[i][j]=a;
    }
    for(i=0;i<7;i++)
    {
    for(j=0;j<7;j++)
    {
    printf("%02d ",fz[i][j]);
    }
    printf(" ");
    }
    for(i=0,sum1=0;i<7;i++)
    {
    sum1=Sum1(fz,i);
    printf("第%d行的和为%d ",i+1,sum1);
    }
    for(j=0,sum2=0;j<7;j++)
    {
    sum2=Sum2(fz,j);
    printf("第%d列的和为%d ",j+1,sum2);
    }
    for(i=0,sum3=0;i<7;i++)
    for(j=0;j<7;j++)
    {
    if(i==j)
    {
    sum3+=fz[i][j];
    }
    }
    for(i=0,sum4=0;i<7;i++)
    for(j=0;j<7;j++)
    {
    if(6-i==j)
    {
    sum4+=fz[i][j];
    }
    }
    printf("对角线的和为%d与%d",sum3,sum4);
    }
    int Sum1(int a[7][7],int i)
    {
    int j,sum;
    for(j=0,sum=0;j<7;j++)
    {
    sum+=a[i][j];
    }
    return sum;
    }
    int Sum2(int a[7][7],int j)
    {
    int i,sum;
    for(i=0,sum=0;i<7;i++)
    {
    sum+=a[i][j];
    }
    return sum;
    }

    复制代码

    附加题

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

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

    #include<stdio.h>
    int main()
    {
        int a[10][10]={0},i,j;
    //    printf("1");
        for(j=0;j<10;j++)
        {
            a[j][0]=1;
        }
    //    printf("1");
        for(i=0;i<10;i++)
        for(j=0;j<=i;j++)
        {
            if(i==j)
            {
                a[i][j]=1;
            }
        }
        for(i=2;i<10;i++)
        for(j=1;j<i;j++)
        {
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
        for(i=0;i<10;i++)
        {
            for(j=10-i;j>1;j--)
            {
                printf("  ");
            }
            for(j=0;j<=i;j++)
            {
                printf("%3d ",a[i][j]);
            }
            printf("
    ");
        }
    }

    实验总结

    1:数组要定义长度并且不能越界。

    2:实现数组换位,要有多余的位置。

    3:合理运用制表符 。

    4.可以用二维数组输出多个数据。 

  • 相关阅读:
    win8下Source Insight has not been installed completely问题的解决
    linux命令学习——ps
    linux命令学习——file
    树莓派进阶之路 (023)
    树莓派进阶之路 (022)
    树莓派进阶之路 (021)
    树莓派进阶之路 (020)
    ubuntu下安装gedit插件
    C语言学习笔记 (004)
    C语言学习笔记 (003)
  • 原文地址:https://www.cnblogs.com/szy-65517610/p/6160476.html
Copyright © 2020-2023  润新知