C语言,这道题我很疑惑,望高手进来看看,帮忙解答下!

对于这一题我真是郁闷极了?求高手指导!
你们看啦我的问题有如下几点,希望你们帮忙回答下,感激不尽!1,题目说是有两行三列,而你们看 后面的for语句即:for(j=0;j<2;j++) for(i=0;i<3;i++)最后的输出结果不是三行两列吗?2.前面两个for语句是控制输入的,后面两个for语句是控制输出的,但是我认为后面两个for语句如果我改成for(i=0;i<2;i++) for(j=0;j<3;j++)之后的话那么问题1,就应该没问题了,但是问题又来了,我这样改后我认为可以省略后面两个for语句了,我感觉改了后后面的for语句就多余了,直接我认为就是#include<stdio.h>
main()
{
int a[2][3],i,j;
printf(“Enter data by line :\n”);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[i][j]);
printf(“Output a 2-dimension array :\n”);
printf(“%4d”,a[i][j]);
printf(“\n”);
}我已经测低的凌乱了,麻烦众多高手帮忙解答下,感激不尽啊!

lz不用烦恼了,你原来的想法是正确的,
第一个问题:
"后面的for语句即:for(j=0;j<2;j++) for(i=0;i<3;i++)最后的输出结果不是三行两列吗"
 的确是三行两列,
把这里的i,j换一下位置就行了,
第二个问题:
如果你要完整的输出的话,就按如上方法改;
你现在改的那个方法,行,但不好看,只适合静态的初始化数据.追问

嗯 ,终于有一个和我思维一样的人了,感动啊,那么是不是最后的for语句我改成
for(i=0;i<2;i++) for(j=0;j<3;j++)就可以了呢?谢谢了

追答

是的,

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-12
void main()
{
int a[2][3],i,j;
printf("Enter data by line :\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("Output a 2-dimension array :\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++) {
printf("%4d\t",a[i][j]);
if(j==2)printf("\n");
}
getch();
}本回答被网友采纳
第2个回答  2012-08-12
不要瞎改了,首先原程序没有错,我要提醒的是,你不要总是固化的认为i就是控制行的,j就是控制列的,i,j只不过是两个循环变量,谁控制行谁控制列都可以,这要看你的循环是怎么嵌套的;
再说说你改了以后的那个,你如果这样改的话,也能实现,但是输入与输出就不直观了,最后运行的时候就是,每输入一个数,就输出一个数,输入与输出间隔了,而这个二维数组是要完整的输入,然后再完整输出的;所以,二维数组的输入与输出都输要两个for循环分别控制的;追问

嗯 好吧,你说的不要删掉第二个for语句我懂了,但是你说不要固化的理解i是控制行的,j是控制列的,但是最后输出的是printf(“%4d”,a[I][J]啊 ,不是按照规矩来吗?此时I不是控制行吗,j不是控制列吗?如果对应题目意思写成
printf(“%4d”,a[J][I]); 的时候我就会理解成J是控制行的,I是控制列的啊。

追答

我去,这个你统一一下不就行了吗,i在外层j在内层,你就用a[i][j],j在外层i在内层,你就用a[j][i]!不灵活,晕倒!!!

相似回答