二维数组 技巧

实验七 二维数组

【目的与要求】

1.掌握二维数组的定义、赋值和输入输出的方法;

2.掌握字符数组的使用;

3.掌握与数组有关的算法(例如排序算法)。

【上机内容】

【一般示例】

【例1】有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

#define M 3

#define N 4

main( )

{int max,i,j,r,c;

static int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};

max=a[0][0];

for(i=0;i<M;i++)

for(j=0;j<N;i++)

if ( a[i][j]>max)

{max= a[i][j];

r=i;

c=j;

}

printf(“max=%d , row =%d , colum=%d \n”,max , r, c);

}

【例2】打印以下图案:

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

main()

{char a[5]={' * ' , ' * ' , ' * ' , ' * ' , ' * '};

int i,j,k;

char space=' ';

for(i=0;i<5;i++) /*输出5行*/

{printf("\n"); /* 输出每行前先换行* /

printf(" "); /* 每行前面留5个空格 */

for (j=1;j<=i;j++)

printf("%c",space); /* 每行再留1个空格*/

for ( k=0;k<5;k++)

printf("%c",a[k]); /*每行输入5个*号*/

}

}

【例3】求矩阵下三角形元素之和。

#define N 6

main()

{int i,j,sum=0;

int a[N][N]={0};

printf("input 5×5 data:\n");

for(i=1;i<N;i++)

{ printf("Input the %d line data:\n",i);

for(j=1;j<N;j++)

scanf("%d",&a[i][j]);

}

for(i=1;i<N;i++)

{for(j=1;j<N;j++)

printf("%5d",a[i][j]);

printf("\n");

}

for(i=1;i<N;i++)

for(j=1;j<=i;j++)

sum=sum+a[i][j];

printf("sum=%d\n",sum);

}

【作业】

1. 求一个3×3矩阵对角线元素之和。

2. 打印出以下的杨辉三角形(要求打印出10行)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

…… …… ……

3. 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

posted @ 2011-07-02 14:16  月痕  阅读(267)  评论(3编辑  收藏  举报