爱睡懒觉的猫猫 2022-01-10 22:16 采纳率: 85.7%
浏览 68
已结题

C语言版本号比较,代码过不了


# include <stdio.h>
int compareVersion(char *version1, char *version2);

int main()
{
    int rst = 0;
    char ver1[101];
    char ver2[101];

    scanf("%s %s", ver1, ver2);
    rst = compareVersion(ver1, ver2);        //goal function

    switch (rst)
    {
        case 0:
            printf("The same version.");
            break;
        case 1:
            printf("%s is the new version.", ver1);
            break;
        case -1:
            printf("%s is the new version.", ver2);
            break;
        default:
            printf("invalid!");
            break;
    }

    return 0;
}
int compareVersion(char *version1, char *version2){
    int i,j,len;
    for(i=0,j=0;i<strlen(version1)&&j<strlen(version2);){
        int v1=0,v2=0;
        while(i<strlen(version1)&&version1[i]!='.'){
            v1=v1*10+(version1[i]-'0');
            ++i;
            
        }
        ++i;     //小数点所占位
        while(j<strlen(version2)&&version2[j]!='.') {
            v2=v2*10+(version2[j]-'0');
            ++j;
            
        }
        ++j;     //小数点占位
        if(v1>v2){
            return 1;
        }
        if(v1<v2){
            return -1;
        }
    }
    return 0;
}

img


图片是我加了printf的输出,它从花圈的那里不懂为什么就这样了。

  • 写回答

2条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-01-10 23:05
    关注

    可能是int整数类型溢出了。
    把int都改成long long 试试。
    希望对题主有所帮助,望采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月13日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!