在写矩阵转换时发现的一个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