分页: 1 / 1

用for while做99乘法表的疑问

发表于 : 2020-04-02 15:13
ps3wifi
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

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-02 17:51
astolia
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 ""}}}'
是等价的

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-02 19:39
懒蜗牛Gentoo
这是作业么

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-02 21:54
ps3wifi
懒蜗牛Gentoo 写了: 2020-04-02 19:39 这是作业么
正在学习python智商不在线,感觉用shell弄个99乘法表比python简便

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-02 22:35
ps3wifi
astolia 写了: 2020-04-02 17:51 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 ""}}}'
是等价的
大佬能不能给点解答思路,为什么用两个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,我也给了条件和初始值呀

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-03 13:17
astolia
ps3wifi 写了: 2020-04-02 22:35 大佬能不能给点解答思路,为什么用两个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 写了: 2020-04-02 17:51 while(j<=i)这个循环执行的语句只有{j++}这一句
你自己对比一下两种写法中两层循环各自的作用范围
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 ""}}}'

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-04 18:58
ps3wifi
astolia 写了: 2020-04-03 13:17
ps3wifi 写了: 2020-04-02 22:35 大佬能不能给点解答思路,为什么用两个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 写了: 2020-04-02 17:51 while(j<=i)这个循环执行的语句只有{j++}这一句
你自己对比一下两种写法中两层循环各自的作用范围
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 ""}}}'
我分别用print打印出i和j的变量,i是for循环显示1-9,j是while循环直接显示10结束了

Re: 用for while做99乘法表的疑问

发表于 : 2020-04-04 21:24
oneleaf

代码: 全选

awk 'BEGIN {for(i=1;i<=9;i++) {j=1; while(j<=i) {printf "%dx%d=%-2d\t", i, j, i*j; j++} {print ""}}}'