C语言二维数组的应用的简单举例

例题一:

一个学习小组有5个人,每个人有三门课的考试成绩。将各个数据保存到二维数组a[5][3]中,并求全组分科的平均成绩和总平均成绩。

 
Math8061598576
C language7565638777
Foxpro9271709085

#include<stdio.h>
int main()
{
    int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
    int i,j,sum=0,average,v[3];
    for(i=0;i<3;i++)     //表示科目
    {
        for(j=0;j<5;j++)  //表示学生
        {
            sum+=a[j][i];
        }
        v[i]=sum/5;
        sum=0;
    }
    average=(v[0]+v[1]+v[2])/3;
    printf("math:%d\nc language:%d\ndFoxpro:%d\n",v[0],v[1],v[2]);
    printf("total:%d\n",average);
}


例题二:

将二维数组a[2][3]={{1,2,3},{4,5,6}}转置为b[3][2]。

#include<stdio.h>
int main()
{
    int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;
    printf("array a:\n");
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=2;j++)
        {
            printf("%5d",a[i][j]);
            b[j][i]=a[i][j];
        }
        printf("\n");
    }
    printf("array b:\n");
    for(i=0;i<=2;i++)
    {
        for(j=0;j<=1;j++)
        {
            printf("%5d",b[i][j]);
        }
        printf("\n");
    }
}


例题三:

有一个3*4的矩阵,要求编程程序求出其中值最大的那个元素的值,以及其所在的行号和列号。


在这里的程序并不是动态输入,而是特定的。

#include<stdio.h>
int main()
{
   int i,j,row=0,colum=0,max;
   int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
   max=a[0][0];
   for(i=0;i<=2;i++)
   {
       for(j=0;j<=3;j++)
       {
           if(a[i][j]>max)
           {
               max=a[i][j];
               row=i;
               colum=j;
           }
       }
   }
   printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}

例题四:

输入九个整数,为3*3形式保存在二维数组中,按数组原来位置输出第一行和第一列的所有元素。

#include<stdio.h>
int main()
{
    int i,j,a[3][3];
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("a[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            if(i==1||j==1)
        {
            printf("%-6d",a[i][j]);
        }
        else
        {
            printf("%-6c",' ');
        }
        printf("\n");
    }
}


例题五:

假设在数组a中的数据是按由小到大的顺序排列的:-12,0,6,16,23,56,80,100,110,115,从键盘上输入一个数,判定该数是否在数组中,若在,输出所在序号。

ps:可以利用二分法思想。

# include<stdio.h>
#define M 10
int main()
{
   int a[M]={-12,0,6,16,23,56,80,100,110,115};
   int n,low=0,mid,high,found=0;
   high=M-1;
   printf("Input a number to be searcched:\n");

   while(scanf("%d",&n)!=1)
   {
       printf("Illegal input!!\nPlease input again!!\n");
       getchar();//由于scanf函数一直在读取输入流的数据,所以要将数据引出,凭空的读取,消耗输入流上的字符
   }

   while(low<=high)
   {
       mid=(low+high)/2;
       if(n==a[mid])
       {
           found = 1;
           break;
       }     //找到,结束循环
       else if(n>a[mid])
       {
           low=mid+1;
       }
       else
       {
           high=mid-1;
       }
   }
   if(found==1)
   {
       printf("The index of %d is %d",n,mid);
   }
    else
    {
        printf("There is not %d",n);
    }
}


  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值