A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈昭燊 中级黑马   /  2015-10-16 13:25  /  1473 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

发此贴只是谈谈自己的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");
}
}哈哈,果然成功了。

9 个回复

倒序浏览
辛苦了。。。。。。。。。
回复 使用道具 举报
liyang783 发表于 2015-10-16 14:47
辛苦了。。。。。。。。。

分享一下
回复 使用道具 举报
分析的很好,支持!
回复 使用道具 举报
受教了,感谢
回复 使用道具 举报
分析的很好   谢了
回复 使用道具 举报
分析的不错,很透彻,加油
回复 使用道具 举报
挺好,赞一个
回复 使用道具 举报
分析很详细
回复 使用道具 举报
很强大,支持一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马