您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
028第六章 数组06 c语言二维数组的一些题目
发布时间:2021-04-24 17:32:26编辑:雪饮阅读()
NO.1 将一个二维数组行和列元素互换,存到另一个二维数组中。
这个题目,在交换的步骤稍微考研下算法的空间想象能力,只能说是有点小挑战。其它都没有什么了。那么具体的实现如:
#include <stdio.h>
void main()
{
int a[2][3] = {{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a: \n");
//循环外2内3数组的外2
for (i=0;i<=1;i++)
{
//循环外2内3数组的内3
for (j=0;j<=2;j++)
{
//输出方式为“%5d”表示按5位的固定位宽输出整型数值。如果不足5位则在前面补空格;超过5位,则按实际位数输出
printf("%5d",a[i][j]);
//颠倒填充b数组,结合上面的图查看这里的 b[j][i]每次的索引,对应的值就能理解
b[j][i] = a[i][j];
}
printf("\n");
}
//输出b数组,先输出外3,再输出内2
printf("array b:\n");
for (i=0;i<=2;i++)
{
for(j=0;j<=1;j++){
printf("%5d",b[i][j]);
}
printf("\n");
}
}
D:\cproject>m.exe
array a:
1 2 3
4 5 6
array b:
1 4
2 5
3 6
有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
这个题目比起上面那个题目就简单的多了,只需要两层循环然后每次比较到最大的值不断覆盖之前的最大值,并将每次最大值对应的行号和列号覆盖之前的行号和列号即可。
#include <stdio.h>
void 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);
}
D:\cproject>gcc main.c -o m
D:\cproject>m.exe
max=10,row=2,colum=1
从键盘上输入9个整数,(对照九宫格的形式,输入三行,每行输入三个数) 保存在二维数组中,按数组原来位置输出第一行和第一列的所有元素。
这个题目只是比第二个题目稍微难一点点,比起第一个题目还是太简单了。
分析:需要达成的效果就是绿色字体所显示的
则实现如:
#include <stdio.h>
void 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++)
{
//理解题目的意思就是说必须行或者列都是1(自然数的1,不是索引1)才输出
if (i==1 || j==1)
{
/*
%-6d
输出字符串占6列,若字符串本身长度大于6,则将数字全部输出,若数字本身长度小于6,则右补空格
*/
printf("%-6d",a[i][j]);
}
else{
printf("%-6c",' ');
}
}
printf("\n");
}
}
D:\cproject>gcc main.c -o m
D:\cproject>m.exe
a[0][0]=1
a[0][1]=2
a[0][2]=3
a[1][0]=4
a[1][1]=5
a[1][2]=6
a[2][0]=7
a[2][1]=8
a[2][2]=9
2
4 5 6
8
关键字词:c语言,二维数组,题目