C语言基础训练题
1.给定两个整形变量的值,将两个值的内容进行交换。
2.不允许创建临时变量,交换两个数的内容
3.求10 个整数中最大值。
4.将三个数按从大到小输出。
5.求两个数的最大公约数。
编译环境:vs2017
1.给定两个整形变量的值,将两个值的内容进行交换。
2.不允许创建临时变量,交换两个数的内容
第1题和第2题很多解法,例如用临时变量辅助交换,取地址交换,异或操作交换,这里我便用最后一种方法求解。
#include "stdio.h"
int main()
{
int a = 10, b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d, b = %d", a, b);
getchar();
return 0;
}
3.求10 个整数中最大值
#include "stdio.h"
int main()
{
int arr[10] = { 12, 15, 28, 4, 10, 30, 37, 9, 29, 18 };
int temp = arr[0];
for (int i = 1; i < 10; i++)
{
if (temp < arr[i])
temp = arr[i];
}
printf("10个整数中最大值为%d", temp);
getchar();
return 0;
}
4.将三个数按从大到小输出
取地址交换两个数
#include "stdio.h"
void exchange(int* x, int* y)
{
int temp = 0;
if (*x < *y)
{
temp = *x;
*x = *y;
*y = temp;
}
}
int main()
{
int a = 10, b = 20, c = 30;
printf("a=%d b=%d c=%d\n", a, b, c);
exchange(&a, &b);
exchange(&a, &c);
exchange(&b, &c);
printf("a=%d b=%d c=%d\n", a, b, c);
getchar();
return 0;
}
5.求两个数的最大公约数
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
int main()
{
int a, b;
printf("输入要求最大公约数的两个数:");
scanf("%d%d", &a, &b);
while (a != b)
{
if (a > b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
b -= a;
}
printf("最大公约数是%d", a);
getchar();
getchar();
return 0;
}