
{
...
if(!(number++ % 3)) //这个是输入一个字符 number就+1么?
{ //它是怎么循环的呢?
...
}
}
把printf 打印相关可以去掉不看。整个代码清晰多了。
while((uchar = getchar())!= '\n') 这是程序退出条件,输入回车就退出该程序。
if(!(number++ % 3))
number++ 的意思是,程序走完这一次流程后+1
假设你初始的number=0 当你输入"a"
则第一次为 0%3 = 0 ----->因为 !0 为真 所以执行打印,printf("\n")--->打印执行完后,number++执行,此时number = 1 然后---->
while((uchar = getchar())!= '\n') 你输入b
1%3 = 0 --->因为 !0 为真 所以执行打印,print("\n") --->打印执行完后,number++执行,此时number = 2 然后 ---->
while((uchar = getchar())!= '\n') 你输入c
----->2%3 = 0 --->因为 !0 为真 所以执行打印,print("\n") --->打印执行完后,number++执行,此时number = 3 然后 ---->
while((uchar = getchar())!= '\n') 你输入d
----->3%3 = 1 --->因为 !1 为假 所以不执行打印,print("\n") ---> number++执行,此时number = 4 然后 ---->
while((uchar = getchar())!= '\n') 你输入e
----->4%3 = 1 --->因为 !1 为假 所以不执行打印,print("\n") ---> number++执行,此时number =5 然后 ---->
while((uchar = getchar())!= '\n') 你输入f
----->5%3 =2 --->因为 !2 为假 所以不执行打印,print("\n") ---> number++执行,此时number =6 然后 ---->
你输入 回车 程序退出。
以上就是整个流程。% 是取模计算符,简单理解就是取余数。明白了把?
我不用猜就知道你的for(factorial=1number>1factorial=factorial * number--)这句后面没加“;”,所以你的printf("%d",factorial)成了循环体,然后就是执行顺序了。先执行foctorial=1,执行判断,print(foctorlal=1)执行(foctorial=4,number=3);
执行判断,执行print(foctorical=4),执行(foctorial=4*3=12,number=2);
执行判断,执行print(foctorial=12),执行(foctorial=12*2=24,number=1);
执行判断,跳出。所以你第一种写法只输出了到12,没输出24,修改可以zaifor语句后面加一个分号或panduan改成number>0
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)