标签:
#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左右 剩下的不明白也没关系 常练就好
标签:
原文地址:http://www.cnblogs.com/dire/p/4988758.html