-狗了个子- 2022-03-16 13:01 采纳率: 85.7%
浏览 14
已结题

输出1个整数,是字符串中所有正、负整数的和。例题答案都是对的,为啥评测系统说不完全正确呢


#include<stdio.h>
#include<string.h> 
#define M 103
int main()
{
    int i,j,k=0,sum=0,flag;
    char s[M],b[2]={'a'};
    gets(s);
    strcat(s,b);
    for(i=0;s[i];i++){
        if(s[i]>='0'&&s[i]<='9') {
            flag=1;
            if(s[i-1]=='-')    j=-1;
        }
        else flag=0;
        if(flag==1) k=k*10+(s[i]-'0');
        else{
            sum=sum+j*k;
            k=0;
            j=1;    
        }
    }
    printf("%d",sum);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-03-16 14:19
    关注

    14行有问题啊,假如第一个字符就是数字,那s[i-1]就是s[-1]了,越界访问呢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    -狗了个子- 2022-03-16 14:42

    👌,在前面加个条件就过评测了

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部