二维数组-代码练习
#include<stdio.h> /* 本程序功能: 1.通过键盘为二位数组元素赋值,显示二维数组 2.求出二维数组中最大元素和最小元素的值和对应的数组下标 3.把二位数组转换为另一个二位数组并显示 */ int main () { int a[2][3],b[3][2]; //定义两个数组 int max,min;//最大值==最小值 int h,l,i,j;//控制循环的变量 int m,z; //通过键盘为数组元素赋值 for(i=0;i<2;i++)// 0 1 两次循环 { for(j=0;j<3;j++) //0 1 2 三次循环 { printf("a[%d][%d]=",i,j); // scanf("%d",&a[i][j]); } } printf("输出二维数组:\n"); //显示刚才用键盘给二位数组的赋的值 for(i=0;i<2;i++)//外层循环 0 1 控制行 { for(j=0;j<3;j++)//内层循环 0 1 2 控制列 { printf("%d \t",a[i][j]); } printf("\n"); } //求出数组中最大元素和最小元素的下标 max=a[0][0]; min=a[0][0]; m=0; z=0; h=0; l=0;//如果当前max为最大值就不会进入到if语句中 需要事先记录好它的下标 for(i=0;i<2;i++) { for(j=0;j<3;j++) { if(max<a[i][j]) //将a[0][0]依次和a数组中元素进行比较 最大值放在max中 { max=a[i][j]; h=i; l=j; } if (min>a[i][j]) //这里的if 不能和前面的if组成else if 因为那样判断了max就会漏掉min 组成了级联的if else语句 就只能执行其中一条if中的语句 { min=a[i][j]; m=i; z=j; } } } printf("数组中a[%d][%d]最大:%d\n数组中a[%d][%d]最小:%d\n",h,l,max,m,z,min); //对数组a进行转换 结果存放在数组b中 for(i=0;i<2;i++) { for(j=0;j<3;j++) { b[j][i]=a[i][j]; } } for(i=0;i<3;i++) { for(j=0;j<2;j++) { printf("%d\t",b[i][j]); } printf("\n"); } return 0; }
总结:程序中牵扯到数组的程序一般都跟循环有很大的关系 因为要对数组进行操作的话 一般是用循环的方式访问每个数组的元素 练的多了 就习惯了 就感觉不复杂了 这道题目的难点在于 数组之间的倒置 我明白了%60左右 剩下的不明白也没关系 常练就好了!
浙公网安备 33010602011771号