zoukankan      html  css  js  c++  java
  • 第十次作业

    实验一:

    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  字符数组也可以是二维数组;

  • 相关阅读:
    设计模式:迭代器模式(Iterator Pattern) 明
    设计模式:目录导航 明
    设计模式:状态模式(State Pattern) 明
    设计模式:命令模式(Command Pattern) 明
    二维DP—— POJ 3186
    COM组件里自动化接口与普通接口的转换
    贪心好题——poj3044
    三分查找——POJ3301
    静态链表+DFS——poj 3272
    妙用队列优化——校赛题
  • 原文地址:https://www.cnblogs.com/myfdpk/p/6147172.html
Copyright © 2011-2022 走看看