注册 登录
编程论坛 C++教室

一个新人寻求帮助

发布于 2008-05-29 19:21, 485 次点击
为了实现输出
*
**
***
****
*****

写了如下代码
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
    int i,j,k;
    for (i=0;i<=5;i++)
    {
        j=0,j++;
        for (k=0;k<=j;k++)
        {
            cout<<"*";
        }
        
        cout<<"\n";
    }
    getchar();
}
但是结果变成
**
**
**
**
**
哪个高手能够帮我修改下并且可以给我说明下原因
谢谢了
我是c++新人,在论坛也是新人,这是第一帖,希望大家支持
谢谢
6 回复
#2
p1s2008-05-29 19:47
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
        int i,j,k;
        for (i=0;i<=5;i++)
        {
                j=0,j++;//每次做外循环的时候j都初始为0,然后++变为1
                for (k=0;k<=j;k++)//这里j恒等于1,是不是相当于做两次循环输出两个*啦?
                {
                        cout<<"*";
                }
               
                cout<<"\n";
        }
        getchar();
}
正解是,完全去掉变量j,k<=j改为k<i。
#3
p1s2008-05-29 19:49
还有外循环的次数不对,不是i<=5,应该是i<5。
#4
2008-05-30 09:13
我也是初学者。不过你可以用断点来查看变量的变化情况。对自己学习有帮助的
#5
漫游者李李西2008-05-30 14:33
用几何法分析可能算法更简单。
#6
zzy8402082008-05-30 23:12
我试试!
//---------------------------------------------------------------------
/* 解答:为了实现输出
        *
        **
        ***
        ****
        *****
                                            ---zzy
                                            2008.5.30
*/
//---------------------------------------------------------------------
#include <iostream>

int main()
{
    for(int i=0;i<5;++i)
    {
        for(int j=0;j<(i+1);++j)
            std::cout<<"*";
        std::cout<<std::endl;
    }

    return 0;
}
#7
wjcloudy2008-05-31 10:17
用跟踪调试,很容易就能找到原因
1