作业帮 > 综合 > 作业

C语言解读方法,一窍不通

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 20:54:17
C语言解读方法,一窍不通
#include
int main()
{
int i,a,b,c,d,f[4];
for(i = 0; i < 4; i++)
scanf("%d",&f[i]);
a = f[0] + f[1] + f[2] + f[3];
a = a / f[0];
b = f[0] + f[2] + f[3];
b = b / a;
c = (b * f[1] + a) / f[2];
d = f[(b / c ) % 4];
if(f[(a + b + c + d) % 4] > f[2])
printf("%d\n",a + b);
else
printf("%d\n",c + d);
return 0;
}
输入:9 19 29 39
输出:_______________
f[0]=9,f[1]=19,f[2]=29,f[3]=39
a=9+19+29+39=96
a=a/f[0]=a/9=10(因为a是Int所以取整)
b=9+29+39=77
b=b/a=77/10=7
c=(7*19+10)/29=4
d=f[(7/4)%4]=f[1%4]=f[1]=19(%就是取余数)
(10+7+4+19)%4=0(40除以4整除,余数为0)
if(f[0]>f[2])=if(9>29)不成立
所以输出c+d =4+19=23
再问: “f[0]=9,f[1]=19,f[2]=29,f[3]=39 a=9+19+29+39=96 a=a/f[0]=a/9=10(因为a是Int所以取整) b=9+29+39=77 b=b/a=77/10=7 c=(7*19+10)/29=4 d=f[(7/4)%4]=f[1%4]=f[1]=19(%就是取余数)” 这些我看明白了, 但是剩下的: “(10+7+4+19)%4=0(40除以4整除,余数为0) if(f[0]>f[2])=if(9>29)不成立 所以输出c+d =4+19=23” 之间有什么联系,比如因为......所以........
再答: if(f[(a + b + c + d) % 4] > f[2]) 令x=(a + b + c + d) % 4原表达式就是if( f[x]>f[2] ) x=(10+7+4+19)%4=0所以就是if(f[0]>f[2]),因为9>29为假,所以if语句不成立,执行else语句, printf("%d\n", c + d); 就是输出c+d的值 if(){}....else{}是if()内的条件不成立就执行else后的内容,成立则执行if(){}内的内容