黑马程序员技术交流社区
标题:
帮我每句分析下,前段时间写的乘法表,突然看不懂了
[打印本页]
作者:
为梦想挺身而出
时间:
2014-5-1 21:22
标题:
帮我每句分析下,前段时间写的乘法表,突然看不懂了
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
printf("%d\n",a);
int b;
scanf("%d",&b);
printf("%d %d\n",a,b);
return 0;
作者:
为梦想挺身而出
时间:
2014-5-1 21:24
发错了是这个
#include <stdio.h>
int main()
{
for (int i = 0; i<9; i++)
{
for(int j = 10,a=0; j >9-i; j--)
{
//每次运行加1,用来计算被乘的数
a++;
int b = 10-(9-i);
printf("%dx%d=%d ", a, b, a*b );
}
printf("\n");//每次循环后换行
}
return 0;
}
作者:
m573555543
时间:
2014-5-1 22:04
当
i
= 0时 进入循环
J
中
当
j
等于10进入循环a++,b
j
循环一遍以后再进入
j
循环,直到
j
不满足条件退出循环
当
j
不满足条件退出循环的时候再次进入
i
循环
以此类推
直到
i
不满足条件 退出
整个
循环。
作者:
liulinjie
时间:
2014-5-2 10:41
(可以在循环里打印一下 i j a b 的值, 能帮助理解)
外层循环: i 分别取值 0, 1, 2, .., 8, 共9个循环, 每个循环换一次行.
内层循环: 对每个i的值, j 分别取值 10, 9, 8, ..., 10-i, 共i+1个循环, 即 i=0 时循环一次, i=1 时循环两次, i=8时循环9次. 每个内层循环内, a都从0开始, 每次加1, b = 10-(9-i) = i+1, b总是不变, 所以就是把i+1(即b)分别乘以1, 2, ..., i+1 (即a) 并打印出来.
整体来说, 就是i+1的取值为1到9, 对每个i+1, 分别打印 1*(i+1), 2*(i+1), ... (i+1)*(i+1), 之后换行, 也就是把1到9的数分别乘以从1到它自己, 所以打印出的就是三角乘法表.
作者:
打洞的土拨鼠
时间:
2014-5-7 02:30
1、从for (int i = 0; i<9; i++)开始,i<9【第一次运行到这里i是0,0<9为真】,进入内循环
2、运行for(int j = 10,a=0; j >9-i; j--)中的“int j = 10,a=0; j >9-i;”部分,这时j=10,a=0;10>9-0(i),10>9为真,运行a++(a变为了1),运行b = 10-(9-i)【10-9-0】,结果是1,你打印了a,b,a*b;【1*1=1】,运行j--(9),判断9>9-0为假,跳出内循环
3、再从for (int i = 0; i<9; i++)开始,此时,你的i执行了i++操作,结果由0变为了1,再次判断i<9【1<9】,进入内循环
4、执行for(int j = 10,a=0; j >9-i; j--)中的“int j = 10,a=0; j >9-i;”部分,这时j=10,a=0;10>9-1(i),10>9为真,运行a++(a变为了1),运行b = 10-(9-1)【10-(9-1)】,结果是2,你打印了a,b,a*b;【1*2=2】,运行j--(9),判断9>9-1为真,再执行a++(a变为了2),运行b = 10-(9-1)【10-(9-1)】,结果是2,你打印了a,b,a*b;【2*2=2】,跳出内循环
…………………………
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2