C语言:练习2

本文深入探讨了C语言编程中的实用技巧,包括不使用临时变量进行数值交换、寻找数组中的最大值、排序三个整数、计算最大公约数等关键操作。通过具体示例,读者可以学习如何更高效地处理常见编程任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 给定两个整形变量的值,将两个值的内容进行交换。
#include<stdio.h>
#include<stdlib.h>

int main(){

	int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
	int arr2[] = { 9, 10, 11, 12, 13, 14, 15, 16 };
	int len = sizeof(arr1) / sizeof(arr1[0]);
	int i = 0;
	for (i = 0; i < len; i++){//判定下标

		int tmp = arr1[i];//tmp开始储存arr1中的第0,1,2,3,4,5,6,7号元素
		arr1[i] = arr2[i];//arr1中的元素按顺序被替换为arr2的元素,下标对应
		arr2[i] = tmp;//arr2中的元素按顺序被替换为arr1的元素
	}
	for (i = 0; i < len; i++){

		printf("%d ", arr1[i]);//按下表顺序依次打印替换后的arr1
	}
	printf("\n");
	for (i = 0; i < len; i++){

		printf("%d ", arr2[i]);//按下标顺序依次打印被替换后的arr2
	}
	printf("\n");
	system("pause");
	return 0;
}
  1. 不允许创建临时变量,交换两个数的内容
    方法一
#include<stdio.h>
int main(){

	int a = 5;
	int b = 3;
	a = a - b;//计算两个变量的差值,赋给第一个变量;
	b = b + a;//第二个变量的值加上差值得到第一个变量的原值,赋给第二个变量;
	a = b - a;//第一个变量的原值减去差值得到第二个变量的原值,赋给第一个变量;
	
	printf("%d\n%d\n", a, b);

	system("pause");
	return 0;
}

方法二

int main()
{
	int a = 7;
	int b = 2;

	/*int tmp = a;
	a = b;
	b = tmp;*/

	//a = a+b;//a = 10+20 = 30
	//b = a-b;//30-20 = 10   b
	//a = a-b;//30-10 = 20    a
	//
	a = a ^ b;//0111 ^ 0010  = 0101
	b = a ^b;//0101 ^  0010 =  0111  =  7
	a = a ^ b;//0101 ^ 0111 = 0010    = 2
	printf("%d,%d\n", a, b);
	system("pause");
	return 0;

}

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

#include<stdio.h>
#include<stdlib.h>

int main(){

	int n = 0;
	int a[] = {1,4,3,6,2,5,8,10,9,8};
	int big = a[0];
	int len = sizeof(a) / sizeof(a[0]);//数组字节数
	//sizeof(a):整个数组字节数40;
	//sizeof(a[0]):4;
	for (n = 1; n <= 9; n += 1){
		if (big < a[n])
			big = a[n];
	}
	printf("最大的数是:%d\n", big);

	system("pause");
	return 0;
}

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

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
	int a = 9;
	int b = 0;
	int c = 10;
	//a>=b>=c
	if (a < b){
		int tmp = a;
		a = b;
		b = tmp;
	}
	if (a <c){
		int tmp = a;
		a = c;
		c = tmp;
	}if (b < c){
		int tmp = b;
		b = c;
		c = tmp;
	}
	printf("%d,%d,%d\n", a, b, c);//10,9,0
	system("pause");
	return 0;

}

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

#include<stdio.h>
#include<stdlib.h>

int main(){
	int a = 24;
	int b = 18;
	int c = 0;//余数

	while (a%b != 0){
		c = a%b;//余数
		a = b;//被除数变为下一次的除数
		b = c;//余数变为下一次的被除数
	}
	printf("%d\n", c);

	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值