我觉得这个程序有点问题

xiaoyaoguoke 2004-08-11 08:00:06
C++程序设计教程的习题。
输出一个由#和空格组成的倒梯形。
我的程序如下:

#include <iostream.h>
#include <conio.h>

void main()
{
int i,j;

for(i=1;i<9;i++)
{
for(j=1;j<18;j++)
{
if(j<i||j>(35-i))
cout <<" ";
else
cout <<"# ";
}
cout <<"\n";
}
cout <<endl;
getche();
}
我为了看看别的结果,把那个if(j<i||j>(35-i))换成了if(j<i),其余照旧。
结果两个程序的结果一样。我就搞不明白了。怀疑是编辑器的问题。我的编辑环境是Win2000个人版下VC6。
请指教!不胜感激。
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
adoqq 2004-08-11
  • 打赏
  • 举报
回复
你把cout<<" ";改成cout<<"?";看看就知道了
Kusk 2004-08-11
  • 打赏
  • 举报
回复
结果不一样,加了之后梯形结束之后右边有空格输出补足,没加则没有。你重定向输出到文件就明白了,文件的大小和内容应该不同的。
xiaoyaoguoke 2004-08-11
  • 打赏
  • 举报
回复
修改了一下源程序。如下:

#include <iostream.h>
#include <conio.h>

void main()
{
int i,j;

for(i=1;i<9;i++)
{
for(j=1;j<35;j++)
{
if(j<i||j>(35-i))
cout <<" ";
else if((j-i)%2==0)
cout <<"#";
else
cout <<" ";
}
cout <<"\n";
}
cout <<endl;
getche();
}

为什么和只有条件if(j<i)时的结果一样。
xiaoyaoguoke 2004-08-11
  • 打赏
  • 举报
回复
拷过来改的,有点问题。
我的意思是,既然是倒梯形,那么和(j<i)条件应该有个对称的条件吧?
为什么没有后面的条件也可以实现所要的结果?
leasun 2004-08-11
  • 打赏
  • 举报
回复
faint
adoqq 2004-08-11
  • 打赏
  • 举报
回复
就是一样的阿,在你的代码里就不可能出现j>(35-i)的情况,j最大18,i最大9,35-i最小也有26,当然不会出现j>(35-i)了,你要看效果,把18改大点就行了
Kusk 2004-08-11
  • 打赏
  • 举报
回复
j > (35 - i) 等价于 i + j > 35,根据你的循环终值,i, j最大也就8,17,至多是8+17=25,楼主想来是手误吧~:)
Kusk 2004-08-11
  • 打赏
  • 举报
回复
j永远不可能大于35-i,所以j>(35-i)对或逻辑不起作用,有没有都一样。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧