关于C语言求余的运算。

Python012

关于C语言求余的运算。,第1张

你的注释好像不对啊。

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

#include <stdio.h>

#define M(x, y) x*y //宏替换 将M(x,y) 替换为x*y

int s = 0//全局变量

void f1()

{

int k = 1

s = s + k//s=s+1 

k++//这句没用 因为k是局部变量 函数执行完毕 这个变量就失效了

}

void f2(int n)

{

if (n>3)

f2(n / 4)//如果 n>3 递归调用f2函数

printf("%d", n % 4)//输出取余的值

}

void main()

{

int i, a = 2, b = 3

printf("%d\n", M(a + b, a - b))//输出 a+b*a-b 的值 2+3*2-3 = 5  注意上面的宏里没有括号 (x)*(y) 运算优先级不一样……

printf("%d\n", s)//输出s原始值 0

for (i = 1 i<3 i++)//循环两次 调用f1函数

f1()

printf("%d\n", s)//输出s 经过f1累加后的值 上面调用两次 所以输出2

f2(100)//调用递归函数输出值

//递归过程

/*

 n=100

 n>3

    n2=100/4  n2=25

   n2>3

      n3=25/4  n3=6

     n3>3

    n4=6/4  n4=1

   n4就不大于3了 不继续递归了

   开始回溯

   输出 1%4 = 1

 输出 6%4 =2

输出 25%4 = 1

输出 100%4 = 0

所以输出结果是 1210

*/

scanf("%d", &i)

}