任意输出两个正整数a.b.交换值后打印输出。(要求使用两种方法,第一种方法不结助中间变量t,第二种方法借助中间变量t)

拒绝者~ 2019-05-21 09:29:12
哪位大神求解,十万火急
...全文
414 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirro 2019-05-22
  • 打赏
  • 举报
回复
void swap2(int &a,int &b){//相减法 int temp; temp=a; a=b; b=temp; }
好运萝 2019-05-21
  • 打赏
  • 举报
回复

#include <iostream>
#include <limits.h>
#include <stdlib.h>
#include <iomanip>

using namespace std;
#define SWAP1(a,b) (a+=b,b=a-b,a=a-b);
#define SWAP2(a,t,b) (t=a,a=b,b=t);

void main()
{
	int a, b, t;
	printf("input a b:");
	cin >> a >> b;
	if (a >= INT_MAX || a <= INT_MIN || b >= INT_MAX || b <= INT_MIN) exit(0);
	SWAP1(a, b);
	printf("a=%d,b=%d\n", a, b);
	cout << fixed << setprecision(4) << "input a b t:";
	scanf("%d %d %d", &a, &b, &t);
	SWAP2(a, t, b);
	printf("a=%d,b=%d", a, b);
	return;
}
赵4老师 2019-05-21
  • 打赏
  • 举报
回复
#include <stdio.h>
#define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0)
char   *p1="1" ,*p2="2" ;
char    c1=1   , c2=2   ;
short   s1=1   , s2=2   ;
int     i1=1   , i2=2   ;
__int64 I1=1i64, I2=2i64;
float   f1=1.0f, f2=2.0f;
double  d1=1.0 , d2=2.0 ;
void main() {
    SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);
    SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);
    SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);
    SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);
    SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);
    SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);
    SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);

    SWAP(c1,c1);
    printf("%d\n",c1);
}
//char *         2,       1
//char           2,       1
//short          2,       1
//int            2,       1
//__int64     2,    1
//float          2,       1
//double        2,      1
//2
CaptainXue 2019-05-21
  • 打赏
  • 举报
回复
[上面的代码显示不正确,重新发:

#include <stdio.h>
using namespace std;
void swap1(int a,int b){//相减法 
	a=a+b;  //假设输入a=3 b=4两个数,a=3+4 
	b=a-b;  //交换后的b=3+4-4=3;
	a=a-b;  //交换后的a=3+4-3=4 
}
void swap2(int &a,int &b){//相减法 
	int temp;
	temp=a;
	a=b;
	b=temp;
}

int main() {
	int a, b, t;
	printf("输入两个数 a b:\n");
	scanf("%d%d",&a,&b);
	swap1(a,b);//不借助中间变量
	printf("第一次交换后a=%d,b=%d\n", a, b);
	swap2(a,b);//借助中间变量
	printf("第二次交换后a=%d,b=%d", a, b);
	return 0;
}
CaptainXue 2019-05-21
  • 打赏
  • 举报
回复
#include <stdio.h> using namespace std; void swap1(int a,int b){//相减法 a=a+b; //假设输入a=3 b=4两个数,a=3+4 b=a-b; //交换后的b=3+4-4=3; a=a-b; //交换后的a=3+4-3=4 } void swap2(int &a,int &b){//相减法 int temp; temp=a; a=b; b=temp; } int main() { int a, b, t; printf("输入两个数 a b:\n"); scanf("%d%d",&a,&b); swap1(a,b);//不借助中间变量 printf("第一次交换后a=%d,b=%d\n", a, b); swap2(a,b);//借助中间变量 printf("第二次交换后a=%d,b=%d", a, b); return 0; }

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧