数组学习总结

1.二位数组的定义

类型名  数组名【行长度】【列长度】

int a[3][2]

定义一个二维数组,3行2列,6个元素

行下标的取值范围是【0,行长度-1】

列下标的取值范围是【0,列长度-1】   

注意:下标一定不能越界。

2.二维数组的赋初值

(1)分行赋初值

int a[3][3]={{1,2,3},{1,2,3}{1,2,3}};

(2)顺序赋初值

int a[3][3]={1,2,3,1,2,3,1,2,3}

数组a:1  2  3

             1  2  3

             1  2  3

3.字符数组

如果数组中的每一个元素都是一个字符,这样的数组称为字符数组。

1.字符数组的赋值方法

1).用字符常量逐个初始化

用赋值语句逐个元素赋值

用scanf读入整个数组

用scanf逐个元素读入

用cin输入整个数组

用cin逐个元素输入

用gets读入整个数组

用getchar逐个读入

注意:

1.用gets,读入整个数组可以读入空格,用其他方式读入数组则空格作为间隔符,不作为文字的内容

2.一个字符数组,只能存一个字母。

 

字符数组的输出方法

用cout输出整个数组

用cout逐个元素输出

用printf输出整个数组

用printf逐个元素输出

用puts输出整个数组

用putchar逐个元素输出题目练习

 

题目练习:

7-1 矩阵运算 (20 分)
 

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
 
结尾无空行

输出样例:

35
 
结尾无空行
#include <stdio.h>
int main(){
    int m=0,n=0,i=0,j=0;
    scanf("%d",&n);
    int a[n][n];
    for(i=0;i<n;i++)

  {
              for(j=0;j<n;j++)

            {
                   scanf("%d",&a[i][j]);
                   if(i!=n-1&&j!=n-1&&j!=n-1-i)    //最后一行、最后一列、副对角线的角标关系

                         { 
                               m=m+a[i][j];

                           }
            }
    
    }
    printf("%d",m);
    return 0;
}

  

 
7-24 求二维数组周边元素的累加和 (10 分)
 

求一个二维数组周边元素的累加和。 输入一个二维数组的行数m(m<10),列数n(n<10),二维数组的各元素值。输出周边元素之和。

输入格式:

输入的第一行为矩阵的行数和列数,从第二行开始,为矩阵元素的输入。

输出格式:

输出周边元素之和。

输入样例:

在这里给出一组输入。例如:
3 4
1 2 3 4
5 6 7 8
1 2 3 4
 

输出样例:

在这里给出相应的输出。例如:
33
 
结尾无空行
#include <stdio.h>
int main(int argc, char *argv[])
{
    int m,n,a[12][12],s=0,x;
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&x);
            if(i==1||i==n||j==1||j==m) s+=x;
        }
    }
    printf("%d",s);
    return 0;
}

 

posted @ 2021-11-03 20:57  ·廾匸  阅读(260)  评论(0)    收藏  举报