根据整形变量的学习进行的几个代码研究

一丶互换两个整形变量
这里提供两种方法。
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值