方法 1:(引进变量)
可以认为a、b、c各占一个小格,小格里可以放入数字。具体步骤为:
程序如下:
#include <stdio.h>
int main()
{
int a,b,c
scanf("%d %d",&a,&b)
c=a;
a=b
b=c
printf("a=%d b=%d\n",a,b)
return 0
}
方法 2:()
两个数的互换可以用式子:
a=b-ab=b-aa=b+a来实现。
程序如下:
#include<stdio.h>
int main()
{
int a,b
scanf("%d %d",a,b)
a = a + b
b = a - b
a = a - b
printf("a=%d,b=%d", a, b)
return 0
}
方法 3:(指针)
程序如下:
#include<stdio.h>
int fun(int *p, int *q)
{
int tmp = *p
*p = *q
*q = tmp
}
int main()
{
int a,b
scanf("%d %d",&a,&b)
printf("%d,%d\n", a, b)
fun(&a, &b)
printf("%d,%d\n", a, b)
return 0
}
首先要捋顺一下,先看第一段程序。这段程序的目的就是为了将两个变量的数值进行交换。此时要明白指针的使用方法,这里的交换函数是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语言的时候,经常需要将两个数字交换,那么如何实现呢?下面我给大家分享一下。
工具/材料Dev C++
01首先我们在Dev C++软件中新建一个C语言项目,如下图所示
02接下来我们在C语言文件中声明两个数字并输出,如下图所示
03然后用一个中间变量对他们进行交换,如下图所示
04最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)