关于代码赋初值
本帖最后由 冷月孤心 于 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();
}
循环体中赋初值一定需要写在括号里,申请空间的时候赋的初值由于在循环中变量值自增而变化了,就不能按照先前的赋值来计算。
这是一组结果视图:
再来一组:
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循环体就容易理解了.
从逻辑上去理解 for 第一步做什么第二步第三步第四步 从逻辑上去理解 for 第一步做什么第二步第三步第四步 Nisy 发表于 2015-2-3 21:14
从逻辑上去理解 for 第一步做什么第二步第三步第四步
谢谢指点,现在能理解它了。
本帖最后由 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]