| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 452 人关注过本帖
标题:关于循环语句的使用,求助啊。。
只看楼主 加入收藏
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:7 
关于循环语句的使用,求助啊。。
#include <stdio.h>
main()
{int x,y,i,j;
 printf ("Please input:\n");
 scanf ("%d,%d",&x,&y);
for (i=1;i<=y;i++)
{
    if (i==1)
    {
       for (j=1;j<=x;j++) printf ("*");
       printf ("\n");
    }
    if (i==y)
    {
       for (j=1;j<=x;j++) printf ("*");
       printf ("\n");
    }
    while(i>=2&&i<=y-1)
    {
     printf ("*");
     for (j=2;j>=1&&j<=x-1;j++) printf (" ");
     printf ("*\n");
     i++;
    }   
}
}
大家帮忙看下这断程序,我是想输入两个输x,y,然后打印出x*y 面积的*形方框,为什么我最后一行打印不出来呢?
好像有见到过类似的帖子,找了半天没找到。我的是VC6.0
搜索更多相关主题的帖子: include 
2012-08-22 21:51
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
#include <stdio.h>
main()
{int x,y,i,j;
 printf ("Please input:\n");
 scanf ("%d,%d",&x,&y);
for (i=1;i<=y;i++)
{
    if (i==1)
    { for (j=1;j<=x;j++) printf ("*");
    printf ("\n");}
    while(i>=2&&i<=y-1)
    {
     printf ("*");
     for (j=2;j>=1&&j<=x-1;j++) printf (" ");
     printf ("*\n");
     i++;
    }
    if (i==y)
    {for (j=1;j<=x;j++) printf ("*");
     printf ("\n");
    }
}
}
这个是正解。。。刚才自己又研究了一下。但是有点不明白,为什么换了一下位置就结果不一样。。。求解答。。
2012-08-22 23:42
幽醉
Rank: 2
等 级:论坛游民
帖 子:68
专家分:61
注 册:2012-7-30
收藏
得分:0 
为什么我分析下来两个程序没有区别啊,而且都可以输出正确结果- -。你在控制台输入两个数的时候有没有注意原样输入啊?而且那个逗号必须是英文逗号哦。
2012-08-24 10:35
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
收藏
得分:5 
程序代码:
#include <stdio.h>
int main()
{
    int x,y,i,j;
    printf ("Please input:\n");
    scanf ("%d,%d",&x,&y);
    for (i=1;i<=y+1;i++)//y改为y+1
    {
        if (i==1)
        {
        for (j=1;j<=x;j++)
            printf ("*");
        printf ("\n");
        }
        if (i==y+1)//y改为y+1
        {
            for (j=1;j<=x;j++) printf ("*");
            printf ("\n");
        }
        while(i>=2&&i<=y-1)
        {
            printf ("*");
            for (j=2;j>=1&&j<=x-1;j++)
                printf (" ");
            printf ("*\n");
            i++;//这里i++会加过头,到for循环的时候i就为y+1了,所以把上面两个y改成y+1即可
        } 
    }
}
2012-08-24 10:57
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
收藏
得分:0 
这么解释:第一个程序中,while循环结束的时候i的值为y,接着i又加1跳回for循环,不满足for循环条件,退出。
在第二个程序里,while循环结束的时候i的值为y,满足if条件,执行,故能打出最后一行。
2012-08-24 11:04
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 5楼 xlj3105098
哦,好像是这么回事。。
2012-08-24 12:53
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
回复 3楼 幽醉
你用的啥编译器?我去试试?。。
2012-08-24 12:54
幽醉
Rank: 2
等 级:论坛游民
帖 子:68
专家分:61
注 册:2012-7-30
收藏
得分:5 
好吧 我错了 我看错了 - 3 -|||  应该是这两个循环语句位置的不同,导致了i值的区别:第一个好像是在i=y的基础上又加了1,不满足循环条件后跳出来了,所以最后一行没有打出来,换过来之后就没这个问题了。应该是这样吧,不知道有没有解释错。
2012-08-24 14:08
快速回复:关于循环语句的使用,求助啊。。
数据加载中...
 
   



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

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