| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1053 人关注过本帖
标题:用FOR语句绘制星号,在语句中多出了一个输入命令,怎么解决?
只看楼主 加入收藏
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
 问题点数:0 回复次数:6 
用FOR语句绘制星号,在语句中多出了一个输入命令,怎么解决?
大家好,这一次是关于用for语句绘制*号的问题,请各位前辈指点!
题目如下:用户连续输入5个数字(1-30之间),要求绘制出没有间隔的*号图形
例如,输入5 4 3 2 1
程序要显示:
*****
****
***
**
*

一下是我的语句:
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int a ;
    int x;
    int y;   
   
    cout << "Enter 5 nums(1-30):";
    cin >> a;
   
    for (  x = 1; x <= 5; x++ )    //循环4次,因为上一句语句已经输入了一次 ?
    {
        for ( y = 1; y <= a; y++ )
        {
            cout <<'*';
            
        }
        
        cout << endl;
        cin >> a;    //这一句是核心,使得程序可以连续读入数据, 但是却循环5次后必须在属于一个数才能退出程序?
    }   
    system("pause");
    return 0;
}

这里程序效果运行成功,但出现了一个问题,就是当图形显示完之后,必须在输入一个“a”才能结束程序,我想显示完图形后直接结束程序,应该怎么改良呢?
感觉好像陷入了一个逻辑错误中....
搜索更多相关主题的帖子: 星号 语句 FOR 命令 绘制 
2010-10-09 13:49
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:0 
把for循环外面的cin和里面的cin,变为一个 放到两个for之间
程序代码:
for (  x = 1; x <= 5; x++ )    //循环4次,因为上一句语句已经输入了一次 ? 
    {
        cin>>a;//不用外面再放一个
        for ( y = 1; y <= a; y++ )
        {
            cout <<'*';
            
        }
        
        cout << endl;
    } 


  • 满眼生机转化钧;天工人巧日争新。
2010-10-09 14:29
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
以下是引用ciweitou163在2010-10-9 14:29:58的发言:

把for循环外面的cin和里面的cin,变为一个 放到两个for之间
 
for (  x = 1; x <= 5; x++ )    //循环4次,因为上一句语句已经输入了一次 ?  
    {
        cin>>a;//不用外面再放一个
        for ( y = 1; y <= a; y++ )
        {
            cout <<'*';
            
        }
         
        cout << endl;
    }
好像不行啊,将语句改成这个,我输入 5 4 3 2 1,就会显示:
*****
***
*
只显示奇数列了!
2010-10-09 15:17
st_win
Rank: 2
等 级:论坛游民
帖 子:48
专家分:35
注 册:2010-9-19
收藏
得分:0 
以下是引用terry64no在2010-10-9 15:17:11的发言:

好像不行啊,将语句改成这个,我输入 5 4 3 2 1,就会显示:
*****
***
*
只显示奇数列了!
那是,你没有把第一个for循环上面的cin>>a;去掉造成的
2010-10-09 15:35
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
以下是引用st_win在2010-10-9 15:35:05的发言:

那是,你没有把第一个for循环上面的cin>>a;去掉造成的
已经去掉了...
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int a ;
    int x;
    int y;   
   
    cout << "Enter 5 nums(1-30):";
    //cin >> a;
   
    for (  x = 1; x <= 5; x++ )    //循环4次,因为上一句语句已经输入了一次 ?
    {
        cin >> a;
        for ( y = 1; y <= a; y++ )
        {
            cout <<'*';
            
        }
        
        cout << endl;
        cin >> a;    //这一句是核心,使得程序可以连续读入数据, 但是却循环5次后必须在属于一个数才能退出程序?
    }   
    system("pause");
    return 0;
}

就是只显示奇数列
......
2010-10-09 17:47
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
哦,知道了,第二个循环里面的也要删除...看错了...
2010-10-09 17:50
preety110
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-8-30
收藏
得分:0 
#include<stdio.h>
#include<conio.h>
void main()
{
     int i,j;
    for (i=0; i<6; i++)
    {
        for (j=10;j>i ;j-- )
        {
            printf("1");
        }
        for (j=0; j<=i; j++) /*这里的循环是什么样子的,搞不懂*/
        {
            printf("*");
        }
        printf("\n");
    }
    getch();
}
2018-03-14 15:38
快速回复:用FOR语句绘制星号,在语句中多出了一个输入命令,怎么解决?
数据加载中...
 
   



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

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