一个新人寻求帮助
为了实现输出*
**
***
****
*****
写了如下代码
#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++新人,在论坛也是新人,这是第一帖,希望大家支持
谢谢
#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。 还有外循环的次数不对,不是i<=5,应该是i<5。 我也是初学者。不过你可以用断点来查看变量的变化情况。对自己学习有帮助的 用几何法分析可能算法更简单。
我试试!
//---------------------------------------------------------------------/* 解答:为了实现输出
*
**
***
****
*****
---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;
} 用跟踪调试,很容易就能找到原因
页:
[1]
