c语言交换
❶ c语言中是怎么实现交换的···
交换成功的因为他是地址传递,交换不成功是值传递,值传递的内在含义就是在函数体内生成x,y复制品,只是复制出来的x,y进行交换,函数运行结束,对原值没有改变。
❷ C语言编程,如何做交换
#include<stdio.h>
#include<string.h>
#define N 7
void main()
{
int i=0;
int num;
char a[N],b[64];
int count;
printf("请输入要加密的数据:\n");
scanf("%s",a );
a[N-1]=0;
printf("加密后的数据是:\n");
memset( b,0,sizeof(b) );
conut = strlen[a];
for( i=0;i<count;i++ )
{
b[i] = a[count-i-1];
}
printf("%s\n",b);
}
用字符串比用int型好处理多了。
❸ C语言关于交换语句
……你写成T=A=B……是什么意思你自己理解下吧……
T=A=B语句的意思:因为=的运算顺序是左结合的,所以这个语句的意思就是:先把B的值赋给A,然后A把现在的值赋给T,最后T就是B的值了……
❹ 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语言中如何实现两个字符的交换
有多种方法:
1 最常用的,中间变量法。
使用第三个中间变量交换a,b的值。
char a='-', b='+',c;
c = a;
a = b;
b = c;
实现a,b值的交换。
2 利用加减法交换。
交换a,b值可以用
a+=b;
b=a-b;
a=a-b;
3 利用异或交换:
交换a,b值的代码为:
a^=b;
b=a^b;
a=a^b;
❻ 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] 下标后全部交换!
❼ C语言中怎样交换两个字符串
C语言中交换两个字符串需要借助strcpy函数或者使用自定义交换函数进行交换
如交换a,b数组中的字符串代码:
chara[10]="abed",b[10]="efg",t[10];
strcpy(t,a);//a复制给t
strcpy(a,b);//b复制给a
strcpy(b,t);//t复制给b
附:strcpy函数详情
原型声明:
char*strcpy(char*dest,constchar*src);
头文件:
#include<string.h>和#include<stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
❽ C语言中的交换问题
首先a=a+b.
因此,
b=a-b=(a+b)-b=a,
现在b被赋值为a了,a的值还是a+b,
所以
a=a-b=(a+b)-a=b.
❾ c语言如何编写两个数字数值交换
我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面小编给大家分享一下。
工具/材料
Dev C++
01
首先我们在Dev C++软件中新建一个C语言项目,如下图所示
02
接下来我们在C语言文件中声明两个数字并输出,如下图所示
03
然后用一个中间变量对他们进行交换,如下图所示
04
最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了