实验七 二维数组
【目的与要求】
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个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。