当前位置:首页 » 编程语言 » C语言交换模板
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

C语言交换模板

发布时间: 2022-08-23 04:28:47

c语言数值的交换

楼上的这个
a
=
a+b;
b
=
a-b;
a
=
a-b;
是个方法,是符合我们数学思维的方法,也是最初接触C语言的人可能想到的方法。
但是这样编程很不直观,不如t=a;a=b;b=t;来得快。
似乎在C++中有swap(a,
b)模板函数,直接实现a,b交换。
想玩高级一点的话,可采用“换标不换值”的方法,用数组元素作为数组的下标,这种方法换逻辑不换存储
#include
<stdio.h>
void
main()
{
int
a=10,b=20;
int
array1[2]
=
{10,20};
//存a、b值
int
array2[2]
=
{0,1};
//存下标
b
=
array1[array2[0]];
a
=
array1[array2[1]];
printf("a=%d,
b=%d\n",a,b);
}
这个方法在对结构体数组值交换中非常好用!因为结构体数组一般每个成员都有很多个值,如:
struct
student
{
int
num;
double
score;
char
name[20];
}stu[5]={{1,98,"ziguowen"},{2,88,"dongda"},{3,78,"haha"}};
//交换stu[0]和stu[1],需要
int
n;
double
s;
char
n[20];
n
=
stu[0].num;
stu[0].num
=
stu[1].num;
stu[1].num
=
n;
s
=
stu[0].score;
stu[0].score
=
stu[1].score;
stu[1].score
=
s;
strcpy(n,
stu[0].name);
strcpy(stu[0].name,
stu[1].name);
strcpy(stu[0].name,s);
//而用下标的话,一个赋值语句即可,直接交换stu[0]

stu[1]
下标后全部交换!

❷ 5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。

不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:

#include<stdio.h>

//交换给定指针指向整型变量的值。
//参数:
// a->指向第一个变量的指针
// b->指向第二个变量的指针
voidswap(int*a,int*b);

intmain(intargc,intargv)
{
inta=3,b=5;
printf_s("交换前:a=%d,b=%d ",a,b);
swap(&a,&b);
printf_s("交换后:a=%d,b=%d ",a,b);
return0;
}

//交换给定指针指向整型变量的值。
//参数:
// a->指向第一个变量的指针
// b->指向第二个变量的指针
voidswap(int*a,int*b)
{
//声明一个临时变量,保存第一个指针指向变量
//的值。
//其中*a是取出a指针指向变量的值
inttemp=*a;
//将b指针指向的值赋值给a指针指向变量
(*a)=(*b);
//将临时变量temp中保存的a指针指向变量的值赋值给
//b指针指向的变量。
(*b)=temp;
}

以上代码运行结果如下:

❸ 字符交换C语言

实现字符交换可以借助一个中间字符变量,比如要把字符变量a和b里面的内容交换,可以借助一个中间变量c,代码如下:

intmain()
{chara='O',b='J',c;
c=a;a=b;b=c;}

这样a和b里面的内容就会交换了。

当然,如果你需要写成一个函数,那必须传地址,否则函数里面的值换了,对函数外的变量没有影响。如果是写成函数要这样:

intswap(char*a,char*b)
{charc;
c=*a;
*a=*b;
*b=c;}

然后在主函数里可以这么调用:

intmain()
{chara='O',b='J';
swap(&a,&b);}

❹ c语言如何编写两个数字数值交换

我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面小编给大家分享一下。
工具/材料
Dev C++
01
首先我们在Dev C++软件中新建一个C语言项目,如下图所示
02
接下来我们在C语言文件中声明两个数字并输出,如下图所示
03
然后用一个中间变量对他们进行交换,如下图所示
04
最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了

❺ C语言编程,如何做两数交换程序

现设一个变量a
int
a;
a=m;把m的值赋给a,此时a=3,m=3,n=5;
m=n;把n的值赋给m,此时a=3,m=5,n=5;
n=a;把a的值赋给n,此时a=3,m=5,n=3;
就完成m和n的两数交换

❻ 在C语言中如何将两个数进行互换

方法1: 使用一个临时变量来进行保存,这应该也是大家最容易想到的方法,话不多说,直接上代码。

参考代码:

#include<stdio.h>
intmain()
{inta=4;
intb=5;
intnTemp;
printf("交换前a,b的值为: ");
printf("a=%d ",a);
printf("b=%d ",b);
printf(" ");
nTemp=a;
a=b;
b=nTemp;
printf("----------------------------------我是分割线------------------------------------ ");
printf("交换前a,b的值为: ");
printf("a=%d ",a);
printf("b=%d ",b);
return0;
}

运行结果:

❼ C语言交换变量值的几种方法

方法一:三变量交换。

#include<stdio.h>
intmain(void)
{
inta,b;
scanf("%d%d",&a,&b);
intt=a;a=b;b=t;
printf("%d%d ",a,b);
return0;
}

方法二:加减交换

#include<stdio.h>
intmain(void)
{
inta,b;
scanf("%d%d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d%d ",a,b);
return0;
}

方法三:异或交换

#include<stdio.h>
intmain(void)
{
inta,b;
scanf("%d%d",&a,&b);
a=a^b;b=b^a;a=a^b;//可写成a^=b^=a^=b;
printf("%d%d ",a,b);
return0;
}

方法四(黑盒测试下):不交换

#include<stdio.h>
intmain(void)
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d%d ",b,a);
return0;
}

❽ C语言交换两个数字的代码

首先要捋顺一下,先看第一段程序。这段程序的目的就是为了将两个变量的数值进行交换。此时要明白指针的使用方法,这里的交换函数是void swap(int &x, int &y),即无返回值的函数,函数传递的参数是int &x和int &y,这两个东西是什么呢?这两个东西是定义的引用,而这个我们就可以理解为是两个用来存储传递进来的参数的地址的变量(这么说可能有点乱,其实就是将调用该函数是时传递进来的变量的地址给这两个参数),所以如果在这个swap函数中对这两个参数操作时,实际上就是对传递进来的那两个变量进行操作。至于你问的关于整型的问题,这个也很好理解,在c语言里地址就是整型的,而这两个变量定义的时候也是int整型的,所以无论是地址还是值都是整型的,而又因为*a和*b是一个指针指向的值,所以*a、*b是整型,而&a、&b是指针的地址,所以也是整型。

接下来看你第二段程序(你自己写的这个):
看程序前请仔细查看关于函数方面的资料,至于你这个return为什么是错的这个问题其实很简单,首先要了解一个函数的定义,定义函数简单的可以分为有返回值和无返回值的,有返回值的定义类似这样
int abc();
float bcd();
如上所示,函数名什么的都好理解,函数名前面的"int"和"float"是指函数返回的类型,即你这个函数在执行完之后需要用return语句返回一个值,而这个返回类型就是指这个返回值的类型。
还有一种是不需要返回值的,即
void abc();
void cde();
这类函数在执行完成后不需在最后添加return语句来返回值,如果添加了也用不了。
而你写的这个函数定义的是
int swap(int x,inty)
这里声明的是一个需要返回整型变量的函数,而这个函数里你的返回值语句return后没有跟任何变量或值,程序不知道你返回的是什么东西,所以会报错,这里一般都会填写return 0;表示程序执行完成。当然这个0也可以换成整型的变量。

最后说一下你这个程序,你这个程序在执行完成后是不会将需要交换的变量a和b的值进行交换的。这个关系到形参和实参的概念,请仔细查看书籍或看一些例子,你这个只是将形参的值交换了,真正的需要交换的值不会改变,也就是说你只是将a和b的两个值复制了一份,然后将复制了的那个交换了,当swap函数完成后又将复制了的那份删除掉了,所以说,不管怎样最初的a和b都没有受到任何影响。

❾ 怎样用c语言编写两值的交换


/*
编写c语言程序,实现交换两个变量值的操作。
要求:使用形参为指针的函数swap完成交换功能。
主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换
输出交换前后的变量值进行比较。
输入输出示例:
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3

*/
//File: swap.c

#include <stdio.h>
#include <stdlib.h>

void swap(int *a, int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}

int main()
{
int *a=NULL,*b=NULL;
a=(int *)calloc(1,sizeof(int));
if(!a)
{
perror("calloc a err.");
}
b=(int *)calloc(1,sizeof(int));
if(!b)
{
perror("calloc b err.");
}

printf("Input two number:");
scanf("%d %d",a,b);
printf("Before change:a=%d,b=%d\n",*a,*b);
swap(a,b);
printf("After change:a=%d,b=%d\n",*a,*b);
return 0;
}
C:\mypro>gcc -g -Wall swap.c -o swap

C:\mypro>swap
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3

C:\mypro>
程序已调好,直接运行即可。

❿ c语言 交换 问题

#include<stdio.h>

voidswap(int*a,int*b){

intt=*a;

*a=*b;

*b=t;

}

intmain(){

inta,b,c,t;

printf("请输入三个整数:");

scanf("%d%d%d",&a,&b,&c);

if(a<b)swap(&a,&b);

if(a<c)swap(&a,&c);

if(b<c)swap(&b,&c);

printf("从大到小的顺序是:%d>%d>%d ",a,b,c);

return0;

}