几个小程序练习C语言编程基础

1,给两个整形变量的值,将两个值的内容交换:
(1)通过定义临时变量:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 1;
	int b = 2;
	int tmp = a;//定义临时变量tmp
	a = b;
	b = tmp;
	printf("%d %d\n", a, b);
	system("pause");
	return 0;
}

(2)不建立临时变量,通过加减运算:
(存在溢出的问题)

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 1;
	int b = 2;
	a = a + b;//将a,b通过加减运算交换值,存在溢出的问题;
	b = a - b;
	a = a - b;
	printf("%d %d\n", a, b);
	system("pause");
	return 0;
}

(3)通过按位异或的方法:
(不容易理解,不利于阅读代码)

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 1;
	int b = 2;
	a = a^b;//通过按位异或运算将a,b交换值,问题:不容易理解,不利于阅读代码
	b = a^b;
	a = a^b;
	printf("%d %d\n", a, b);
	system("pause");
	return 0;
}

2,求十个整数中最大的值:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a[] = { 12, 34, 55, 6, 3, 2, 12, 67, 98, 67 };
	int max = a[0];
	for (int i = 0; i < sizeof(a) / sizeof(a[0]); ++i)
	{
		if (max < a[i])//将数组中第一个数定义为最大值,将数组遍历一遍,如果数组中的值比定义的最大值大,就交换他两的值,
		{
			max = a[i];
		}
	}
	printf("%d\n", max);
	system("pause");
	return 0;
}

3,将三个数按从大到小的顺序输出:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a[] = { 23, 43, 12 };
	int max = a[0];
	int min = a[1];
	if (max > min)
	{
		if (max < a[2])
		{
			printf("%d %d %d\n", a[2], max, min);
		}
		if (min>a[2])
		{
			printf("%d %d %d\n", max, min, a[2]);
		}
	}
	else if (max<min)
	{
		if (max>a[2])
		{
			printf("%d %d %d\n", min, max, a[2]);
		}
		if (min < a[2])
		{
			printf("%d %d %d\n", a[2], min, max);
		}
	}
	system("pause");
	return 0;
}

4,求两个数的最大公约数:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Function(int a, int b)//用递归思想将两数进行求模运算,直到求模的值等于0时
{
	if (a < b)
	{
		Function(b, a);
	}
	else if (b == 0)
	{
		printf("%d\n", a);
	}
	else
	{
		int tmp = a;
		a = b;
		b = tmp % a;
		Function(a, b);
	}
}
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个数,求这两数的最大公约数:");
	scanf("%d %d", &a, &b);
	Function(a,b);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43870213/article/details/84679966