c编程(交换,最大值,公约数)

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

分析:两种方法,第一种在主函数中直接交换值,第二种定义一个函数进行交换,其中使用传递指针进行交换值,否则将不能够改变主函数中变量的值。

//1. 给定两个整形变量的值,将两个值的内容进行交换。
//第一种方法,直接交换值
int main() {
int a = 2;
int b = 3;
int tmp;
tmp = a;
a = b;
b = tmp;
printf("a = %d b = %d ", a, b);
printf("\n");
system("pause");
return 0;
}
//第二种方法,使用传递指针进行交换值
//1. 给定两个整形变量的值,将两个值的内容进行交换。
void Swap(int* ap, int* bp) {
int tmp;
tmp = *ap;
*ap = *bp;
*bp = tmp;
}
int main() {
int a = 2;
int b = 3;
Swap(&a, &b);
printf("a = %d b = %d ", a, b);
printf("\n");
system("pause");
return 0;
}

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

//3.求10 个整数中最大值。
分析:使用冒泡法直接将10个整数进行排序,最后将最大的数进行输出。

void printf_ar(int* ar,int n) {
	for (int i = 0; i < n; i++) {
		printf("%d ", ar[i]);
	}
}
void Bubble_Sort(int* ar ,int n) {
	for (int i = 0; i < n-1; i++) {
		int tag = 0;
		for (int j = 0; j < n - i - 1; j++) {
			if (ar[j] > ar[j + 1]) {
				int tmp = ar[j];
				ar[j] = ar[j + 1];
				ar[j + 1] = tmp;
				tag++;
			}
		}
		if (!tag) {
			break;
		}
	}
}
int main() {
	
	int ar[] = { 12,23,34,21,100,34,14,65,73,11 };
	int num = sizeof(ar) / sizeof(ar[0]);
	Bubble_Sort(ar, num);
	printf_ar(ar, num);
	printf("\n");
	printf("%d", ar[9]);
	printf("\n");
	system("pause");
	return 0;
}

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

分析:将三个数进行两两大小比较,然后交换位置。

//4.将三个数按从大到小输出。
void Swap(int* ap, int* bp) {
	int tmp;
	tmp = *ap;
	*ap = *bp;
	*bp = tmp;
}
int main() {

	int a = 10, b = 7, c = 4;
	if (a < b) {
		Swap(&a, &b);
	}
	if (a < c) {
		Swap(&a, &c);
	}
	if (b < c) {
		Swap(&b, &c);
	}
	printf("%d %d %d", a, b, c);
	printf("\n");
	system("pause");
	return 0;
}

5.求两个数的最大公约数。

分析:相减法 也叫更相减损法
思路:
1.如果a>b a = a - b;
2.如果b>a b = b - a;
3.假如a = b ,则 a或b 是最大公约数
4.如果a != b,则继续从1开始执行
5.也就是说循环的判断条件为a != b ,直到a = b时,循环结束。

举例说明

1.如果a>b a = a - b;
2.如果b>a b = b - a;
3.假如a = b ,则 a或b 是最大公约数
4.如果a != b,则继续从1开始执行
5.也就是说循环的判断条件为a != b ,直到a = b时,循环结束。

//5.求两个数的最大公约数。
int main() {
	int a, b;
	printf("请输入两个整数:");
	scanf_s("%d%d",&a, &b);
	while (a != b) {
		if (a > b) {
			a = a - b;
		}
		else {
			b = b - a;
		}

	}
	printf("a和b的最大公约数为:%d", a);

	printf("\n");
	system("pause");
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值