| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 837 人关注过本帖
标题:请教for语句与while语句的有关问题!
只看楼主 加入收藏
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请教for语句与while语句的有关问题!
*号图形的输出问题:   

#include<stdio.h>

main()
{
   int a, b, c;
   
   scanf("%d", &a);                        假设a=4, 输出的图形为: ****
                                                                  ****
   for(b=a; b!=0; b--)                                            ****
   {                                                              ****  
       for(c=a; c!=0; c--)
       {  
          printf("*");
       }
      printf("\n");
   }
   getch();
}

这是用for语句输出;
换成while语句输出却得到不同的结果;

#include<stdio.h>

main()
{
   int a, b, c;

   scanf("%d",&a);                         假设a=4;输出的图形为: ****
   c=b=a;                                                        ----
                                                                 ----
   while(b!=0)                                                   ----
   {                                                          (横线表示3个空行)  
      while(c!=0)
      {
          printf("*");
          c--;
      }
      printf("\n");
      b--;
   }
   getch();
}

从输出的结果看,外循环和内循环好象没关系;不知道问题出在哪里,望高手指点. 谢谢.
搜索更多相关主题的帖子: 语句 
2010-03-12 02:05
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
   while(b!=0)  
   {  c=a;  
      while(c!=0)
      {
          printf("*");
          c--;
      }
      printf("\n");
      b--;
   }

★★★★★为人民服务★★★★★
2010-03-12 07:09
独孤求败1989
Rank: 2
等 级:论坛游民
帖 子:41
专家分:36
注 册:2009-11-8
收藏
得分:1 
我看到了你的帖子 第一个for循环语句我可以读懂 第二个while循环 我就有点晕了 输出的结果怎么会是三个空行!!
2010-03-12 10:24
rib
Rank: 4
等 级:业余侠客
帖 子:95
专家分:252
注 册:2009-3-30
收藏
得分:4 
程序第一次内循环完之后C=0然后跳出在执行外循环 ,第2次C=0内循环条件不符,所以第2行执行\n.....
所以出现了3个空行

2010-03-12 10:37
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:6 
要学会调程序呀,这应该是基础,要增强自己的逻辑分析力
囧分析一下:
第一行打印了 ****, 说明没有问题,进入了内循环, 到c等于0后内循环退出,再执行下面的代码;
第二行是空行,没有打印 ****,为什么,因为没有执行printf("*");也就是说没有进入内循环,看看进入的条件,c!=0,说明此时的c是等于0的(第一次循环的时候被 减为0了),要想进入且只循环a次,则要给它重新赋值,所以看2楼。。。。

多看,多练就好了,不要急
2010-03-12 10:40
树上月
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:114
专家分:154
注 册:2010-1-6
收藏
得分:4 
#include<stdio.h>

main()
{
   int a, b, c;

   scanf("%d",&a);                        
   c=b=a;                                                                                                                        
   while(b!=0)                                                   
   {                                                            
      while(c!=0)
      {
          printf("*");
          c--;             (此处C--,C已经变为0了,所以以下的循环while(c!=0)不成立。故会输出空格)
      }
      printf("\n");
      c=a;                 (加这个就行了)
      b--;
   }
   getch();
}




每一个不曾起舞的日子,都是对未来的一种辜负......
2010-03-12 12:22
独孤求败1989
Rank: 2
等 级:论坛游民
帖 子:41
专家分:36
注 册:2009-11-8
收藏
得分:0 
呵呵 我懂了 谢谢大家 受我一拜
2010-03-12 13:14
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
收藏
得分:0 
非常感谢大家的指点!!
2010-03-12 15:20
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
收藏
得分:0 
分数有限,分配不均,还望各位见谅!!
2010-03-12 15:27
vs303791832
Rank: 2
来 自:地球
等 级:论坛游民
帖 子:87
专家分:12
注 册:2010-6-23
收藏
得分:0 
12121

小白无敌,哈哈.......我成功了
2010-08-09 13:14
快速回复:请教for语句与while语句的有关问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032947 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved