求助!这道题哪里错了?
  • 板块学术版
  • 楼主bobi0577
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/10/18 20:09
  • 上次更新2023/10/27 06:58:47
查看原帖
求助!这道题哪里错了?
734982
bobi0577楼主2022/10/18 20:09

一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 \text{ASCII}ASCII 码值大小比较),直到出现不同的字符或遇到\0为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准(注意:如果某个字符串遇到\0,而另一个字符串还未遇到\0,则前者小于后者)。

但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如Hello和hello在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。

输入 输入为两行,每行一个字符串,共两个字符串。(每个字符串长度都小于 8080)

输出 如果第一个字符串比第二个字符串小,输出一个字符<;

如果第一个字符串比第二个字符串大,输出一个字符>;

如果两个字符串相等,输出一个字符=。

样例

输入

Hello, how are you? hello, How are you?

输出

=

#include<iostream>
/*#include<string.h>
#include<cstdio>
#include<algorithm>*/
using namespace std;
string s,s2;
int strcmp(string s1,string s2){
    if(s1.length()>s2.length())return 0x3f3f3f;
    if(s1.length()<s2.length())return -0x3f3f3f;
    for(int i=0;i<s1.length();i++){
        if(s1[i]<s2[i])return -0x3f3f3f;
        if(s1[i]>s2[i])return 0x3f3f3f;
    } 
    return 0;
}
int main(){
    getline(cin,s);
    getline(cin,s2);
    for(int i=0;i<s.length();i++){
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')s[i]=tolower(s[i]);
    }
    for(int i=0;i<s2.length();i++){
        if(s2[i]>='a'&&s2[i]<='z'||s2[i]>='A'&&s2[i]<='Z')s2[i]=tolower(s2[i]);
    }
    if(!strcmp(s,s2))cout<<'=';
    else if(strcmp(s,s2)<0)cout<<'<';
    else cout<<'>';
}

这个哪里错了?

2022/10/18 20:09
加载中...