发此贴只是谈谈自己的for的理解,不喜勿喷,有错欢迎指出,还请不吝赐教。
记得当初老师讲for循环是用一个菱形
讲的,不可否认,讲的很好,但我就是不懂,这到底是怎么实现的。我知道一行一个*号
怎么打出的.也就是
for(i=0;i<5;i++)
printf(“*\n”);
但对于这个一行多个 就不知道怎么打了,更别说每行*号还不一样多。没办法,是在不懂就只有问人了,问同学问网友,终于问道了能使我理解的回答了。他是这样讲的:(以菱形为列)
for(i=0;i<4;i++)
{
for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
既然不能理解,那就一步一步的看程序是怎样运行的,当i=0时,i<4成立,则执行下一步,也就是j=0 。2-i也就是2,j<2成立,执行下一步,输出一个空格;J自加是1,1也小于2,成立,执行下一步,输出一个空格;j继续自加为2,2小于等于2成立,执行下一步,输出一个空格;j继续自加为3,并不是小于等于2,不成立,所以此次循环执行完毕,程序向下执行。2*i=0,0小于等于0,成立,执行下一步,输出一个*号,k自加为1并不是小于等于0,此循环执行完毕,执行下一步,输出一个换行。程序回到i循环了,i自加为1,1是小于4的,所以程序向下执行……这样,就会把上面的三角形打出来。下面的也相同,结合在一起就是一个菱形了。
由此,我知道了对于这些图形,都是一个一个打印出来的,我一直以为是一行一行打出来的,呵呵,懂了之和,尝试做了几个一样的,比如 .
还有这个 ,
怎么样,是不是勾起了童年的痛苦回忆?
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%dX%d=%d\t",j,i,i*j);
printf("\n");
}
}其实代码就只怎么点,呵呵。
1. 点星文件
这题是网上的一题,弄懂了for循环之后,就尝试做这个了,照刚刚弄懂的思路,没一行*号是成线性规律增加的,应该能写出来, . 号也是呈线性规律增加的,也写的出来,于是写了一个
#include "stdio.h"
void main()
{
int i ,j,k;
for(i=1;i<=8;i++)
{
for(j=1;j<=i;j++)
printf("*");
for(k=2;k<=i;k++)
printf(".");
printf("\n");
}
}
但运行出来的结果却是 。后来想想, . 号是镶嵌在*号里的,那把打印 . 号的循环也镶嵌在打印 * 号的循环是不是就可以了呢?说干就干,就改写成如下形式
#include<stdio.h>
int main()
{
int i, j,k;
for(i=1;i<=8;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
for(k=2;k<=i;k++)
printf(".");
}
printf("\n");
}
}哈哈,果然成功了。
|
|