失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c语言能求50的阶乘吗 c语言50的阶乘 这个for循环什么意思啊 有没有大佬解释一下...

c语言能求50的阶乘吗 c语言50的阶乘 这个for循环什么意思啊 有没有大佬解释一下...

时间:2024-05-21 07:53:00

相关推荐

c语言能求50的阶乘吗 c语言50的阶乘 这个for循环什么意思啊 有没有大佬解释一下...

(a=b=0,1)这里是逗号运算,该运算符优先级最低,最低!。就是最后一个表达式的值。就是说(a=b=0,1)就是1{此处还有一个作用就是为a、b赋值0}

至少第一遍循环时a<=m这里的真假值暂无影响。因为||的后半部分为true

循环体:s[a]=(b+=s[a]*t)%n,b/=n;

又是一个逗号运算符,所以等价为:

s[a]=(b+=s[a]*t)%n;

b/=n;

第二个for循环:两个输出没什么好看的,就两个;中间的m--作为判断条件,m小余0时跳出。

所以,我大约展开一下。#include

#defineN50

longs[N]={1},n=10000,t=2,a,b,m;//这一排不过问了

intmain(void)

{

//for(;a<=m||++t<=N&&(a=b=0,1);m==a++&&b&&m++)

//s[a]=(b+=s[a]*t)%n,b/=n;

//a<=m||++t<=N&&(a=b=0,1)这个判断是这个顺序,首先看a<=m吗?真就返回//true后边不执行,假就执行(++t<=N&&(a=b=0,1)),看++t<=N吗?假就返//回false,真就执行(a=b=0,1),即返回true

//我将循环的第一次的a<=m||++t<=N&&(a=b=0,1)变形

boolkkk;

if(a<=m){kkk=1;}

elseif(!(++t<=N)){kkk=0;}

else{a=b=0;kkk=1;}

for(;kkk;){

//s[a]=(b+=s[a]*t)%n;

b+=s[a]*t;

s[a]=b%n;

b/=n;

//下面是每次循环的m==a++&&b&&m++变形

if(!a){m=0;}

elseif(!b){m=0;}

else{m=m;m++;}

//下面是后来每次循环的a<=m||++t<=N&&(a=b=0,1)变形

if(a<=m){kkk=1;}

elseif(!(++t<=N)){kkk=0;}

else{a=b=0;kkk=1;}

}

for(printf(("%d"),s[m]);m--;)//这个循环不重要便不多说了

printf("%04d",s[m]);

}

不容易哦,回答这个问题,我也学习了不少东西,因为有个短路原则在里面且有计算式在其间夹杂,所以两个逻辑判断必须改写成这种形式最准确、安全、有保障。

当然如果运行结果有所出入,希望您能指出,我们再学习讨论一番

如果觉得《c语言能求50的阶乘吗 c语言50的阶乘 这个for循环什么意思啊 有没有大佬解释一下...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。