普陀区兰溪路399号:C语言 数组中换行

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 22:12:22
//将一个二维数组行和列的元素互换,存到另一个二维数组中
#include"stdio.h"
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:"); //不要换行,为的是不在
array a:下一行输出一个空行
for (i=0;i<2;i++)
for (j=0;j<3;j++)
{
if(j%3==0) printf("\n"); //需要换行,但怎么是j%3==0,
j根本就没循环到3啊(j<3)!
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
printf("array b:");
for (i=0;i<3;i++)
for (j=0;j<2;j++)
{
if(j%2==0) printf("\n");
printf("%5d",b[i][j]);
}
printf("\n");
}

/*结果是
array a:
1 2 3
4 5 6
array b:
1 4
2 5
3 6
*/

问题就是那个~~
怎么是j%3==0,j根本就没循环到3啊(j<3)!
希望有心人帮忙解决!
楼下的ezly ,我知道这你说的这个模运算
我的意思也许你还不理解,抱歉我没有把问题讲清楚
我说的是
j的取值问题,
我需要它输出三个数据然后换行,
1 2 3
4 5 6
可是那个j它取2的时候就不能再往下取了,那怎么能保证j%3==0成立呢?
也许你以为我想问这里吧“//不要换行,为的是不在
array a:下一行输出一个空行”,其实我这里恰好是利用你说的
j=0时j%3=0 来实现不在array a:下一行输出一个空行这个目的!
问题在上,望大家帮我再分析一下,多谢!

谢谢hszhsh 的回答,你以另一种方法帮解决了
可是我还想深入一点,就是,我编写的也是可以运行成功的
结果都是一样的,就是不太理解“怎么是j%3==0,j根本就没循环到3啊(j<3)!”
再次希望热心人前来帮忙
真诚感谢

你这可这样改
for (i=0;i<2;i++)
{
for (j=0;j<3;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");//将换行放到这里
}
你现在的程序相当于这个
for (i=0;i<2;i++)
{
printf("\n");//将换行放到这里
for (j=0;j<3;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
}
因为j为0时j%3为0满足条件,输出一个换行

在C语言中求模运算里,当j=0时j%3=0
(呵呵,没想到吧……)

for (i=0;i<2;i++)
for (j=0;j<3;j++)
{
if(j%3==0) printf("\n");
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}

这段程序的意思就是在打ARRAY A的时候先打一个换行(0%3=0)然后再打数组中的元素,实际上3可以换成4,5或更大的数,只要比循环的次数大就行了。

for (j=0;j<2;j++)
{
if(j%2==0) printf("\n");
printf("%5d",b[i][j]);
}
也是同理

j==0的时候,循环,运算{}里面的if,换行
j==1的时候,循环,运算{}里面的if,不换行
j==2的时候,循环,不换行,注意,当j==2返回到j++的时候退出第二个for循环,i++然后j==0再换行!明白了没?