怎么用三目运算符编写这个程序?

coding_my_life 2011-11-13 10:10:43
从键盘任意输入两个数num1、num2,通过转换,让小数存放在num1,大数存放在num2。
并输出num1,num2和最大数 !

只能用三目运算符来编写,怎么编写呢?
...全文
262 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamnobody 2011-11-13
  • 打赏
  • 举报
回复
一个相当有技巧的做法,请给分。。。



int main(){
int num1,num2,max,sum;
scanf("%d",&num1);
scanf("%d",&num2);
sum = num1 + num2;
max = num1 > num2 ? num1 : num2;
num1 = sum - max;
num2 = sum - num1;
printf("%d,%d,%d",num1,num2,max);
system("pause");
return 0;

}

coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wizard_tiger 的回复:]

写个C语言的,应该可以。
C/C++ code

#include<stdio.h>

int main()
{
int num1,num2,n;
scanf("%d%d",&num1,&num2);
(num1>num2)?(n=num1,num1=num2,num2=n): ;
printf("%d,%d,%d",num1,num2,num……
[/Quote]
运行3楼的程序,会报错:error C2059: 语法错误 : “;”
在“:”后加一个“num1”可以成功运行,但不知道能说的通不?
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 anyidan 的回复:]

从键盘任意输入两个数num1、num2

是整数吗?
[/Quote] 整数、实数都行!
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
这个可以随便,整数、实数都ok !
AnYidan 2011-11-13
  • 打赏
  • 举报
回复
从键盘任意输入两个数num1、num2

是整数吗?
AnYidan 2011-11-13
  • 打赏
  • 举报
回复
scanf("%d%d",&num1,&num2);
--》scanf("%d %d",&num1,&num2);
cai0538 2011-11-13
  • 打赏
  • 举报
回复
1楼跟三楼都可以,1楼的巧妙之处在于没有利用到中间变量。
AnYidan 2011-11-13
  • 打赏
  • 举报
回复
这样写有多少人能一下看明白,混账要求
wizard_tiger 2011-11-13
  • 打赏
  • 举报
回复
写个C语言的,应该可以。

#include<stdio.h>

int main()
{
int num1,num2,n;
scanf("%d%d",&num1,&num2);
(num1>num2)?(n=num1,num1=num2,num2=n): ;
printf("%d,%d,%d",num1,num2,num2);
return 0;
}
woshiwaiwai 2011-11-13
  • 打赏
  • 举报
回复
楼上正解
num1 = num1 ^ num2,num2 = num1 ^ num2,num1 = num1 ^ num2这个对你很有用 记下吧
不使用临时变量 交换两个数据空间的数据
以后会常使用的
無_1024 2011-11-13
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>

using namespace std;

int main()
{
int num1 = 15,num2 = 10;
int max = ( num1 > num2 ) ? ( num1 = num1 ^ num2,num2 = num1 ^ num2,num1 = num1 ^ num2,num2) : num2;
cout << num1 << ends << num2 << ends << max << endl;
return 0;
}
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 coding_my_life 的回复:]

引用 16 楼 lijy520 的回复:

弱弱的问下 ^ 是什么意思啊
^ 是双目运算符:按位与运算符
运算规则:参与运算的两个值,如果两个相应位相同,则位于为0,否则为1。
即:0^0=0, 1^0=1, 0^1=1, 1^1=0
他们说的下面这个:
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
……
[/Quote]异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a.
这里有详解http://blog.csdn.net/kybd2006/article/details/3727218
而此处 num2=num1^num2^num1 便实现了互换!
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lijy520 的回复:]

弱弱的问下 ^ 是什么意思啊
[/Quote] ^ 是双目运算符:按位与运算符
运算规则:参与运算的两个值,如果两个相应位相同,则位于为0,否则为1。
即:0^0=0, 1^0=1, 0^1=1, 1^1=0
他们说的下面这个:
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
我是用特别笨的方法算出来的,就是带的值,换成2进制来算的
C语言中该有什么直观的解释的!
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mingliang1212 的回复:]

一个相当有技巧的做法,请给分。。。

C/C++ code


int main(){
int num1,num2,max,sum;
scanf("%d",&num1);
scanf("%d",&num2);
sum = num1 + num2;
max = num1 > num2 ? num1 : num2;
num1 = ……
[/Quote]
这是个好思路,受你启发,我又想到了只定义两个变量来实现输出!下面写出来,不足之处请大家指正

#include<stdio.h>
int main()
{
int num1,num2;
scanf("%d%d",&num1,&num2);
(num1>num2) ?
( num1 = num1 + num2,
num2 = num1 - num2,
num1 = num1 - num2 ) : num2;
printf("%d %d %d",num1,num2,num2);
}
金元520 2011-11-13
  • 打赏
  • 举报
回复
弱弱的问下 ^ 是什么意思啊
BT六眼飞鱼 2011-11-13
  • 打赏
  • 举报
回复

int a = 1;
int b = 2;
a ^= b ^= a ^=b;
printf("a=%d,b=%d",a,b);
return 0;//哈哈 迷糊了吧~
woshiwaiwai 2011-11-13
  • 打赏
  • 举报
回复
要一起用
逗号分隔符。
你要是看不习惯
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 woshiwaiwai 的回复:]

楼上正解
num1 = num1 ^ num2,num2 = num1 ^ num2,num1 = num1 ^ num2这个对你很有用 记下吧
不使用临时变量 交换两个数据空间的数据
以后会常使用的
[/Quote]
这三个式子要一起用吗 ? 它们是实现num1 与 num2 互换阿?没闹懂啊!
coding_my_life 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnuqinhuan 的回复:]

C/C++ code

#include <iostream>
#include <string>

using namespace std;

int main()
{
int num1 = 15,num2 = 10;
int max = ( num1 > num2 ) ? ( num1 = num1 ^ num2,num2 = num1 ^ num2,num1 = n……
[/Quote]
这也太复杂点了吧,而且我用VS2008运行,会报错咯 !

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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