20241009

  1. 终端输入两个整数,a=3, b=4。交换a和b中的数据。多方法

#include <stdio.h>

// 方法一:
/* 
int main(void)
{
    int num1 = 0, num2 = 0;
    int temp = 0;
    printf("请输入两个整数:");
    scanf("%d %d",&num1,&num2);
    printf("交换前:\nnum1=%d num2=%d\n",num1,num2);
    temp = num1;
    num1 = num2;
    num2 = temp;
    printf("交换后:\nnum1=%d num2=%d\n",num1,num2);

    return 0;
}
*/
   
// 方法二:
/*
void swap(int *p1,int *p2)
{
    int temp = 0;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;                                         
}

int main(void)
{
    
    int num1 = 0, num2 = 0;
    printf("请输入两个整数:");
    scanf("%d %d",&num1,&num2);
    printf("交换前:\nnum1=%d num2=%d\n",num1,num2);

    swap(&num1,&num2);
    printf("交换后:\nnum1=%d num2=%d\n",num1,num2);

    return 0;
}
*/

// 方法三:数学加减法实现两数据交换,存在数据溢出风险
/*
int main(void)
{
    int num1 = 0, num2 = 0;
    printf("请输入两个整数:");
    scanf("%d %d",&num1,&num2);
    printf("交换前:\nnum1=%d num2=%d\n",num1,num2);

    
    // num1 = 5; num2 = 3;
    num1 = num1 + num2; //num1=5+3=8; num2=3;
    num2 = num1 - num2; //num2=8-3=5; num1=8;
    num1 = num1 - num2; //num1=8-5=3; num2=5;


    printf("交换后:\nnum1=%d num2=%d\n",num1,num2);

    return 0;
}
*/

// 方法四:两数互相异或交换数据,不存在溢出
/*
int main(void)
{
    int num1 = 0, num2 = 0;
    printf("请输入两个整数:");
    scanf("%d %d",&num1,&num2);
    printf("交换前:\nnum1=%d num2=%d\n",num1,num2);

    
    // 假设num1=10, num2=3
    num1 = num1 ^ num2;  // num1=1010^num2=0011 ==> 1001
    num2 = num1 ^ num2;  // num2=1001^num2=0011 ==> 1010
    num1 = num1 ^ num2;  // num1=1001^num2=1010 ==> 0011


    printf("交换后:\nnum1=%d num2=%d\n",num1,num2);

    return 0;
}
*/

运行结果:

  1. 终端输入三个整数,a=10, b=3, c=6; 要求代码执行完毕后,a存储最小值,c存储最大值。 a=3 b=6 c=10

#include <stdio.h>

void swap(int *p1,int *p2)
{
	int temp = 0;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}


int main(void)
{
	int num1=0,num2=0,num3=0;
	int temp=0;
	printf("请输入三个整数:");
	scanf("%d %d %d",&num1,&num2,&num3);
	printf("交换前:\nnum1=%d num2=%d num3=%d\n",num1,num2,num3);


	// num1=8; num2=5; num3=2;
    if(num1 > num2)
    {   
        swap(&num1,&num2); // num1=5;num2=8;num3=2;
    }   
    if(num1 > num3)
    {   
        swap(&num1,&num3); // num1=2;num2=8;num3=5;
    }       
    if(num2 > num3)    
    {           
        swap(&num2,&num3); // num1=2;num2=5;num3=8;                
    }   


	printf("交换后:\nnum1=%d num2=%d num3=%d\n",num1,num2,num3);

	return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉网线小梁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值