求助,修改代码
#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不是输出“=”呢,应该怎么修改代码 你的代码中有几个问题。首先,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官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-11-27 19:42
你的代码中有几个问题。首先,while循环的条件应该是判断a是否为'0',而不是判断整个字符串a是否等于'0'。 ...
无语了 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: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: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]