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

c语言交换任意数字

发布时间: 2022-11-28 15:29:39

‘壹’ c语言用函数如何实现两个数交换

#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}

main(){int x,y;printf("请输入x与y的值,用空格隔开 ");scanf("%d%d",&x,&y);printf("x=%d,y=%d ",x,y);swap(&x,&y);printf("交换后 x=%d,y=%d ",x,y);}

(1)c语言交换任意数字扩展阅读:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

‘贰’ 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语言函数的使用,定义一个交换函数 实现2个数字的交换。

void Swap(int&x,int&y)

{

int temp=0;

temp=x;

x=y;

y=temp;

}

int main()

{

int a=1;

int b=2;

Swap(a,b);

cout<<"a="<<a<<endl;

cout<<"b="<<b<<endl;

system("pause");

return 0;

}

运行结果:

(3)c语言交换任意数字扩展阅读:

用指针交换:

void Swap(int*x,int*y)

{

int temp=0;

temp=*x;

*x=*y;

*y=temp;

}

int main()

{

int x=1;

int y=2;

Swap(&x,&y);

printf("x=%d,y=%d ",x,y);

system("pause");

return 0;

}

运行结果:

X=2;Y=1

‘肆’ 在C语言中如何将两个数进行互换

定义 A ,B, C,
把A保存到C
把B保存到A
把C保存到B
这要就OK了!
int a, b , c;
c = a;
a = b;
b = c;

‘伍’ c语言如何编写两个数字数值交换

我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面我给大家分享一下。

工具/材料

Dev C++

  • 01

    首先我们在Dev C++软件中新建一个C语言项目,如下图所示

  • 02

    接下来我们在C语言文件中声明两个数字并输出,如下图所示

  • 03

    然后用一个中间变量对他们进行交换,如下图所示

  • 04

    最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了

‘陆’ C语言怎么用自定义函数将两个数交换

要用函数实现两个数的交换,则函数参数必须定义为指针形式,否则函数中对数值的修改将不会影响主调函数,这是C语言的规则。
所以,以整型为例,自定义函数书写如下:
void
swap_int(int*a,int*b)
{
int
t;
t
=
*a;
*a=*b;
*b=t;
}

‘柒’ C语言交换两个数字

#include<stdio.h>
void
swap(int
&x,
int
&y)
{
int
t;
t=x;
x=y;
y=t;
}
void
main()
{
int
a=3,
b=4;
swap(a,b);
printf("a=%d
b=%d",a,b);
}
为什么
&x,&y是整形?为什么有时候*a
*b也能是整形???
//==================================================================
上边这个程序能正常编译码,应该报错的
void
swap(int
&x,
int
&y)
的定义不正确
改成void
swap(int
*x,
int
*y),参数是整型指针,
而你的swap(a,b);传递的是整型变量而不是指针
改成swap(&a,&b);,
这是C语言的指针的知识,也是C语言最诡异的东西
//==================================================================
这是我自己写的
为什么return有错误呢?
#include<stdio.h>
int
swap(int,int);
main()
{
int
a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d
%d",a,b);
}
int
swap(int
x,int
y)
{
int
t;
t=x,x=y,y=t;
return;
}
//=================================================
int
swap(int
x,int
y)的参数是整型变量,
传递的是形式参数
swap(a,b);
虽然传递了参数,但是传递的是形式参数,
在swap函数的处理是不会改变a,b,的值的
//================================================
建议参考C语言参数传递和C语言指针的知识

‘捌’ c语言中如何实现任意数据类型变量值得交换

#include<stdio.h>
#define SCANF(m) scanf("%"#m"%"#m,&m##a,&m##b)
#define PRINTF(m) printf("交换结果:%"#m"\t%"#m"\n",m##a,m##b)
void swap(char,void*,void*,void*);
int main()
{
unsigned ua,ub,ut;
int da,db,dt;
float fa,fb,ft;
double lfa,lfb,lft;
char ca,cb,ct,ch;
printf("数据类型:");
printf("u-无符号整型\ti-有符号整型\tf-单精度实型\td-双精度实型\tc-字符型\n");
printf("请选择\n");
scanf("%c",&ch);
fflush(stdin);
printf("请输入两个指定类型的数据:");
switch(ch)
{
case 'u':SCANF(u);swap(ch,&ua,&ub,&ut);PRINTF(u);break;
case 'i':SCANF(d);swap(ch,&da,&db,&dt);PRINTF(d);break;
case 'f':SCANF(f);swap(ch,&fa,&fb,&ft);PRINTF(f);break;
case 'd':SCANF(lf);swap(ch,&lfa,&lfb,&lft);PRINTF(lf);break;
case 'c':SCANF(c);swap(ch,&ca,&cb,&ct);PRINTF(c);break;
}
}
void swap(char c,void *p1,void *p2,void *p3)
{
switch(c){
case 'u':*(unsigned *)p3=*(unsigned *)p1;*(unsigned *)p1=*(unsigned *)p2;*(unsigned *)p2=*(unsigned *)p3;break;
case 'i':*(int *)p3=*(int *)p1;*(int *)p1=*(int *)p2;*(int *)p2=*(int *)p3;break;
case 'f':*(float *)p3=*(float *)p1;*(float *)p1=*(float *)p2;*(float *)p2=*(float *)p3;break;
case 'd':*(double *)p3=*(double *)p1;*(double *)p1=*(double *)p2;*(double *)p2=*(double *)p3;break;
default :*(char *)p3=*(char *)p1;*(char *)p1=*(char *)p2;*(char *)p2=*(char *)p3;break;
}
} 这个是我帮我一个兄弟做的,你看行不?

‘玖’ "将任意的两位整数y的个位数和十位数交换",用c语言来表示

思路:先求出这个两位数十位和个位数,把个位乘以10加上十位上的数就是交换后的数。

参考代码:

#include<stdio.h>
intmain()
{
intn,m;
scanf("%d",&n);
m=(n%10)*10+n/10;
printf("%d ",m);
return0;
}
/*
运行结果:
36
63
*/

‘拾’ C语言数值的交换

1
a
b中oxa23错误;c
4c1.5错误;d
10,000错误
2
c
for是关键字不能他用。
3
b
(1/2)*(a+b)*h中(1/2)直接为0,要想一样应该为:(1.0/2)或(1/2.0)
4
d
k+1没有改变k的值。
5
d
kk>=48
&&
kk<91,这个范围的符号不仅有大写字母还有别的。
6.正确,这是因为putchar()包含在改头文件中。
n=n/10;