【0931】 2023-10-14 20:58 采纳率: 86.4%
浏览 4
已结题

C语言程序不知道哪里错了

img


我想字符串1>字符串2就打印1
字符串1<字符串2就打印2
等于就打印3
为什么这个字符串无论怎样都打印1
可以帮我修改一下吗

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 22:59
    关注

    【以下回答由 GPT 生成】

    问题的原因在于使用了break语句,导致只比较了两个字符串的首字母,而没有继续比较后续字母。正确的做法是遍历每个字符,并在比较完所有字符后根据结果输出对应的数字。以下是修改后的代码:

    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char str1[] = "Shenzhen";
        char str2[] = "Guangfggsxg";
        int result = 0;
    
        // 获取两个字符串的长度
        int len1 = strlen(str1);
        int len2 = strlen(str2);
    
        // 比较两个字符串
        int i;
        for (i = 0; i < len1 && i < len2; i++) {
            if (str1[i] > str2[i]) {
                result = 1;
                break;
            }
            else if (str1[i] < str2[i]) {
                result = 2;
                break;
            }
        }
    
        // 如果两个字符串前面所有字符都相等,则比较字符串长度
        if (result == 0) {
            if (len1 > len2) {
                result = 1;
            }
            else if (len1 < len2) {
                result = 2;
            }
            else {
                result = 3;
            }
        }
    
        // 输出结果
        printf("%d", result);
    
        return 0;
    }
    

    经过修改后的代码会正确地比较两个字符串,并输出对应的数字。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 课上突考,本人大脑过载,求51单片机能手
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程
  • ¥15 C# webservice 参数特殊字符处理