一丶互换两个整形变量
这里提供两种方法。
1.定义一个中间变量
比方说开始定义两个整形a,b. 之后在定义一个正形变量c。
通过c这个桥梁我们可以实现a,b的互换。
就好像我们有两个桶装了不等量的水,然后还有一个空桶,我们就可以利用这个空桶,
将两个桶里的水互换。
实现代码如下:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
printf("输入a,b的值:");
scanf("%d %d", &a,&b);
c = a;
a = b;
b = c;
printf("a = %d ,b = %d\n", a, b);
return 0;
}
2.通过异或运算实现变量的互换
异或运算符是指: 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。即:0^0=0, 1^0=1, 0^1=1, 1^1=0。
例如:10100001^00010001=10110000
通过代码我们能看的更清除一些。
int main()
{
int a = 0; //01101
int b = 0; //10010
printf("输入a,b的值:");
scanf("%d,%d", &a,&b);
a = a^b; //11111
b = a^b; //01101
a = a^b; //10010 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
printf("a = %d ,b = %d\n", a, b);
return 0;
}
当然,a,b的值我们是可以通过scanf键入的,这里的01101和10010方便大家的观看和理解。
二丶求十个整数整数中的最大值
我们先设出一个数组a[10],用来储存题目中要求的十个整数。
再使用两个for循环,第一个用来键入十个整数,第二个用来用来将十个数进行比较。
#include <stdio.h>
int main()
{
int a[10], i, max;
for (i = 0; i <= 9; i++)
scanf("%d", &a[i]); //键入十个数
max = a[0]; //将a[0]赋给max
for (i = 0; i <= 9; i++)
{
if (a[i]>max)
max = a[i]; //如果a[i]>max 则将a[i]的值赋给max
}
printf("其中最大值为%d\n", max);
}
三丶将三个数按照从大到小输出
这个函数我们同样可以利用中间变量,将每个数两两对比,最后将三个数从大到小输出。
当然此函数用异或的方法进行是没有丝毫问题的。
int main()
{
int a = 0;
int b = 0;
int c = 0;
int i = 0;
printf("请输入三个数:\n");
scanf("%d %d %d",&a,&b,&c);
if (a < b)
{
i = a;
a = b;
b = i;
}
if (a < c)
{
i = a;
a = c;
c = i;
}
if (b < c)
{
i = b;
b = c;
c = i;
}
printf("%d<%d<%d\n",a,b,c);
return 0;
}
或者
#include <stdio.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 = a^b;
b = a^b;
a = a^b;
}
if (a < c)
{
a = a^c;
c = a^c;
a = a^c;
}
if (b < c)
{
b = b^c;
c = b^c;
b = b^c;
}
printf("%d<%d<%d\n", a, b, c);
return 0;
}
四丶求两个数的最大公约数
在这里我使用相减法求两个数的最大公约数。
举例说明:
a = 24 b = 16
a>b ,则 a = a - b =24-16 = 8
b = 16
b>a
则 b = b-a = 16 - 8 = 8
a = 8
此时 a = b =8,即求得最大公约数为8。
int main()
{
int a, b;
printf("输入两个数字:");
scanf("%d %d", &a, &b);
while (a != b)
{
if (a>b)
{
a = a - b;
}
else
{
b = b - a;
}
}
printf("最大公约数为:%d\n", b);
return 0;
}