请假一个简单for loop的语法问题。 谢谢。。。非常感谢。

smrt_tony 2013-07-11 07:02:33
#####*
####***
###*****
##*******
#*********
##*******
###*****
####***
#####*

这么个图案,我现在只打印那几行#。

int num = 9;
for (int i = 1; i <= num; i++)
{
for (int j=1;j<=(num+1)/2;j++)
{
Console.Write("#");
}
Console.Write("\n");
}
Console.ReadKey();

我的问题不是如何打印这个菱形,我是想明白for loop的语法,其中第二个loop,这么写完之后#字每行都打印5个,不往下减少。我理解j++之后变成了2,3,4...于是我就手动把j=2,3,4,这样一弄每次打印的#就少一个. 我理解j++也是响应的把j变成了2,3,4可是为嘛它的#就不往下减少呢?

另外2个问题
1: j++的作用在这里是做什么?我能理解没有j++就会变成无限循环,可是在这里有点不明白它的作用了,问题有点低级。。。

2:每次打印的#数,是由哪个值决定的?由 j<=n,后面的这个n值决定的? 还是由j与n的差值决定的?谢谢。

非常感谢
...全文
149 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smrt_tony 2013-07-13
  • 打赏
  • 举报
回复
引用 9 楼 MicrosoftCenterOfHN 的回复:
[quote=引用 6 楼 smrt_tony 的回复:] [quote=引用 5 楼 vb763305825 的回复:] 你先找本书或者利用搜索引擎把C#基本的东西看一遍,像for、while这些都是些很基本的 我关机下班了
谢谢你的回复,可是你还没有回答我的问题,for, while,do while, for each...这些我都学过,而且我知道i循环复杂行数,j循环负责多少个每行几个#。 但是。在j那部分for循环,具体是哪个值决定了几个#?[/quote] 楼主刚开始学习计算机编程吗? 你思考问题的方式不太对呀。这里不是数学,物理,化学公式,.[/quote] 谢谢,你说的有道理。
smrt_tony 2013-07-13
  • 打赏
  • 举报
回复
引用 8 楼 andylyq1 的回复:
for (int j=1;j<=(num+1)/2;j++) ================ note, int j =1 ===> every time when this j loop run again, j will be reset to 1. So, since j loop is inside i loop, so j will be reset to 1 nine times
Thank you, at first, I thought the inside j would increase from 1 to 2 to 3...it is,but only inside its own loop, it will reset to 1 from the next line when i loop start again. Cheers.
smrt_tony 2013-07-13
  • 打赏
  • 举报
回复
谢谢楼上各位的,我弄明白了。一开始自己想错了。不过还是非常感谢各位的回复。
  • 打赏
  • 举报
回复
引用 6 楼 smrt_tony 的回复:
[quote=引用 5 楼 vb763305825 的回复:] 你先找本书或者利用搜索引擎把C#基本的东西看一遍,像for、while这些都是些很基本的 我关机下班了
谢谢你的回复,可是你还没有回答我的问题,for, while,do while, for each...这些我都学过,而且我知道i循环复杂行数,j循环负责多少个每行几个#。 但是。在j那部分for循环,具体是哪个值决定了几个#?[/quote] j循环了多少次决定了一行多少个#
  • 打赏
  • 举报
回复
引用 6 楼 smrt_tony 的回复:
[quote=引用 5 楼 vb763305825 的回复:] 你先找本书或者利用搜索引擎把C#基本的东西看一遍,像for、while这些都是些很基本的 我关机下班了
谢谢你的回复,可是你还没有回答我的问题,for, while,do while, for each...这些我都学过,而且我知道i循环复杂行数,j循环负责多少个每行几个#。 但是。在j那部分for循环,具体是哪个值决定了几个#?[/quote] 楼主刚开始学习计算机编程吗? 你思考问题的方式不太对呀。这里不是数学,物理,化学公式,不用想着哪个值决定什么,这么绝对的情况。计算机很笨,你写什么,它就执行什么,一步一步执行,没有思维。 所有,如果你想理解代码的执行结果为什么是那样的话,那你就模拟计算机的行为,自己用脑子把代码走一遍。 你问到的那个j为什么没变成2,3,4的问题,楼上都回答过了。因为每次内层循环开始的时候都把j重新赋值为1了。 最后,j那部分for循环,具体是哪个值决定了几个#?没有具体哪个值,取决于j,n的初始值。以及每次j的改变的情况,你这里是每次加1.
andylyq1 2013-07-12
  • 打赏
  • 举报
回复
for (int j=1;j<=(num+1)/2;j++) ================ note, int j =1 ===> every time when this j loop run again, j will be reset to 1. So, since j loop is inside i loop, so j will be reset to 1 nine times
andylyq1 2013-07-12
  • 打赏
  • 举报
回复
for (int j=1;j<=(num+1)/2;j++) ====> for (int j=(5-System.Math.abs(i-5));j<=(num+1)/2;j++)
smrt_tony 2013-07-12
  • 打赏
  • 举报
回复
引用 5 楼 vb763305825 的回复:
你先找本书或者利用搜索引擎把C#基本的东西看一遍,像for、while这些都是些很基本的 我关机下班了
谢谢你的回复,可是你还没有回答我的问题,for, while,do while, for each...这些我都学过,而且我知道i循环复杂行数,j循环负责多少个每行几个#。 但是。在j那部分for循环,具体是哪个值决定了几个#?
  • 打赏
  • 举报
回复
你先找本书或者利用搜索引擎把C#基本的东西看一遍,像for、while这些都是些很基本的 我关机下班了
  • 打赏
  • 举报
回复
确实每次也只是输出一个#,只是每次循环完for(int j=1:j<=(num+1)/2;j++)的时候换行,看起来好像第一次打印5个#,第二次打印4个...... 输出3个#表示内循环执行了3次,输出4个就执行了4次 j循环输出一行多少个# i循环输出一个多少行
smrt_tony 2013-07-11
  • 打赏
  • 举报
回复
引用 2 楼 vb763305825 的回复:
1.j++的作用是每次+1 我知道++是 +1的意思,在具体一些呢? 2.每次只输出一个#,\n只是转义换行
谢谢你的回复,不好意思,可能我刚才没写清楚,我最后一句的n不是换行的那个n,就是随意指代一个number。 那这个第一行打印5个#,第二行打印4个#,第三行打印3个#...这5个,4个,3个#分别是指哪个值呢? j值?number值?j和number之间的差值? 谢谢!!!
  • 打赏
  • 举报
回复
1.j++的作用是每次+1 2.每次只输出一个#,\n只是转义换行
Sharpend 2013-07-11
  • 打赏
  • 举报
回复
for的语法都不会?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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