初阶C_1025

#C常见的几种比较
我用的VS2013,头文件与源文件分开,在此只贴出函数。

1.给定两个整形变量的值,将两个值的内容进行交换。

1
2
3
4
5
6
7
8
9
void compare(){
int a = 10;
int b = 20;
int tmp = 0;
tmp = a;
a = b;
b = tmp;
printf("a=%d,b=%d", a, b);
}

2.不允许创建临时变量,交换两个数的内容

1
2
3
4
5
6
7
8
void compare2(){
int a = 20;
int b = 10;
a = a - b;
b = a + b;
a = b - a;
printf("a=%d,b=%d", a, b);
}

3.求10 个整数中最大值。

1
2
3
4
5
6
7
8
9
10
11
void compare3(){
int a[10] = { 12, 23, 51, 5, 24, 35, 62, 25, 19, 60 };
int i;
int max = a[0];
for (i = 0; i < 11; i++){
if (max < a[i]){
max = a[i];
}
}
printf("最大数为%d", max);
}

4.将三个数按从大到小输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void compare4(int a,int b,int c){
int tmp = 0;
if (a > b){
tmp = a;
a = b;
b = tmp;
}
if (b > c){
tmp = b;
b = c;
c = tmp;
}
if (a > b){
tmp = a;
a = b;
b = tmp;
}
printf("这三个数的排序为:%d,%d,%d", a, b, c);
}

在这里特别说一下,求最大公约数这用的是相减法,在while语句中,有个特别注意的。a-b的数需要考虑大小的问题,因为一直用大数减小数直到为0.
5.求两个数的最大公约数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void compare5(int a,int b){
int tmp = 0;
if (a < b){
tmp = a;
a = b;
b = tmp;
}
while (a-b!=0){
tmp = a - b;
a = b;
b = tmp;
if (a < b){
tmp = a;
a = b;
b = tmp;
}
}
printf("最大公约数为:%d", b);
}
-------------The End-------------