注册 登录
编程论坛 C语言论坛

4*5矩阵,for嵌套

gaj000 发布于 2020-12-17 15:53, 1475 次点击
输出4*5的矩阵

#include <stdio.h>
 
int main()
{
    int i,j,n=0;
    for( i = 1;i <= 4; i++ )
        for( j = 1; j <= 5; j++,n++ )  //用n来累计输出数据的个数
        {
            if(n % 5 == 0)               //控制输出5个数据后换行
                printf("\n");
            printf("%d\t",i*j);
        }
        printf("\n");
    return 0;
}


问:当j=5,n=4
           j=6,   n=5   不应该是跳出内部循环,为什么还会执行if,输出换行
我是哪里理解有问题?
4 回复
#2
rjsp2020-12-17 16:15
听不懂你哪里不懂,你可以这样问:
    这段程序输出是……
    但我认为输出应该的是……
    因为……


j=6,   n=5   不应该是跳出内部循环,为什么还会执行if,输出换行
是跳出循环了呀,但第二次还会执行内部循环

程序代码:
#include <stdio.h>

int main( void )
{
    for( size_t r=0; r!=4; ++r )
        for( size_t c=0; c!=5; ++c )
            printf( "%zu%c", (r+1)*(c+1), "\t\n"[c+1==5] );
}
#3
do8do8do82020-12-17 19:29
因为 j=6 时 是跳出内循环for的 ,而此时 n=5
第一个for循环 i=1
执行第二次循环 i=2
进入第二次内循环的第一次 j=1,n=5
满足 n%5==0 输出 换行符号

所以说,这个换行符 是上一次内循环留下来的给这一次输出
#4
gaj0002020-12-17 20:14
回复 2楼 rjsp
好的,下次注意提问方式,谢谢了😜
#5
gaj0002020-12-17 20:17
回复 3楼 do8do8do8
看到你说的第二次输入…,秒懂了。谢谢了(^~^)
1