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("\t语文\t数学\t英语\t总和\t平均\n");
     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("\t");
         for(b=0;b<N;b++)
         {
             printf("%.2f\t",shu[a][b]);
         }
         printf("\n");
    }
    for(a=0;a<M;a++)
     {
         sum=0;
         for(b=0;b<N;b++)
         {
             sum+=shu[b][a];
          }
          he[a]=(double)sum/N; 
     }
     printf("平均数\t");
     for(a=0;a<N;a++)
     {
      printf("%.2f\t",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("输入数组有几行几列方阵\n");
    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("对角元素和\n");
    for(a=0,b=0;a<M;a++,b++)
    {
        sum1=sum1+shu[a][b]; 
     }
     printf("%d\n",sum1); 
     for(a=0,b=d-1;a<M;a++,b--)
    {
        sum2=sum2+shu[a][b]; 
     }
     printf("%d\n",sum2);
     printf("就各行各列的和\n");
    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\n",b+1,he[b]);    
        }
        for(b=0;b<d;b++)
        {
        printf("第%d列和是%d\n",b+1,he1[b]);    
        }
    
    printf("\n输出\n");
    for(a=0;a<c;a++)
    {
        for(b=0;b<d;b++)
        {
             printf("%d\t",shu[a][b]);
        }
        printf("\n");
    }
    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("输出杨辉三角\n");
    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("\n");
        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("输入\n");
    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.注意数组不要越界