|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- string a,b;
- cin>>a>>b;
- int l=a.length();
- int r=b.length();
- int i=0,j=0;
- while(a[i]=='0')
- {
- i++;
- }
- while(b[j]=='0')
- {
- j++;
- }
- if(l-i<r-j)cout<<"<"<<endl;
- if(l-i>r-j)cout<<">"<<endl;
- else if(l-i==r-j)
- {
- int flag=1;
- for(int k=0;k<l-i;k++)
- {
- if(a[k+i]!=b[k+i])
- {
- if(a[k+i]<b[k+i])
- {
- cout<<"<"<<endl;
- }
- else
- {
- cout<<">"<<endl;
- }
- return 0;
- }
- else
- {
- flag=0;
-
- }
- }
- if (!flag)cout<<"="<<endl;
-
- return 0;
- }
- }
复制代码
为什么输入12345跟00012345不是输出“=”呢,应该怎么修改代码
本帖最后由 柿子饼同学 于 2023-11-27 20:41 编辑
你代码的问题如下 :
第 27 行的 b[k + i] 应改成 b[k + j]
10 - 17行最好加一个判断防止越界
22 行的 flag 不需要 , 因为后面判断出大小之后是直接 return 0 的 , 之后就没了 , 所以判断完如果全相等就直接输出相等
下面是我修改的代码 :
- #include <bits/stdc++.h>
- using namespace std;
- string a, b;
- int l, r, i, j;
- int main(){
- ios::sync_with_stdio(0);
- cin.tie(0);
-
- cin >> a >> b;
- l = a.size();
- r = b.size();
- while(i < l && a[i] == '0') i++;
- while(j < r && b[j] == '0') j++;
- if(l - i < r - j) cout << "<\n";
- else if(l - i > r - j) cout << ">\n";
- else{
- for(int k = 0; k < l - i; k++){
- if(a[k + i] != b[k + j]){
- if(a[k + i] < b[k + i]) cout << "<\n";
- else cout << ">\n";
- return 0;
- }
- }
- cout << "=\n";
- }
-
- return 0;
- }
复制代码
|
|