【Linux C编程】第二十五章 C中如何进行两个数的交换?

举报
Yuchuan 发表于 2021/08/07 08:40:39 2021/08/07
【摘要】 执行上述程序后,您将了解 C 中两个数字的交换

在 C编程语言中交换两个数字意味着交换两个变量的值。假设您有两个变量 var1 和 var2。var1 的值为 20 & var2 的值为 40。因此,交换后 var1 的值将变为 40 & var 2 的值将变为 20。在此博客中将了解如何在 C 中交换两个变量。

使用第三个变量交换两个数字

逻辑
使用第三个变量交换两个数字背后的想法很简单。将第一个变量的值存储在临时变量中。将第二个变量的值存储在第一个变量中。最后,将临时变量的值存储在第二个变量中。在这个程序中,我们使用一个临时变量来保存第一个变量的值。

  • 将 var1 值分配给临时变量:temp = var1

  • 将 var2 值分配给 var1:var1 = var2

  • 将临时值分配给 var2:var2 = temp

代码:

temp = var1;
var1 = var2;
var2 = temp;

现在,让我们看一下完整的代码。

例子

#include <stdio.h> 
int main()
{
	int var1, var2, temp; 
	printf("Enter two integersn");
	scanf("%d%d", &var1, &var2);
	printf("Before SwappingnFirst variable = %dnSecond variable = %dn", var1, var2);
	temp = var1;
	var1 = var2;
	var2 = temp;
	printf("After SwappingnFirst variable = %dnSecond variable = %dn", var1, var2);
	return 0;
}

输出:

在不使用第三个变量的情况下交换两个数字 在交换两个变量的这种变体中,我们没有使用任何临时变量来存储值。 在第一个变量中,我们存储两个变量的总和。 然后,在下一步中,我们将通过从总和中减去第二个变量的值并将其存储在第二个变量中来提取第一个变量的值。 最后,我们提取第二个变量的原始值并将其存储在第一个变量中。

继续这篇关于在 C 中交换两个数字的文章

不使用第三个变量交换两个数字

在这种交换两个变量的变体中,我们没有使用任何临时变量来存储值。在第一个变量中,我们存储两个变量的总和。然后,在下一步中,我们将通过从总和中减去第二个变量的值并将其存储在第二个变量中来提取第一个变量的值。最后,我们提取2的原始值ND变量&其存储在1变量。

代码:

var1 = var1 + var2;
var2 = var1 - var2;
var1 = var1 - var2;

现在,让我们看一下完整的代码。

例子

#include <stdio.h>
int main()
{
	int var1, var2, temp;
	printf("Enter two integersn");
	scanf("%d%d", &var1, &var2);
	printf("Before SwappingnFirst variable = %dnSecond variable = %dn", var1, var2);
	var1 = var1 + var2;
	var2 = var1 - var2;
	var1 = var1 - var2;
	printf("After SwappingnFirst variable = %dnSecond variable = %dn", var1, var2);
	return 0;
}

输出:

示例 - 在 C- Edureka.png 中交换两个数字

继续这篇关于在 C 中交换两个数字的文章

C 中的交换函数

您可以在 C 中创建一个交换函数来实现任何交换变体,当您想要交换两个变量时,您可以随时调用该函数。由于我们希望通过交换函数修改 main 的局部变量,我们必须使用指针来修改它们。

例子

void swap(int *num1, int *num2) 
{ 
	int temp = *num1; 
	*num1 = *num2; 
	*num2 = temp; 
}

int main() 
{ 
	int var1, var2; 
	printf("Enter Value of var1 "); 
	scanf("%d", &var1); 
	printf("nEnter Value of var2 "); 
	scanf("%d", &var2); 
	swap(&var1, &var2); 
	printf("nAfter Swapping: var1 = %d, var2 = %d", var1, var2); 
	return 0; 
}

输出:

输出-在 C- Edureka 中交换两个数字

转到下一个变体,我们使用指针交换两个数字。

用C中的指针交换两个数字

您还可以使用指针交换两个变量,其中将变量的地址传递给两个不同的变量。然后,交换它们的值。

代码

num1 = &var1;
num2 = &var2;
temp = *num2;
*num2   = *num1;
*num1   = temp;

现在,让我们看一下完整的代码。

例子

#include <stdio.h> 

int main()
{
	int var1, var2, *num1, *num2, temp;
	printf("Enter the value of var1 and var2n");
	scanf("%d%d", &var1, &var2);
	printf("Before Swappingnvar1 = %dnvar2 = %dn", var1, var2);
	num1 = &var1;
	num2 = &var2;
	temp = *num2;
	*num2   = *num1;
	*num1   = temp;
	printf("After Swappingnvar1 = %dnvar2 = %dn", var1, var2);
	return 0;
}

输出:

输出-在 C- Edureka 中交换两个数字

转到 C 中交换变量的最后一个变体。让我们了解如何使用按位异或运算符交换两个变量。

使用按位异或交换两个数字

XOR 运算符的工作方式与不使用临时变量的交换工作方式类似。我们提取计算两个变量的异或。然后我们提取单个值并交换它们。

假设 var1 = 20 和 var2 = 40。二进制值 20 = 10100 和 40 = 101000。

例子:

Var1 = Var1 ^ Var2
Var1 = 10100 ^ 101000
Var1 = 111100

Var2 = Var1 ^ Var2
Var2 = 111100 ^ 101000
Var2 = 10100

Var1 = Var1 ^ Var2;
Var1 = 111100 ^ 10100
Var1 = 101000
交换 2 个数字后的最终值:var1 = 40 和 var2 = 20

var1 = var1 ^ var2;
var2 = var1 ^ var2;
var1 = var1 ^ var2;

现在,让我们看一下完整的代码。

#include <stdio.h>

int main()
{
	int var1, var2, temp; 
	printf("Enter two integersn");
	scanf("%d%d", &var1, &var2);
	printf("Before SwappingnFirst variable = %dnSecond variable = %dn", var1, var2); 
	var1 = var1 ^ var2;
	var2 = var1 ^ var2;
	var1 = var1 ^ var2;
	printf("After SwappingnFirst variable = %dnSecond variable = %dn", var1, var2);
	return 0;
}

输出:

输出-在 C- Edureka 中交换两个数字

现在,在完成上述程序后,您将了解在 C 中交换两个数字的所有变体。我希望这篇博客能够为您提供信息并增加价值。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。