题目描述:
知名数学家田所浩二先生证明了:
9>10
证明:写下两个数的十进制表示:
9.
10
观察这两个数字从前到后第一个不相同的数字,由于9>1,因此9>10。
用同样的方法,我们可以很容易地证明1919>114514:
1919..
114514
或者是999>99:
99.
999
现在,请你给田所浩二先生写一个程序,用来比较两个输入的数字。
输入格式:
第一行一个整数T(1≤T≤106) ,表示有T组数据
接下来T行,每行两个整数a,b(1≤a,b≤109)
输出格式:
输出总共T行,对于第i行:
如果"a>b",则输出:>
如果"a=b",则输出:=
如果"a<b",则输出:<
输入样例:
5 9 10 114514 1919 999 99 131 131 1314 520
输出样例:
> < > = <
提示:
为避免输出超时,请使用cout << "\n"替代cout << endl
解题思路:
采用IPO思路实现功能:
(1)I:
首先输入T;
然后因为循环次数已知,采用for循环输入T组数据;
这里将两个数字视为字符串录入,便于比较
(2)P和O
定义变量index并初始化为1,用于判断退出for循环的方式是否为break;
每输入一组数据,获取字符串长度并进行for循环;
循环遍历比较每一个对应位置上的“数字”,输出“数字”不同时的结果;
循环结束后通过index,以及j与len_A、len_B的大小关系,输出“数字”相同时的结果;
代码如下:
#include <iostream> #include <string> using namespace std; int main() { long long num; cin >> num; if (num < 1 && num > 1000000) { return 0; } string A, B; for (int i = 0; i < num; i++) { int index = 1; cin >> A >> B; int j, len_A = A.size(), len_B = B.size(); for (j = 0; j < len_A && j < len_B; j++) { if (A[j] == B[j]) { continue; } else if (A[j] > B[j]) { cout << ">" << endl; index = 0; break; } else if (A[j] < B[j]) { cout << "<" << endl; index = 0; break; } else { ; } } if (index) { if (j == len_A && j == len_B) { cout << "=" << endl; } else if (j == len_A) { cout << "<" << endl; } else if (j == len_B) { cout << ">" << endl; } else { ; } } } return 0; }