乐趣区

关于c:在写矩阵转换时发现的一个for循环括号的问题

在写矩阵转换时发现的一个 for 循环的问题

最近在写 c 语言作业的一个矩阵转换的时候,程序运行没有问题,但输入总是存在问题。
起初与敌人探讨了一下,最初发现问题存在于 for 循环的括号问题。以此记录一下,不便学习。

以上是问题代码,输入后果如下

咱们来细分一下代码

#include <stdio.h>

int main(){
    int i,j,t;
    int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    for(i=0;i<3;i++)
    
    
        for(j=0;j<3;j++)
        
        
        printf("%d",a[i][j]);
        /* 输入原始矩阵 */

    printf("\n");

    

以下为该代码输入后果

为什么会呈现这样呢?在 c primer 外面讲述 for 循环的定义是这样的:

for(condition1;condition2;condition3) statement

也就是说执行主体的完结靠的是 statement 的完结,即一个语句的完结。天然,下面的代码它只思考了第二个 for 循环外面的 printf 语句,而没有执行转行命令。(\n)

在存在多个逻辑语句的状况下,for 循环外面须要用到大括号,即:{}

咱们扭转一下代码,试试看

    for(i=0;i<3;i++)
    
    
    
        for(j=0;j<3;j++)
        {printf("%d",a[i][j]);
        /* 输入原始矩阵 */
        printf("\n");
        }

后果如下:

很显著,咱们在第二个 for 循环外面加了大括号,换行指令立即在第二个 for 循环中执行了。

咱们再改一下,看一看。

    for(i=0;i<3;i++){for(j=0;j<3;j++)
        
        
        
        printf("%d",a[i][j]);
        /* 输入原始矩阵 */

    printf("\n");
}

输入后果如下:

很显著,在整体的 for 循环外面(第一个 for 循环),它先执行了第二个 for 循环外面的指令,在第二个 for 循环外面的指令实现了,实现了换行。

一个清晰明了的例子:

很显著,他是先遍历完一个 for 才输入 test 的,阐明 test 的输入语句和遍历输入 不在一个 for 下 的。

总之,咱们都要养成写一个工整代码的习惯,这不仅是为了不便他人查看,更是为了日后咱们了解本人的代码,比方我当初写代码的时候,根本在 for 循环都会加个括号,这样会不便我了解代码是在哪个模块运行的。同时,缩进也显得十分重要,对于你了解本人的代码来说。

感激:DynamicLab – The_sky

退出移动版