awk 'BEGIN {for(i=1;i<=9;i++) {j=1;while(j<=i) {j++} {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
用这种语法循环做99乘法表怎么只能像下面这种循环一次就结束了,j设置初始值=1,怎么运行的时候是从2开始了?希望大家帮我解答一下
1x2=2
2x3=6
3x4=12
4x5=20
5x6=30
6x7=42
7x8=56
8x9=72
9x10=90
用for while做99乘法表的疑问
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
- astolia
- 论坛版主
- 帖子: 6455
- 注册时间: 2008-09-18 13:11
Re: 用for while做99乘法表的疑问
while(j<=i)这个循环执行的语句只有{j++}这一句。你这么写和
是等价的
代码: 全选
awk 'BEGIN {for(i=1;i<=9;i++) {j=i+1; {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7353
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: 用for while做99乘法表的疑问
大佬能不能给点解答思路,为什么用两个for循环就能成功打印出乘法表awk 'BEGIN {for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}',用while变成了j=i+1,我也给了条件和初始值呀
- astolia
- 论坛版主
- 帖子: 6455
- 注册时间: 2008-09-18 13:11
Re: 用for while做99乘法表的疑问
我上面都已经说了啊
你自己对比一下两种写法中两层循环各自的作用范围
awk 'BEGIN {for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
awk 'BEGIN {for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
awk 'BEGIN {for(i=1;i<=9;i++) {j=1;while(j<=i) {j++} {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
awk 'BEGIN {for(i=1;i<=9;i++) {j=1;while(j<=i) {j++} {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: 用for while做99乘法表的疑问
我分别用print打印出i和j的变量,i是for循环显示1-9,j是while循环直接显示10结束了astolia 写了: ↑2020-04-03 13:17我上面都已经说了啊你自己对比一下两种写法中两层循环各自的作用范围awk 'BEGIN {for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
awk 'BEGIN {for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'awk 'BEGIN {for(i=1;i<=9;i++) {j=1;while(j<=i) {j++} {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
awk 'BEGIN {for(i=1;i<=9;i++) {j=1;while(j<=i) {j++} {printf "%dx%d=%-2d\t", i, j, i*j} {print ""}}}'
- oneleaf
- 论坛管理员
- 帖子: 10441
- 注册时间: 2005-03-27 0:06
- 系统: Ubuntu 12.04
Re: 用for while做99乘法表的疑问
代码: 全选
awk 'BEGIN {for(i=1;i<=9;i++) {j=1; while(j<=i) {printf "%dx%d=%-2d\t", i, j, i*j; j++} {print ""}}}'