冷月孤心 发表于 2015-2-3 16:56:57

关于代码赋初值

本帖最后由 冷月孤心 于 2015-2-4 16:19 编辑

main()
{
      int a = 80;         
      int b = 24;      

      int i = 1 ;      
      int j = 1;
               

      for( i = 1; i <= b; i++)      
      {
                for( j = 1; j <= a; j++)      
                {
                        if(i==1||i==b || j==1 || j==a )      
                        {
                            printf("*");      
                        }
                                                else if(j==a)
                                          {
                                                    printf("\n");
                                          }
                        else      
                        {
                            printf(" ");
                        }
                                       
                }
                                       

      }
                getch();

}

循环体中赋初值一定需要写在括号里,申请空间的时候赋的初值由于在循环中变量值自增而变化了,就不能按照先前的赋值来计算。
这是一组结果视图:

再来一组:



sgw888 发表于 2015-2-4 08:36:45

for循环体的逻辑解释:
以下是for循环体示例:
for(i = 1;i <=b;i++)
{
   .....................
   .....................
}

我们看上面的单层for循环体,有下面的图示来表示会更清晰:

i=1;
:a // 此处是标号
if (i>b) goto :end   //条件符合,跳转到结束
...........
...........//循环执行的语句.
i=i+1;
goto :a //跳转到标号a执行
:end

上面的goto就是汇编里的jmp

明白上面的逻辑之后,再分析嵌套的for循环体就容易理解了.

Nisy 发表于 2015-2-3 21:14:28

从逻辑上去理解 for 第一步做什么第二步第三步第四步

Nisy 发表于 2015-2-3 21:14:34

从逻辑上去理解 for 第一步做什么第二步第三步第四步

冷月孤心 发表于 2015-2-3 22:46:41

Nisy 发表于 2015-2-3 21:14
从逻辑上去理解 for 第一步做什么第二步第三步第四步

谢谢指点,现在能理解它了。

theend 发表于 2015-2-3 23:56:34

本帖最后由 theend 于 2015-2-4 16:27 编辑

#include <stdio.h>

main()
{
      int a = 50;         //长,列数
      int b = 20;      //高,行数
      
      int i = 1 ;      //控制行数:i
      int j = 1;      //控制列数
      
      for( i = 1; i <= b; i++)      //行循环
      {
                for(j = 1; j <= a; j++)      //列循环
                {
                        if(i == 1 || i == b || j ==1 || j ==a)      //首行、末行, 首列,末列打印星号;
                        {
                              printf("*");      
                        }
                        else      //其它打空格
                        {
                              printf(" ");
                        }
                }
                //printf(" 第%d行", i);
                printf("\n");
      }
      getch();
}


我也来凑凑热闹(个人感觉我的标注比较容易理解for循环),哈哈

谢谢冷月牛牛的细致,又学到了~~

PS: 贴错代码了,哈哈, Fixed

页: [1]
查看完整版本: 关于代码赋初值