精华内容
下载资源
问答
  • 交换a和b的值c语言
    万次阅读 多人点赞
    2018-10-05 22:02:57

    第一种方法:给定两个整形变量的值,创建两个临时变量将两个值的内容进行交换。

    {
    	int a = 2;
    	int b = 3;
    	int c = 0;
    	printf("原来的\na=%d b=%d\n", a, b);
    	c = a;
    	a = b;
    	b = c;
    
    	printf("现在的\na=%d b=%d", a, b);
    	system("pause");
    		return 0;	
    }
    

    第二种方法:不允许创建临时变量,交换两个数的内容

    {
    		int a = 2;
    		int b = 3;
    	printf("原来的\na=%d b=%d\n", a, b);
    		a = a + b;
    		b = a - b;
    		a = a - b;
    	printf("现在的\na=%d b=%d", a, b);
    	system("pause");
    	return 0;
    }	
    

    第三种方法:用异或符号,可以避免a+b的值溢出

    {
    		int a = 2;
    		int b = 3;
    	printf("原来的\na=%d b=%d\n", a, b);
    		a = a ^ b;
    		b = a ^ b;
    		a = a ^ b;
    	printf("现在的\na=%d b=%d", a, b);
    	system("pause");
    	return 0;
    	}
    
    更多相关内容
  • C语言交换ab值的几种写法

    万次阅读 2019-07-19 15:30:26
    定义中间变量c,吧a值赋给c,把b值赋给a,把c值赋给b,完成交换 #include <stdio.h> int main() { int a = 2; int b = 5; int c = a; printf("a=%d\n", a = b); { printf("b=%d\n", b = c); ...

    方法一
    定义中间变量c,吧a值赋给c,把b值赋给a,把c值赋给b,完成交换

    #include <stdio.h>
    int main()
    {
    	int a = 2;
    	int b = 5;
    	int c = a;
    	printf("a=%d\n", a = b);
    	{
    		printf("b=%d\n", b = c);
    	}
    	return 0;
    }
    

    方法二
    把a+b赋给a,然后用a-b(等于a原来的值)赋给b,再用a-b(等于b原来的值)赋给a

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int a = 2;
    	int b = 5;
    	a = a + b;
    	b = a - b;
    	a = a - b;
    	printf("a=%d,b=%d", a, b);
    	return 0;
    }
    

    注意不可以写成

    #include<stdio.h>
    #include<stdlib.h>
    void Swap(int x,int y)
    {
    	int tmp = x;
    	x = y;
    	y = tmp;
    }
    
    int main()
    {
    	int a = 10;
    	int b = 20;
    	int tmp = 0;
    	printf("%d,%d\n",a,b);
    	Swap(a,b);
        printf("%d,%d\n",a,b);
    	return 0;
    }
    
    

    因为C语言中(按值传递)形参的改变 不影响实参的值

    方法三
    用异或

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int a = 6;//0000 0110
    	int b = 4;//0000 0100
    
    	a = a ^ b;//a = 0000 0010     2
    	b = a ^ b;//0000 0110    b = 6
    	a = a ^ b;//4           a = 4;
    
    	return 0;
    }
    
    

    方法四:
    用指针

    #define _CRT_SECURE_NO_WARNINGS 1
    void Swap(int *p, int *q)
    {
    	int tmp = *p;\\正确写法
    	*p = *q;
    	*q = tmp;
    }
    
    /*void Swap2(int *p, int *q)   错误写法
    {
    	int *tmp = p;
    	p = q;
    	q = tmp;
    }*/
    int main()
    {
    	int a = 10;
    	int b = 20;
    	printf("%d,%d\n", a, b);
    	Swap(&a, &b);
    	printf("%d,%d\n", a, b);
    	return 0;
    }
    
    

    加油鸭~

    展开全文
  • c语言swap(a,b)值交换的4种实现方法,这么好的东西,尽管简单,但值得发表,以此共享。
  • 异或实现a和b两个变量交换值交换两变量的三种方法详情C语言实现

    题目:交换变量

    输入两个整数a和B,交换二者的值,然后输出。

    样例输入:

    824 16

    样例输出:

    16 824

    方法一:三变量法

    引入一个中间变量tmp作为交换时的临时存储,相信这也是大多数人的第一想法,代码如下:

    #include<stdio.h>
    
    int main() {
        int a, b, tmp;
        scanf("%d %d", &a. &b);
        tmp = a;
        a = b;
        b = tmp;
        printf("%d %d\n", a, b);
        return 0;
    }

    这种方法易于大多数人理解和接受。

    方法二:加法计算交换

    这种方法不借助别的变量,首先将a的值赋为a + b,然后b的值通过a - b即可交换为原来a的值,a的值再通过a - b即可交换为原来b的值,便实现了题目要求交换了两个变量的值,代码如下:

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

    这种方法表面上看是要比方法一减少了引入临时变量所新开辟的空间,是对方法一的优化,实则存在问题,因为涉及到了加法操作,当我们不知道输入a和b的范围时,执行a + b的操作可能会导致超出int存储的范围,从而计算结果出错,交换值失败,所以在不明确输入数据范围时,方法二并不优于方法一。

    方法三:异或操作

    异或操作实现交换两个数的值其实本质与方法二相同,只不过方法二依靠的是:

    tmp = a + b;
    a = tmp - b;
    b = tmp - a;

    异或操作的本质依靠的是:

    tmp = a ^ b;
    a = tmp ^ b;
    b = tmp ^ a;

    但是方法二和方法三都没有引入第三个变量,而是通过a和b之间运算巧妙的将tmp值保存在其中一个变量中,从而交换成功,异或操作交换两个数值的代码如下:

    #include<stdio.h>
    
    int main() {
        int a, b;
        scanf("%d %d", &a. &b);
        a ^= b;
        b ^= a;
        a ^= b;
        printf("%d %d\n", a, b);
        return 0;
    }

    总结

    当不引入更多变量时,推荐使用方法三;方法一虽然引用了第三变量,但是易于理解,此外如果是做程序竞赛的话,最简单实现本题的方法肯定是直接改一下a和b输出时的位置,但是这样本质上并没有做到交互了a和b的值,最多称之为控制输出吧,代码如下:

    #include<stdio.h>
    
    int main() {
        int a, b;
        scanf("%d %d", &a, &b);
        printf("%d %d\n", b, a);
        return 0;
    }

    展开全文
  • void swap(int *a,int *b)(用指针将a,b进行交换) { int temp=0; temp=*a; *a=*b; *b=temp; } int main() { int a,b; printf(“please int like this:\n”); scanf(“a=%d,b=%d”,&a,&b);(注意输入格式为a...

    源代码:
    #include<stdio.h>
    void swap(int *a,int *b)(用指针将a,b进行交换)
    {
    int temp=0;
    temp=*a;
    *a=*b;
    *b=temp;
    }
    int main()
    {
    int a,b;
    printf(“please int like this:\n”);
    scanf(“a=%d,b=%d”,&a,&b);(注意输入格式为a=x,b=y)
    swap(&a,&b);
    printf("%d,%d",a,b);
    return 0;
    }
    运行截图:
    在这里插入图片描述

    展开全文
  • #includeusing namespace std;int main(){int *p1,*p2,*p;...int a,b;cout<cin>>a>>b;p1=&a;p2=&b;if(a{p=p1;//将p1p2的指向互换。p1=p2;p2=p;}cout<<<cout<<<return ...
  • C 语言交换 a b 的 4 种方式

    千次阅读 2022-01-06 09:19:16
    然后将 a b互换得到 a是 4 b是 3 二、需求分析 能想到,交换两个的 使用第三个变量可完成交换,形如 int c = a; a = b; b = c; 在忽略其他情况下,整形变量也可以通过运算的方式...
  • 第一种,最常用的是创建一个中间变量来循环交换它们的: T a = ...; T b = ...; . T tmp = a; a = b; a = tmp; 我们称这种策略p99_swap1。在这里,编译器必须严格实现三个任务的顺序,否则,由此程序产生的结果将...
  • C语言交换a和b

    千次阅读 2013-10-30 14:53:41
    交换a和b值的三种方法 ^为位运算符,表示按位异或 a=a^b; b=a^b; a=a^b;     a=a+b; b=a-b; a=a-b;   使用中间值 t=a; a=b; b=t; 例子:输入3个数a,b,c,要求按由小到大的顺序输出 #include   ...
  • 代码如下: //by cloudgamer var a = 33,b=44 a=[a,b] b=a[0] a=a[1] 代码如下: //by Mr.司马 var a = 23,b=454; a = {a:b,b:a}; b = a.b; a = a.a; 评:1、2种解法是普遍解,只能交换数字,而3、4种则适用性更
  • C语言中,交换ab两个变量的的三种实现方式 题目: 有两个整型变量分别为a,b,其中a=3,b=5,要求将a,b内的进行互换使得a=5,b=3。 方法一: 该方法是创建一个新的整型变量,将这个新创建的变量作为变量a,...
  • C语言交换ab的方法

    2021-05-20 06:26:52
    #includevoid exchange0(int *a,int *b)//通过指针交换两者的{int c;c=*a;*a=*b;*b=c;}void exchange1(int *a,int *b)//没有交换两者的,只是交换了地址{int *c;c=a;a=b;b=c;}void exchange2(int &a,int &...
  • 1. 交换变量的三种姿势 2. 在各种限定代码条件的题目中,可以优先考虑位运算
  • 要求不能使用第三变量来达到交换两个变量呢? 方法一: void main() { int a,b; printf(&amp;quot;请输入两个变量的:&...a,&...b);... a=a+b;... b=a-b;... a=a-b;...交换后为:a=%d,b=%d
  • C语言用函数交换两个数的
  • 输入a b 交换数值并输出(c语言)

    千次阅读 2021-01-13 20:43:57
    printf(“请输入a b\n”) ;//提示输入 scanf("%d%d",&a,&b);//读取ab c=a+b;//不同于换 如2+3=5 也就是a+b=5 a=c-a;//a=5-a;a=3 b=c-b;//b=5-b;b=2 printf(“b=%d\na=%d”,a,b);//换行输出 ret
  • C语言中利用Swap函数交换变量ab

    千次阅读 多人点赞 2020-10-21 17:43:00
    C语言中利用Swap函数交换变量ab 常见错误写法 error1 void Sawp_error1(int a,int b) { int tmp; tmp=a; a=b; b=tmp; } int main() { int a=10; int b=20; Sawp_error1(a,b); printf("%d %d\n",a,b); ...
  • 编写程序,从键盘任意输入两个数存入变量a、b交换ab中的,输出交换后的a、b。 提示:要实现交换,需要一个中间变量t,基本语句是: t=a;a=b; b=t; #include <stdio.h> int main(){ /* 编写程序,从...
  • 在学习程序语言进行程序设计的时候,交换两个变量的是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:  int a,ba=10; b=15;  int t;  t=a; a=b;...
  • 如何交换a,b值?且不使用第三个变量!几种方法汇总 在我们的日常面试的当中,难免会遇到这样的问题。无论你使用的是什么语言,这里我使用javascript来作为演示。 一、我们先使用最简单的方法。使用临时变量。 let a...
  • #include<stdio.h> /*********Begin*********/ ... int a,b; scanf("%d%d",&a,&b); /*********Begin*********/ printf("%d %d",b,a); /*********End**********/ return 0; }
  • C语言数组的快速交换

    千次阅读 2020-11-24 16:24:49
    通过几个简单示例,直观展示“、地址、指针、数组指针”的关系与工作方式。需要自行运行下列代码,观察分析其输出结果,从而理解其中的原理。
  • C语言编程问题 编程任意输入两个实数a和b,计算下面函数的,并输出y. a-b a>b y= a/b a#includevoidmain(){\x09floata,b,y;\x09printf("inputab:\n");\x09scanf("%f%f",&a,&b);\x09if(a>b)\x09\x...
  • C语言-交换两变量的
  • 可以发现三个指针互换时,是不能交换值和地址的,只有中间*a = *b起到了作用,所以b给了a     int *p; p = a; a = b; b = p; 可以发现在函数里交换了地址,做了交换,但只在当前函数生效, 但丝毫不...
  • //写一个函数可以交换两个整型变量的(函数调用) //函数的定义 //void表示这个函数不返回任何 void Swap(int *pa, int *pb) ... printf("交换前:a = %d b = %d\n",a,b); //函数的调用 Swap(&a,&.
  • 1. 交换两个变量 输入两个整型变量交换两个变量的输出交换后的变 量 #include <stdio.h> main) { int a,b,c; scanf%d%d&a&b; c=a;a=b;b=c; printf%d%d,a,b; } 2. 输出字符ASCII 码 使用getchar)函数输入一个字母...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,254
精华内容 22,501
关键字:

交换a和b的值c语言