weixin_42703390
weixin_42703390
2019-02-27 22:07

c++主函数返回失败的问题!求指教

  • c++
  • c语言
  • 开发语言
#include <stdio.h>
#include <string.h>
#define max 220

struct bigint{
    int digit[max/4],size;
    void init(){
        size = 0;
        for(int i=0;i<max;i++){
            digit[i] = 0;
        }
    }
    void set(char *a){
        init();
        int sl = strlen(a),j=0,k=1,t=0;
        for(int i=sl-1;i>=0;i--){
            t+= k*(a[i]-'0');
            k*=10;
            j++;
            if(j==4||i==0){
                k = 1;
                digit[size++] = t;
                t = j = 0;
            }
        }
    }
    void output(){
        for(int i=size-1;i>=0;i--){
            if(i!=size-1)   printf("%04d",digit[i]);
            else    printf("%d",digit[i]);  
        }
        printf("\n");
    }
    bigint operator + (const bigint &a) const {
        int l=size>a.size?size:a.size,carry=0;
        bigint ret;
        ret.init();
        for(int i=0;i<l;i++){
            int t = digit[i]+a.digit[i]+carry;
            carry = t/10000;
            ret.digit[ret.size++]=t%10000;
        }
        if(carry!=0)    ret.digit[ret.size++] = carry;
        return ret;
    }
}a,b,c;

int main(){
    char str1[max],ch;
    int l=0;
    bool flag=false;
    do{
        ch=getchar();
    }while(ch=='0');
    do{
        str1[l++]=ch;
        ch=getchar();
    }while(ch!='\n');
    str1[l++] = 0;
    a.set(str1);
    l=0;
    do{
        ch=getchar();
    }while(ch=='0');
    do{
        str1[l++]=ch;
        ch=getchar();
    }while(ch!='\n');
    str1[l++] = 0;
    b.set(str1);
//  a.set(str1);
//  b.set(str1);
//  a.output();
//  b.output();
    c = a+b;
            c.output();

printf("OK\n");//执行完这句不return 0
return 0;
}

代码如上图:
功能是把两个长整数相加。
然而神奇的事情发生了,如图!printf("OK\n")执行了,return值却不对!
图片说明

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答

为你推荐