C语言经典问题(不断添加)

1.交换两个变量的值
int a = 10;
int b = 20;
(i)定义第三个变量作为中间变量 来完成交换过程
int c = 0;
c = a;
a = b;
b = c;
(ii)两个变量运用加法完成相互之间值的交换
a = a+b;//a =30;
b = a-b;//30-20 = 10;b= 10;
a = a-b;//30-10 = 20;a = 20;
(iii)运用位运算符^按位异或(二进制位相同时异或=0;不同异或=1)
a ^= b; //01010 ^ 10100 = 11110;
b ^= a;//10100 ^ 11110 = 01010 = 10;
a ^= b;//11110 ^ 01010 = 10100 = 20;

2.最大公约数问题
以 72 64 为例子,通过计算可以得知其最大共约数为8,最小公倍数为576;72*64 = 4608;
(i)求余算法
72%64 = 8
64%8 = 0 ==》 8

上一篇:LOJ-10100(割点个数)


下一篇:(精)题解 guP2860 [USACO06JAN]冗余路径Redundant Paths