二维数组相关问题

Posted laurarararararara

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组相关问题相关的知识,希望对你有一定的参考价值。

2019-06-02   20:15:54  

1.创建二维数组

以矩阵的形式显示它的数据元素。一个矩阵代表若干行的数据元素,每行有相同的列数。如果一个矩阵只有一行,则被称为行矩阵。(若只有一列,则被称为列矩阵)。一个行矩阵或者一个列矩阵实际上是一个一维数组。如果一个矩阵有m行n列,则被称为m*n矩阵。这种矩阵可以被想象成二维数组,按照键盘输入的数据存入数组。

#include<stdio.h>
int main()
    int i,j;
    int a[][5]=1,2,3,4,5,   //数组的声明可以不写行号,int a[][5]或者int a[3][5], 若int a[2][5]分配的内存小则会报错 
           6,7,8,9,0,
           11,12,13,14,15;
    /*以矩阵形式输出二维数组,外层for循环表示行,内层表示列*/ 
    for(i=0;i<3;i++)   
    
        for(j=0;j<5;j++)
        
            printf("%3d",a[i][j]);
        
        printf("\\n");    //将数据按行分开,需要输出换行符 
    
    

 

技术图片

 

 

当从键盘中任意输入数据时,能够显示它的数据以二维矩阵的形式。

#include<stdio.h>
int main()
    int i,j,a[2][2]; 
    printf("please input elements:");
    for(i=0;i<2;i++)   
    
        for(j=0;j<2;j++)
        
        scanf("%d",&a[i][j]);  //输入数据时,按照空格方式,中间不要有逗号
        
    
        for(i=0;i<2;i++)   
       
           for(j=0;j<2;j++)
             
             printf("%4d",a[i][j]);
            
            printf("\\n");
       
        

 

技术图片

 

2.两个矩阵求和并显示结果

要使得两个矩阵求和有意义,必须有相同的行数与列数。分别用r1、r2表示两个矩阵的行数,c1、c2分别表示两个矩阵的列数。两个矩阵是否可以相加的条件:

 r1==r2 && c1=c2

如果上面的条件不满足,则不可以相加。

if( r1!=r2  ||  c1!=c2)

printf("addition cannot be done .");

exit 0;     //若要加入exit(0)当输入错误时终结程序,则需要加入库函数 <stdlib.h>

 

#include<stdio.h>
int main()
    int i,j,r1,r2,c1,c2,a[10][10],b[10][10],c[10][10];
    printf("please input r1 and c1 of a:");
    scanf("%d%d",&r1,&c1);
    printf("please input r2 and c2 of b:");
    scanf("%d%d",&r2,&c2);
    
    if((r1!=r2) || (c1!=c2))
    
        printf("addition cannot be done");
    
    
    /*从键盘输入a数组的数据*/ 
    printf("inpur elements of a: \\n");
    for(i=0;i<r1;i++)   
        for(j=0;j<c1;j++)
        scanf("%d",&a[i][j]);
/*从键盘输入b的数据*/ printf(
"inpur elements of b: \\n"); for(i=0;i<r2;i++) for(j=0;j<c2;j++) scanf("%d",&b[i][j]); /*对两个矩阵求和*/ for(i=0;i<r1;i++) for(j=0;j<c1;j++) c[i][j]=a[i][j]+b[i][j];
/*显示求和结果*/ printf(
"the sum c is : \\n"); for(i=0;i<r1;i++) for(j=0;j<c1;j++) printf("%3d",c[i][j]); printf("\\n");

 

 

技术图片

 

以上是关于二维数组相关问题的主要内容,如果未能解决你的问题,请参考以下文章

c语言对二维数组的某一行赋值 如u8 a[20][20]; 仅对a[10]这一行赋值

经典算法题-基础-二维数组中的查找

二维数组---矩阵相关问题

二维数组---矩阵相关问题

二维数组---矩阵相关问题

二维数组最大联通子数组和