lsmCC 发表于 2023-11-27 19:42:14

求助,修改代码

#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=='0')
    {
      i++;   
    }
    while(b=='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!=b)
            {
                if(a<b)
                {
                  cout<<"<"<<endl;
                }
                else
                {
                  cout<<">"<<endl;
                }
                return 0;
            }
            else
            {
                flag=0;
               
            }
      }
      if (!flag)cout<<"="<<endl;
      
      return 0;
    }

}
为什么输入12345跟00012345不是输出“=”呢,应该怎么修改代码

FishC_GPT 发表于 2023-11-27 19:42:26

你的代码中有几个问题。首先,while循环的条件应该是判断a[ i]是否为'0',而不是判断整个字符串a是否等于'0'。同样地,第二个while循环的条件应该是判断b是否为'0'。

另外,你在每个while循环中都没有更新i和j的值,所以如果进入循环,会变成一个无限循环。你需要在循环体中增加i++和j++语句。

最后,如果a和b中都没有前导0,即i和j都等于0,那么直接输出l-r即可。

以下是修改后的代码:

#include <iostream>
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 == '0')
    {
      i++;
    }
    while (b == '0')
    {
      j++;
    }
    if (i == 0 && j == 0)
    {
      cout << l - r << endl;
    }
    else
    {
      cout << l - r + i - j << endl;
    }
    return 0;
}

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

lsmCC 发表于 2023-11-27 20:09:53

FishC_GPT 发表于 2023-11-27 19:42
你的代码中有几个问题。首先,while循环的条件应该是判断a是否为'0',而不是判断整个字符串a是否等于'0'。 ...

无语了

FishC_GPT 发表于 2023-11-27 20:10:08

lsmCC 发表于 2023-11-27 20:09
无语了

抱歉,我之前的回答存在一些错误。以下是正确的代码:

#include <iostream>
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 (i < l && a == '0') {
      i++;
    }
    while (j < r && b == '0') {
      j++;
    }

    if (l - i > r - j) {
      cout << ">" << endl;
    } else if (l - i < r - j) {
      cout << "<" << endl;
    } else {
      cout << "=" << endl;
    }

    return 0;
}

这段代码可以比较两个字符串a和b的大小,如果a大于b,则输出">";如果b大于a,则输出"<";如果a等于b,则输出"="。注意,这里的比较是基于字符串长度减去前导零后的结果进行的。希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

柿子饼同学 发表于 2023-11-27 20:39:43

本帖最后由 柿子饼同学 于 2023-11-27 20:41 编辑

你代码的问题如下 :
        第 27 行的 b 应改成 b
        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 == '0') i++;
    while(j < r && b == '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 != b){
                if(a < b) cout << "<\n";
                else cout << ">\n";
                return 0;
            }
      }
      cout << "=\n";
    }
   
    return 0;
}

jackz007 发表于 2023-11-27 22:24:37

本帖最后由 jackz007 于 2023-11-27 22:27 编辑

#include <bits/stdc++.h>
using namespace std                              ;
int main()
{
    int i , j , k , l , r , flag               ;
    string a , b                                 ;
    cin >> a >> b                              ;
    l = a . length()                           ;
    r = b . length()                           ;
    for(i = 0 ; a == '0' ; i ++)            ;
    for(j = 0 ; b == '0' ; j ++)            ;
    if(l-i == r-j) {
      for(flag = k = 0 ; k < l - i ; k ++) {
            if(a != b ) {
                if(a < b) flag = 1 ;
                else flag = 2                  ;
                break                            ;
            }
      }
      if(flag == 0) cout<<"="<<endl            ;
      else if (flag == 1) cout<<">"<<endl      ;
      else cout<<"<"<<endl                     ;
    }
}
页: [1]
查看完整版本: 求助,修改代码