一些简单问题的c语言编程1

1.给定两个整形变量的值,将两个值的内容进行交换。
正常思路,利用第三个变量进行简单转换。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	printf("请输入两个整数\n");
	scanf("%d %d", &a, &b);
	c = a;
	a = b;
	b = c;
	printf("%d %d", a, b);
	system("pause");
	return 0;
}

2.不允许创建临时变量,交换两个数的内容。
转向思路,通过进行两变量之间的加减创建出无形的变量。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数\n");
	scanf("%d %d", &a, &b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("%d %d", a, b);
	system("pause");
	return 0;
}

3.求十个整数中的最大值。
常规思路,通过逐一比较来找出最大值,此时需要通过循环的手段来达成目的。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数\n");
	scanf("%d %d", &a, &b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("%d %d", a, b);
	system("pause");
	return 0;
}

4.将三个数按从大到小输出。
正常思路,通过逐一比较大小首先确定出最大者,然后是老二,其次是最小者。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	printf("请输入三个整数\n");
	scanf("%d %d %d", &a, &b, &c);
	if (a >= b&&a >= c)
	{
		printf("%d\n", a);
		if (b >= c)
		{
			printf("%d\n", b);
			printf("%d\n", c);
		}
		else
		{
			printf("%d\n", c);
			printf("%d\n", b);
		}
	}
	else if (b >= a&&b >= c)
	{
		printf("%d\n", b);
		if (a >= c)
		{
			printf("%d\n", a);
			printf("%d\n", c);
		}
		else
		{
			printf("%d\n", c);
			printf("%d\n", a);
		}
	}
	else if (c >= a&&c >= b)
	{
		printf("%d\n", c);
		if (a >= b)
		{
			printf("%d\n", a);
			printf("%d\n", b);
		}
		else
		{
			printf("%d\n", b);
			printf("%d\n", a);
		}
	}
	system("pause");
	return 0;
}

5.求两个数的最大公约数。
思路,辗转相除法。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两整数\n");
	scanf("%d %d", &a, &b);
	if (a >= b)
	{
		int c = 0;
		c = a % b;
		while ( a%c != 0 || b % c != 0 )
		{
			c = a % b;
			a = b;
			b = c;
		}
		printf("%d", c);
	}
	else if (b >= a)
	{
		int c = 0;
		c = b % a;//先求出第一个余数
		while (a%c != 0 || b % c != 0)//通过循环来更新并且确定此余数为两已知数的公约数
		{
			c = b % a;
			b = a;
			a = c;
		}
		printf("%d", c);
	}
	system("pause");
	return 0;
}

由于自己是新手上路,难免对于解决这些题目的有些方法显得很笨,有劳各位大佬能够指点一二,本人定当虚心接受,感谢万分!

猜你喜欢

转载自blog.csdn.net/asd0356/article/details/88618050