• 第十次作业


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

    #include<stdio.h>
    #define M 5
    #define N 5
    int main()
    {
        int a,b,c,d,f,sum;
        double he[5]={0},shu[M][N]={{11,12,13},{14,15,16},{17,18,19},{21,22,22},{23,24,25}};
        printf("	语文	数学	英语	总和	平均
    ");
         for(a=0;a<M;a++)
         {
             sum=0;d=3;f=4;
             for(b=0;b<N-2;b++)
             {
                 sum=sum+shu[a][b];
              }
              shu[a][d]=sum;
              shu[a][f]=shu[a][d]/(N-2);
         }
         for(a=0;a<M;a++)
         {
             printf("	");
             for(b=0;b<N;b++)
             {
                 printf("%.2f	",shu[a][b]);
             }
             printf("
    ");
        }
        for(a=0;a<M;a++)
         {
             sum=0;
             for(b=0;b<N;b++)
             {
                 sum+=shu[b][a];
              }
              he[a]=(double)sum/N; 
         }
         printf("平均数	");
         for(a=0;a<N;a++)
         {
          printf("%.2f	",he[a]);
          }
        return 0;
    }

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

    # include<stdio.h>
    # include<stdlib.h>
    #define N 100
    #define M 100
    int main()
    {
        int a,b,c,d,e=0,shu[N][M]={0},sum,sum1=0,sum2=0,sum3,he[N]={0},he1[N]={0};
        printf("输入数组有几行几列方阵
    ");
        scanf("%d%d",&c,&d);
        x=1; 
        for(a=0;a<c;a++)
        {
            for(b=0;b<d;b++)
            {
                scanf("%d",&shu[a][b]);
            }
        }
          system("cls");
         printf("对角元素和
    ");
        for(a=0,b=0;a<M;a++,b++)
        {
            sum1=sum1+shu[a][b]; 
         }
         printf("%d
    ",sum1); 
         for(a=0,b=d-1;a<M;a++,b--)
        {
            sum2=sum2+shu[a][b]; 
         }
         printf("%d
    ",sum2);
         printf("就各行各列的和
    ");
        for(a=0;a<c;a++)
        {
            sum=0;
            for(b=0;b<d;b++)
            {
                sum=sum+shu[a][b];
            }
         he[a]=sum;
         }
         for(a=0;a<N;a++)
        {
            sum3=0;
            for(b=0;b<M;b++)
            {
                sum3=sum3+shu[b][a];
            }
            he1[a]=sum3;
         }
         for(b=0;b<c;b++)
            {
            printf("第%d行和是%d
    ",b+1,he[b]);    
            }
            for(b=0;b<d;b++)
            {
            printf("第%d列和是%d
    ",b+1,he1[b]);    
            }
        
        printf("
    输出
    ");
        for(a=0;a<c;a++)
        {
            for(b=0;b<d;b++)
            {
                 printf("%d	",shu[a][b]);
            }
            printf("
    ");
        }
        return 0;
    }

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

    #  include<stdio.h>
    # define N 10
    # define M 10
    void shu(int a);
    int main()
    {
        int a,b,c,d,e,f,shu[N][M]={0},i,m,z;
        printf("输出杨辉三角
    ");
        shu[0][4]=1;
        z=1;
        e=4;
        for(a=0;a<10;a++)
        {
            c=a;
            for(b=0;b<10;b++)
            {
                if(10-c>0)
                {
                    printf("  ");
                    c++;
                 }
            }
            f=e;
            for(c=0;c<z;c++)
            {
                printf("%4d",shu[a][f]);
                f++;
            }
            printf("
    ");
            z++;
            m=0;
            if(z%2==0)
            {
                for(d=0;d<z;d++)
               {
                  shu[a+1][e+m]=shu[a][e-1+m]+shu[a][e+m];    
                  m++;
                }
            }
            else
            {
                 e--;
                    for(d=0;d<z;d++)
                 {
                    shu[a+1][e+m]=shu[a][e+m]+shu[a][e+1+m];
                    m++;
                  }
            }
        }
    }
        

    2.猴子选大王

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

    # include <stdio.h>
    # define N 1000
    int main()
    {
        int a,max,min,b,f,c,d,e,shu[N]={0};
        printf("输入
    ");
        scanf("%d",&b);    
        c=1;
        d=0;
         do
         {
             f=0;
             for(a=0;a<b;a++)
             {
                  if(shu[a]!=0)
                  {
                      continue;
                  }
                 else
                 {
                    d++;
                     if(d%3==0)
                     {
                         shu[a]=c;
                         c++;
                         d=0;
                     }
                }
             }
             for(a=0;a<b;a++)
             {
                 if(shu[a]==b)
                 {
                     f=1;
                 }
             }
             if(f==1)
             {
                 break;
             }
         }while(1);
         for(a=0;a<b;a++)
         {
             if(shu[a]==b)
             {
                 printf("%d",a+1);
              } 
         }
         return 0;
    }

    实验总结:

    1.不会做啊,硬想都想不出来,真尴尬;

    2.二维数组输出需要自己加换行;

    3.整体框架的构造,....

    4.格式对不齐使用/t

    5.注意数组不要越界

  • 相关阅读:
    MySql索引
    MySql事务、隔离级别
    41. 缺失的第一个正数
    442. 数组中重复的数据
    448. 找到所有数组中消失的数字
    转载:神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
    转载:神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)
    697. 数组的度
    第三章 进程描述与控制
    C++ 对象成员函数(非静态方法)
  • 原文地址:https://www.cnblogs.com/saber114567/p/6141932.html
Copyright © 2020-2023  润新知