记录8
#include <bits/stdc++.h>
using namespace std;
int f(int x){
int t=0;
while(x){
int n=x%10;
t=t*10+n;
x/=10;
}
return t;
}
int main() {
int a,b;
cin>>a>>b;
a=f(a);
b=f(b);
if(a>b) cout<<a;
else cout<<b;
return 0;
}
突破点
a 和 b 翻转后的较大数
思路
常规思路,反转数字后比较,反转数字可通过数位分离实现
代码简析
int f(int x){
int t=0;
while(x){
int n=x%10;
t=t*10+n;
x/=10;
}
return t;
}
对于任意整数适用的反转数字函数,t=t*10+n;是代码的实现原理,将数向左推一位,实现增大数位
例如:123转换过程: 0*10+3 → 3*10+2 → 32*10+1 →321
补充1
因为题目数据限定为三位数
对于 100% 的数据,100≤a,b≤999,a,b 不含 0 或不为 0。
所以此题目也可用另一种办法,字符逐步比较,字符的位数相同,可以直接对齐比较
#include <bits/stdc++.h>
using namespace std;
int main() {
string a,b;
bool f=true;
cin>>a>>b;
for(int i=2;i>=0;i--){
if(a[i]>b[i]) break;
if(a[i]<b[i]){
f=false;
break;
}
}
for(int i=2;i>=0;i--){
if(f) cout<<a[i];
else cout<<b[i];
}
return 0;
}
思路:
bool f=true; 默认输入的第一个数(a)是大的,f为true时a大,f为false时b大
输入后在for循环里面进行比较,遇到大的数就跳出。
注:if后不可以直接写else,因为等于的情况,二者没分出大小,还需继续比较
for(int i=2;i>=0;i--)中int i=2是因为知道是三位数(下标0~2)
如果仅仅知道数的长度一样, int i=2可改为int i=a.size()
补充2
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
cout << (a > b ? a : b);
}
如果掌握reverse反转字符串函数跟三目运算符也可快速出结果
在C++中,三目运算符(Ternary Operator)之所以被称为“三目”运算符,是因为它涉及三个操作数。这三个操作数分别是:
条件表达式(Condition):
一个布尔表达式,用于判断条件是否为真。
如果条件为真(
true),则返回第二个操作数的值。如果条件为假(
false),则返回第三个操作数的值。真值表达式(True Expression):
如果条件为真,返回这个表达式的值。假值表达式(False Expression):
如果条件为假,返回这个表达式的值。语法
三目运算符的语法如下:
condition ? exprTrue : exprFalse示例
以下是一个简单的示例,展示如何使用三目运算符:
#include <iostream> using namespace std; int main() { int a = 10, b = 20; int max = (a > b) ? a : b; cout << "Max: " << max << endl; // 输出:Max: 20 return 0; }在这个例子中:
条件表达式:
a > b真值表达式:
a假值表达式:
b为什么叫“三目”
“三目”这个术语来源于“三目运算符”涉及三个操作数。在C++中,运算符的名称通常根据其操作数的数量来命名。例如:
一元运算符(Unary Operator):一个操作数,如
!(逻辑非)、++(自增)。二元运算符(Binary Operator):两个操作数,如
+(加法)、*(乘法)。三元运算符(Ternary Operator):三个操作数,即条件表达式、真值表达式和假值表达式。
注意事项
类型匹配:
exprTrue和exprFalse的类型必须兼容,否则编译器会报错。如果类型不匹配,编译器会尝试进行隐式类型转换,但可能会导致未定义行为。
可读性:
三目运算符虽然简洁,但嵌套过多会使代码难以阅读。建议在逻辑简单时使用,复杂逻辑建议使用
if-else语句。副作用:
如果
exprTrue或exprFalse中有副作用(如变量的修改),可能会导致意外行为。建议避免在三目运算符中使用有副作用的表达式。总结
三目运算符是一种简洁的条件表达式,适用于简单的条件判断和赋值。它被称为“三目”运算符,是因为它涉及三个操作数:条件表达式、真值表达式和假值表达式。
C++三目运算符与数字反转题解

1133

被折叠的 条评论
为什么被折叠?



