test2_1123

1.不允许创建临时变量,交换两个数的内容

中间变量 a0 = a+b; 

b1 = a0-b = (a+b)-b = a;

a1 = a0-b1 = (a+b)-((a+b)-b) = b;

int main()
{
	int a = 10, b = 20;
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d b=%d\n",a,b);
	system("pause");
	return 0;
}
#include <stdio.h>

int main()
{
	int a = 10, b = 20;
        //"^"表示按位异或,同位得1,异位得0
	a = a^b;
	b = a^b;
	a = a^b;
	printf("a=%d b=%d\n",a,b);

	system("pause");
	return 0;
}

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

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

int main()
{
	int a[10] = {0};
	int n = 0, max = 0;

	//用数组在存取10个整数
	printf("请输入10个整数: ");
	for(n=0; n<10; n++)
	{	
		scanf("%d",&a[n]);
		printf("%3d",a[n]);
	}

        //设最大值初值为第一个元素,后面的元素大于初值则置换
	max = a[0];
        for(n=0; n<10; n++)
	{
		if(a[n] > max)
		{
			max = a[n];
		}
	}
	printf("\nmax=%d\n",max);
	
	system("pause");
	return 0;
}

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

int main()
{	
	int a[3] = {0};
	int i = 0, j = 0;
	
	//输入3个数
	printf("请输入三个数: ");
	for(i=0; i<3; i++)
	{
		scanf("%d",&a[i]);
	}
	
	//外循环进行遍历
	//内循环判断,设数组的第一个元素为最大值,依次跟后面的元素进行比较。若小于后面的元素,则交换位置
	for(i=0; i<3; i++)
	{
		for(j=i+1; j<3; j++)
		{
			if(a[j] > a[i])
			{
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}

	//输出排序后的数组
	printf("\n从大到小的顺序是: ");
	for(i=0; i<3; i++)
	{
		printf("%3d",a[i]);
	}
	printf("\n");

	system("pause");
	return 0;
}

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

#include <stdio.h>

int main()
{
	int a = 0, b = 0, min=0;
	int i = 0;
	//输入两个数:
	printf("请输入两个数:");
	scanf("%d%d",&a,&b);

	min = (a>b)?b:a;
	for(i=min; i>=1; i--)
	{
		if(a%i == 0 && b%i == 0)
		{
			printf("a和b的最大公约数是:%d",i);
			break;
		}
	}
	
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Q_feifeiyu/article/details/84437893