C的二维数组

二维和多维数组:

        二维数组定义:类型 数组名[行][列];

        空间长度:sizeof(int)*行*列

        元素个数: 行*列

        引用元素:需要确定哪一行哪一列的元素  数组[行][列]



习题:

        统计这个二维数组中每一行的总分,平均分,最高分.

#include<stdio.h>
void main()
{
int score1[5][5] = {{1,2,3,4,5},
                    {21,22,23,24,25},
                    {31,32,33,34,35},
                    {100,101,3300,103,104},
                    {1000,1001,1005,1003,1004}};
}

求总分,平均分,最高分

//总分,平均分
int j = 0;
int num = 0,pjf = 0;
for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
        {
        num = num + score1[i][j];
        //printf("%d\t",num);
        }
        pjf = num/5;
        printf("每行总分:%d平均分:%d\n",num,pjf);
        num = 0;
}

//最高分,监哨值法
int a = 0,listen = 0;
int max = 0;
for(i=0;i<5;i++)
{
     for(j=0;j<4;j++)
     {
        listen = score1[i][j+1];
        if(a<listen)
        {
              a = listen;
        }
      }
      printf("\n最高分:%d",a);
      a = 0;
}

习题:

        判断下列数组是否是称的

                斜对称 :

                1     2     3     4

                2     2     7     8

                3     7     3     5

                4     8     5     4

#include<stdio.h>
int main()
{
    int score[4][4]={{1,2,3,4},
                     {2,2,7,8},
                     {3,7,3,5},
                     {4,8,5,4}};

     int i = 0,j = 0,d = 0;
     for(i=0;i<4;i++)
     {
          for(j=0;j<4;j++)
          {
               if(score[i][j] = score[j][i]
              {
                  d++;
              }
          }
     }
     if(d==16)
     {
            printf("是对称的!");
     }
     else
     {
            printf("不是对称的!");
     }
}

习题:

        求下列数组所有元素的最大值,和次大值 .

#include<stdio.h>
void main()
{
int score1[5][5] = {{1,2,3,4,5},
                    {21,22,23,24,25},
                    {31,32,33,34,35},
                    {100,101,3300,103,104},
                    {1000,1001,1005,1003,1004}};
}

    求最大值:

int i = 0,j = 0;
int listen = 0,max = 0;
for(i=0;i<5;i++)
{
    listen = score[i][0];
    for(j=0;j<4;j++)
    {
        if(listen<score[i][j+1])
        {
             listen = score[i][j+1];
        }
    }
    printf("%d",listen);
}

    求次大值:

int i = 0,j = 0;
int a = 0,b = 0,max = 0;
for(i=0;i<5;i++)
{
    for(j=0;j<4;j++)
    {
        if(a<score[i][j+1])    //当a=3300时,score[i][j+1]=34>3300的条件不成立,执行else
        {
            b = a;                    //此时b=32
            a = score[i][j+1];        //此时a=3300
            printf("%d,%d\n",b,a);    //打印b,a的值
        }
        else
        {
            if(score[i][j+1]>b)
            {
                printf("%d,",b);    //此时b=32
                b = score[i][j+1];  //此时score[i][j+1]=34
                printf("%d\n",b);   //此时b=34
            }
        }
    }
}
printf("%d",b);








猜你喜欢

转载自blog.csdn.net/superman___007/article/details/81054416