用swap 交换两个数

#include<stdio.h>
main()
{
 void swap(int *p1,int *p2);//定义swap函数,用于交换。
 int *p,*q;
 int a,b; //定义两个指针变量和两个数a和b
 printf("请输入两个数:");
 scanf("%d,%d",&a,&b);//输入两个数
 p=&a;
 q=&b;//将p和q分别指向a和b的地址
 swap(p,q);//调用swap函数对p和q执行交换
 
 printf("\n经过交换为:%d,%d",a,b);//输出交换后a和b的值
}

void swap(int *p1,int *p2)//定义函数内容
 {
 
 int temp;
 temp=*p1;
    *p1=*p2;
 *p2=temp;//用变量temp实现p1与p2的交换

总结:1 编程后想调用函数应用指针*temp来交换p1与p2的,后来运行结束后发现没有交换,后来用将 *temp赋给其他变量才得以交换,不过复杂了很多,多此一举,所以用变量temp最为合适。

2 运行是逗号没有发现是中文的,导致久久没有发现问题,所以一定细心编程,及时修改错误。

3 通过调用函数来实现指针间的交换地址,进而实现交换两个数,所以修改数可以直接通过指针直接来对数的修改,比正常运用函数来修改数更为便利。

时间: 2024-08-05 13:57:05

用swap 交换两个数的相关文章

void swap(int a,int b)这样一个函数原型能交换两个数么?可以!!

昨天在指导别人指针的时候,突发奇想想到这么一道题,我觉得挺有意思的,发给大家看看,虽然不是什么很高级的技术,但是是个很有趣的思路..... 题目就是: void swap(int a,int b)这个函数原型,不能用全局变量与静态变量的情况下,怎么实现交换两个数? 如果你有兴趣可以思考一下,如果没兴趣就直接看下面的答案吧. --------------------------------------------------华丽的分割线-------------------------------

用多种方法交换两个数的值

今天上了C语言课,老师讲了有关交换两个数的问题.课后,经过自己的思考和总结,我得出了以下几种方法.虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见.其他的方法待补充奥... 法一: 大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换.下面是实现它的代码: #include<stdio.h> int main() {   int num1=5,num2=10,tmp=0;   printf("before:\n");   prin

c语言函数实现交换两个数的值

代码: 1 #include <stdio.h> 2 3 void swap(int x,int y) 4 { 5 int temp; 6 7 temp = x; 8 x = y; 9 y = temp; 10 printf("In swap: x = %d,y = %d\n",x,y); 11 } 12 13 void swap_with_pt(int * x,int * y) 14 { 15 int temp; 16 17 temp = *x; 18 *x = *y;

c语言实现交换两个数的值

C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: 1 // 异或, a^=b^=a^=b; 2 a ^= b; 3 b ^= a; 4 a ^= b; 5 6 // 加减 7 a = a + b; 8 b = a - b; 9 a = a - b; 10 11 // 乘除 12 a = a * b; 13 b = a / b; 14 b = a/ b; 使用中间变量: 1 // 需临时空间 2 temp = a; 3 a = b; 4 b = temp; 正如你所

交换两个数的C语言程序

今天是第一次接触C语言,之前有一点C++的基础,所以学习起来还挺顺手的.下来分享一下写的一个关于交换两个数的C语言代码.可能这些还存在很大的问题,希望大家可以指正. 方法一:允许创建第三个变量 #include<stdio.h> int main() { int a=10; int b=20; int tmp=a; a=b; b=tmp; printf("%d\n",a); printf("%d\n",b); return 0; } 方法二:不创建新的变

异或交换两个数的陷阱【转】

前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量. 如下面: void exchange(int &a, int &b) { a ^= b; b ^= a; a ^= b; } 然而,这里面却存在着一个非常隐蔽的陷阱. 通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &b[j]), 这儿如果i==j了(这种情况是很可能发生的),得到的结果就并非我们所期望的. void main() { int a[2] = {1, 

异或交换两个数;实现pow(int x, int y) ,即x的y次方

问题1:异或交换两个数 假设x=2:y=3,我们的目标是(没有蛀牙!!)交换x,y的值: 利用异或的特殊性:x^x=0 即两个相同数字异或后值为0: 解决: 令x=x^y=2^3 令y=x^y=x^y^y=2^3^3=2(此时x=x^y) 令x=x^y=x^y^2=2^3^2=3(此时x=x^y:y=2) 问题2:实现pow(int x, int y) ,即x的y次方 x的y次方就是有y个x连续乘机,代码如下: #include <stdio.h> #include <stdlib.h&

不使用中间变量交换两个数. 求平均数考虑溢出

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> //不使用中间变量交换两个数的值 void exchange_num(int *a, int *b) { ①* a =*a + *b;    //适用范围广 * b = *a -* b; * a =* a - *b; ②* a = (*a )*(*b); * b = (*a )/(*b); * a = (*a ) / (*b);//当两个数有

如何不使用第三个变量来交换两个数的值

最近在看<c++从入门到精通>自学c++,里面有一道课后题是如何做到不适用第三个变量来交换两个数的值,以下是我在网上查找到的资料,记录下并作为笔记. 题目:a=10,b=15,将a / b的值互换. 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下:      int a,b;      a=10; b=15;      int t;      t=a; a=b; b=t;      这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用