hzx20100915 2022-12-12 19:22 采纳率: 75%
浏览 20
已结题

帮我看看该怎么写(c++)


#include<bits/stdc++.h>
using namespace std;
int main(){
    string s,s1;
    getline(cin,s);
    getline(cin,s1);
    if(s.size()>s1.size()){
        cout<<">";
        return 0;
    }else if(s.size()<s1.size()){
        cout<<"<";
        return 0;
    }else if(s.size()==s1.size()){
        cout<<"=";
        return 0;
    }else{
        for(int i=0;i<s.size();i++){
            for(int j=0;j<s1.size();j++){
                if(s[i]>='a'&&s[i]<='z'&&s1[i]>='a'&&s1[i]<='z'){
                    s[i]=s[i]-'a'+'A';
                    s1[i]=s1[i]-'a'+'A';
                }else if(s[i]>='A'&&s[i]<='Z'&&s1[i]>='A'&&s1[i]<='Z'){
                    s[i]=s[i]-'a'+'A';
                    s1[i]=s1[i]-'a'+'A';
                }else if(s[i]>='a'&&s[i]<='z'&&s1[i]>='A'&&s1[i]<='Z'){
                    s[i]=s[i]-'a'+'A';
                    s1[i]=s1[i]-'A'+'a'; 
                }else if(s[i]>='A'&&s[i]<='Z'&&s1[i]>='a'&&s1[i]<='z'){
                    s[i]=s[i]-'A'+'a';
                    s1[i]=s1[i]-'a'+'A';
                }
                if(s[i]==s1[i]){
                    cout<<"=";
                    return 0;
                }else if(s[i]<s1[i]){
                    cout<<"<";
                    return 0;
                }else{
                    cout<<">";
                    return 0;
                }
            }
        }
    }
    return 0;
}

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

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

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

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

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

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

样例
输入数据 1
Hello, how are you?
hello, How are you?
输出数据 1
=
输入数据 2
ABC
ABCD
输出数据 2
<
输入数据 3
ACD
ABCD
输出数据 3

写了好久,一直都是错的,有没有会的,帮我看看
注:最好是代码

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-12 19:40
    关注

    for循环是j,末尾成了i++

    int main()
    {
        char s[8080], s1[8080];
        cin.getline(s, 8080); // 读取一行,包含空白字符
        cin.getline(s1, 8080);
        int len = strlen(s);
        int len1 = strlen(s1);
    
        if (len < len1)
            cout << "<";
        else if (len > len1)
            cout << ">";
        else // 长度一样才需要进行字符比较
        {
            int j;
            for (j = 0; j < len; j++)
            {
                s[j] = toupper(s[j]);
                s1[j] = toupper(s1[j]);
                if (s[j] != s1[j])
                    break;
            }
    
            if (s[j] > s1[j])
                cout << ">";
    
            else if (s[j] < s1[j])
                cout << "<";
    
            else if (s[j] == s1[j])
                cout << "=";
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月5日
  • 已采纳回答 1月28日
  • 修改了问题 12月12日
  • 创建了问题 12月12日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵