发布网友 发布时间:2022-04-22 04:23
共3个回答
热心网友 时间:2024-04-25 18:17
看来楼主不太了解取余运算符%
例如:
40除以3等于13余1
则取余运算表达式为40%1=1
40除以4等于10余0
则取余运算表达式40%4=0
所以取余运算只取除法运算的余数
d
=
f[(b
/
c
)
%
4];
//
b/c=7/4=1;
1%4=1;
则d=f[1]=19;
if(f[(a
+
b
+
c
+
d)
%
4]
>
f[2])
//a+b+c+d=10+7+4+19=40;
40%4=0;
则if(f[0]>f[2]),即if(9>29),条
件为假,执行else,那么c+d=4+19=23(最终结果);
热心网友 时间:2024-04-25 18:17
你的注释好像不对啊。
a
=
f[0]
+
f[1]
+
f[2]
+
f[3];
//9+19+29+39=96,没问题
a
=
a
/
f[0];
//a=10,OK,小数去掉
b
=
f[0]
+
f[2]
+
f[3];
//9+29+39=77,OK
b
=
b
/
a;
//b=7,OK,小数去掉
c
=
(b
*
f[1]
+
a)
/
f[2];
//c=7*19/29=4,这里应该是c=(7*19+10)/29=4,结果倒是不变的,小数去掉
d
=
f[(b
/
c
)
%
4];
//d=
4,这里不对,d=f[(7/4)%4]=f[1%4]=f[1]=19,这里的%表示取余数,即1除以4余数是1;
if(f[(a
+
b
+
c
+
d)
%
4]
>
f[2])
//6>29,f[(a+b+c+d)%4]=f[(10+7+4+19)%4]=f[40%4]=f[0],所以是判断9>29?
printf("%d\n",
a
+
b);
else
printf("%d\n",
c
+
d);
//4+4=8,4+19=23
return
0;
热心网友 时间:2024-04-25 18:18
d的值计算错误了。
d
=
f[(b
/
c
)
%
4],b/c=7/4=1;1%4=1,所以d=f(1)=19.
(f[(a
+
b
+
c
+
d)
%
4]=f(0)
评论
0
0
加载更多