2 isohpiemarceau iSohpiemarceau 于 2017.09.13 23:05 提问

c语言套嵌循环问题,怎么也想不通问题所在

大家好!本人纯菜鸟一枚。刚开始自学c语言。
有个联系:生成一个乘法表,行列数相等。如4行4列,则行列均为1~4。要求每个单元格数值为行列的乘积。
我编写的程序如下:
#include
int main(void)
{
int count=0;
int i=1;
int j=1;
int product=0;

printf("\nEnter the numbers of row and column: ");
scanf("%d",&count);

for(;i<=count; i++)
{
    while(j<=count)
    {
        product=i*j++;
        printf("%d        ", product);
    }
    printf("\n");
}
return 0;

}

但运行之后,却只显示一行。怎么也想不通程序的逻辑错在哪里。求指教。
图片说明
(因为用的vc++,不能用%5d之类的来确保数字对齐,所以也就不管对齐的问题了)
非常感谢

2个回答

caozhy
caozhy   Ds   Rxr 2017.09.14 08:36
已采纳

for(;i<=count; i++)
{
j=1; //这里要重置下
...
}

cocos_yang
cocos_yang   2017.09.14 09:26

因为你的j在第一次内层循环中已经加到j=5了,以后for循环无论怎么循环也进入不了while循环了,while(j <= count)这个条件不满足。

cocos_yang
cocos_yang 回复iSohpiemarceau: 这个变量的生命周期是main函数结束,在for循环里面当然不会消失啊;
2 个月之前 回复
iSohpiemarceau
iSohpiemarceau 回复iSohpiemarceau: 哦,我想通了。因为变量只取当前值。此时j变量内存储的值已经是5了,不会消失,也不会被覆盖。对么?
2 个月之前 回复
iSohpiemarceau
iSohpiemarceau 但我还是有点没理解。我理解的套嵌循环不该是这样吗:外层为1时,内层从头到尾循环一次,外层到2时,内层再从头到尾循环一次……内层循环完了,下一次为什么就不循环了呢?这个理解问题在那里呢?
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片