C++,输出一个空心三角形,这个程序哪里有问题?

求高手帮忙看一下,我的运行结果一直是一堆的问号。哪里有问题?急!!
#include<iostream.h>
int main()
{
int a,b;
char ss[100][100];
char c='*';
char d=' ';
int i,j;
cout<<"三角形的高度:";
cin>>a;
b=(a-1)*2+1;
for(i=0;i<a;i++)
{if(j=a-i||a+i)
ss[i][j]=c;
else
{if(i=a-1)for(j=0;j<b;j++)ss[i][j]=c;
else{ss[i][j]=d;}
}
}
for(j=0;j<b;j++)
for(i=0;i<a;i++)
cout<<ss[i][j]<<endl;
return 0;
}

第1个回答  2011-12-10
在你的代码的基础上做了小小改动,优化了下,你的思路基本正确,就是代码上的小小错误
比如:判断j与a-1和a+1的相等问题,应该写成j==a-1||j==a+1,你对比下我给你的,好好看看。。。希望可以帮到你!
#include<iostream.h>
int main()
{
int a,b;
char ss[100][100];
char c='*';
char d=' ';
int i,j;
cout<<"三角形的高度:";
cin>>a;
b=2*a-1; //此处给你修改了
for(i=0;i<a;i++)
for(j=0;j<b;j++) //优化后加的
{
if( j==a-i || j==a+i || i==a-1 ) //在上面优化后的基础上,将那三个判断写到一起就可以
ss[i][j]=c;
else{
ss[i][j]=d;
}
}
for(i=0;i<a;i++) //输出
{
for(j=0;j<b;j++)
{
cout<<ss[i][j];
}
cout<<endl; //换行
}
return 0;
}
第2个回答  2011-12-10
粗看了下,你的if 判断里都有问题
if(j=a-1||a+i) 这个应该是 if((j==a-1)||(j==a+1))

if(i=a-1) 应该是 if (i==a-1)

判断相等要用 == 双等号 一个等号只是赋值 j 和 i 的值会在里面改变|追问

恩,按照你说的做了一些修改,可是不知道为什么我输出的所有*都是在一竖行里面的,不是三角形状的。

追答

你在最后输出的时候,多输出回车换行符,在第二个for 结束后再输出换行的

第3个回答  2011-12-10
求解算法思路不是很流畅,给你改写一下,注意其中的注释:
#include<iostream.h>
int main()
{
int a,b;
char ss[100][100];
char c='*';
char d=' ';
int i,j;
for(i=0; i<100; i++)
for(j=0; j<100; j++)
ss[i][j]=' ';

cout<<"三角形的高度:";
cin>>a;
b=(a-1)*2+1;
ss[0][a-1]='*'; //顶行
for(i=1; i<a-1; i++){ //中间各行
ss[i][a-i-1]=c;
ss[i][a+i-1]=c;
}
for(i=0; i<b; i++) //底行
ss[a-1][i]=c;

for(i=0;i<a;i++){
for(j=0;j<b;j++)
cout<<ss[i][j];
cout <<endl;
}
return 0;
}本回答被提问者采纳

C++打印空心三角形
cout<<a;cout<<endl;} for (i=0;i<n*2-1;i++)cout<<a;cout<<endl;} } return 0;}

c++输出三角形
既然是C++,就用C++代码吧,可以用到面向对象的设计思维。我帮你写了个程序,没错误没警告,还可以重复输出的:#include "iostream"using namespace std;class Trigon{ public: Trigon(){}; ~Trigon(){}; PrintTrigon() { cout<<"请指定构成这个三角形的行数:"; cin>>num; for (int i = 0; i != num;...

c++让打印三角形星号图案,不知道程序哪块错了。。。
不知道要打印哪种三角形。请参考下面程序:int i,j,n; cin>>n; for ( i=0;i<n;i++ ) { for ( j=0;j<n-i-1;j++ ) cout<<" "; for ( j=0;j<i*2+1;j++ ) cout<<"*"; cout<<endl; } ...

c++ 输出倒三角形 代码错在哪里
将for语句中的i<n改为i<=n,因为i从1开始算起,到第n行时,要包括n才对,不然就会少一行。另外,i亦可以由0开始,而对for (int a=1;a<i;a++)改为for(int a=0;a

如何用 c++ 语言编程打印输出一个三角形?
以下是一个简单的C++程序,用于打印输出一个等腰三角形:```cpp#include using namespace std;int main() { int i, j, rows; cout cin >> rows; for (i = 1; i for (j = 1; j cout } for (j = 1; j cout } cout } return 0;}```...

c语言如何输出星号三角形***
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File 2、输入预处理命令和主函数,如下图所示:3、定义变量并确定行数,如下图所示:4、确定空格数量,如下图所示:5、确定每一行星号数量并换行,如下图所示:6、运行如下:

C++输出三角形图形
include<iostream> using namespace std;int main(){ int i,j,m=7;for(i=1;i<=7;i++){ m--;for(j=m;j>=0;j--)cout<<" ";j=i;while(j--){ cout<<char(i+'a'-1)<<" ";} cout<<endl;} return 0;}

c++输出三角形
1、打开sublimeText编辑器,如下图。2、编写一个静态的canvas容器,例子是300x300的容器,详细代码如下图。3、使用js获取到id为canvas的容器,然后把它定义为一块画布。4、绘制三角形例子代码:通过绘3个三角形的3个坐标点来绘制线获取canvas容器var canvas = document.getElementById('canvas')。5、...

求用c++输出一个三角形的程序
include<stdio.h> main(){ int i,j,H;printf("请输入三角形的高度:");scanf("%d",&H);for(i=0;i<H-1;i++){ for(j=H-i-1;j>0;j--)printf(" ");printf("*");for(j=2*i-1;j>0;j--)printf(" ");if(i)printf("*");printf("\\n");} for(H+=H;H>0;H--)...

c++输出空心三角形,求捉虫
numbers:\\n"); scanf("%d%d",&Num1,&Num2);\/\/Num1为总行数,Num2为空格数 for(i=1;i<=Num1;i++) { for(j=1;j<=Num1-i+Num2;j++)printf(" ");\/\/三角形之前的空格if(i==Num1){for(j=1;j<=2*i-1;j++)printf("%c",(j%2==1)?flag1:...

相似回答