cout<

zzhouxiaoyu 2008-11-21 03:11:29
#include<iostream>
using namespace std;
void main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
cout<<j<<'*'<<i<<'='<<j*i<<'\t';cout<<endl;
}
}

上面的程序中cout<<j<<'*'<<i<<'='<<j*i<<'\t';cout<<endl;
为什么换成cout<<j<<'*'<<i<<'='<<j*i<<'\t'<<endl;
结果是另一个样子呢?
...全文
322 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
laocai66 2011-02-22
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include "iostream"
using namespace std;
void main()
{
int i,j;
for(i=1;i <=9;i++)
{
for(j=1;j <=i;j++)
{
cout <<j <<'*' <<i <<'=' <<j*i <<'\t';
}
cout <<endl;
}

}

这样应该比较清晰
zzhouxiaoyu 2008-11-21
  • 打赏
  • 举报
回复
谢谢几位,我明白了
sagegz 2008-11-21
  • 打赏
  • 举报
回复
for循环体问题!
xianyuxiaoqiang 2008-11-21
  • 打赏
  • 举报
回复
注意代码风格。循环的时候即使循环体只有单个语句,最好也加上大括号。

第一,大括号不会增加任何代码,不会影响程序效率。

第二,程序可读性增强,整体美观大方。
霍大脚 2008-11-21
  • 打赏
  • 举报
回复
好好搞下基础,看看C++ primer plus(5TH) C++ primer(4TH) C++程序设计语言(特别版)
好好搞下作用域基础,看看块是怎么运作的
endlessdream 2008-11-21
  • 打赏
  • 举报
回复
for(j=1;j <=i;j++)
cout < <j < <'*' < <i < <'=' < <j*i < <'\t';cout < <endl;
的第二条语句cout<<endl;不属于for循环。只有退出for循环才执行这句。

for(j=1;j <=i;j++)
cout < <j < <'*' < <i < <'=' < <j*i < <'\t'< <endl;
每次都有执行<<endl

还有这个编码风格很不好。两条语句不要放在一行内,for循环体也最好用{}括起来。这样就不会有读代码上的困难了。
qiudou1987 2008-11-21
  • 打赏
  • 举报
回复
加个{}就一样了!
sffofn 2008-11-21
  • 打赏
  • 举报
回复


程序中cout <<j <<'*' <<i <<'=' <<j*i <<'\t';cout <<endl;
等价于:
for(j=1;j <=i;j++)
{
cout <<j <<'*' <<i <<'=' <<j*i <<'\t';
}
cout <<endl;

程序中的cout <<j <<'*' <<i <<'=' <<j*i <<'\t'<<endl;
等价于;
for(j=1;j <=i;j++)
{
cout <<j <<'*' <<i <<'=' <<j*i <<'\t';
cout <<endl;
}

这样当然结果不一样了
  • 打赏
  • 举报
回复
大哥哥,服了你。

for(j=1;j <=i;j++)
cout < <j < <'*' < <i < <'=' < <j*i < <'\t';
cout < <endl;


for(j=1;j <=i;j++)
cout < <j < <'*' < <i < <'=' < <j*i < <'\t'<<endl;
这能一样吗?第二种情况j+一次就endl一次,而第一种,在循环完了才endl.
qqwx_1986 2008-11-21
  • 打赏
  • 举报
回复

上面的程序中cout <<j <<'*' <<i <<'=' <<j*i <<'\t';cout <<endl;
<=>
for(j=1;j <=i;j++)
{
cout <<j <<'*' <<i <<'=' <<j*i <<'\t';
}
cout < <endl;

为什么换成cout <<j <<'*' <<i <<'=' <<j*i <<'\t'<<endl;
<=>
for(j=1;j <=i;j++)
{
cout <<j <<'*' <<i <<'=' <<j*i <<'\t'<<endl;
}
coverallwangp 2008-11-21
  • 打赏
  • 举报
回复
肯定要不一样了
for循环你没有加{},所以for的作用域就是后边的一句话。
for(j=1;j <=i;j++)
cout < <j < <'*' < <i < <'=' < <j*i < <'\t';cout < <endl;
第一种是第二个循环结束后,才换行。
cout < <j < <'*' < <i < <'=' < <j*i < <'\t' < <endl;
第二种是第二个循环j++一次,就输出一个换行。
Donald_Duck 2008-11-21
  • 打赏
  • 举报
回复
同意楼上的,你要是把第二个for循环的大括号打上就一样了
就呆在云上 2008-11-21
  • 打赏
  • 举报
回复
		for(j=1;j <=i;j++) 
cout <<j <<'*' <<i <<'=' <<j*i <<'\t';cout <<endl;


for后面有效区是一个语句,语句可以是一个;结束的语句,也可以是一个{}
你这里后面的
cout <<endl;

不属于for的范围了
自然输出就不同了撒

65,211

社区成员

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

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