C语言训练题

题目:随意输入数字,进行从小到大排序。

代码如下:

#include 
int main()
{
	int x, y, z, m;
	printf(“请输入三个整数:”);
	scanf(“%d %d %d\n”, &x, &y, &z);
	
	if (x > y) {
	m = x;
	x = y;
	y = m;
}
if (x > z) {
	m = x;
	x = z;
	z = m;
}
if (y > z) {
	m = y;
	y = z;
	z = m;
}
printf(“从小到大顺序:%d %d %d\n”, x, y, z);
return 0;
}


运行结果

针对以上我们可以发现,每一个if判断中都是重复的进行赋值运算,我们想要优化,可以封装一个函数来进行,主函数中只需要调用封装函数就行。

#include 

int main()
{
	void swap();
	int x, y, z;
	printf(“请输入三个数字:”);
	scanf(“%d %d %d\n”, &x, &y, &z);

	if (x > y) {
	swap(&x,&y);
}
if (x > z) {
	swap(&x,&z);
}
if (y > z) {
	swap(&y,&z);
}
printf(“从小到大排序:%d %d %d”, x, y, z);
}

void swap(int *a, int *b) {
	int t;
	t = *a;
	*a = *b;
	*b = t;
}