本地测试和样例一样,但全WA,大佬求救!

P1957 口算练习题

MuLinnnnn @ 2022-11-04 19:03:04

#include <iostream>
#include <cstring>
using namespace std;
char chch[1],eql[1]= {'='};
char brr[55][25];

int main() {
    int n,cnt1=0,cnt2=0,q=0,w=0,num1=0,num2=0,ans=0;
    char num[13],ch='\0',n1[6],n2[6];
    char num1ch[6],num2ch[6],ansch[10];
    char arr[25];
    scanf("%d",&n);
    getchar();
    for(int i=0; i<n; i++) {
        cin.get(num,13);
        getchar();
        cnt1=0;
        cnt2=0;
        memset(n1,'\0',sizeof(n1));
        memset(n2,'\0',sizeof(n2));
        if(num[0]>='a' && num[0]<='z') {
            ch = num[0];
            for(q=2;; q++) {
                if(isspace(num[q])) {
                    for(int k=2; k<q; k++) {
                        n1[cnt1] = num[k];
                        cnt1++;
                    }
                    break;
                }
            }
            for(int j=q+1; j < int(strlen(num)); j++) {
                n2[cnt2] = num[j];
                cnt2++;
            }
        } else {
            for(w=0;; w++) {
                if(isspace(num[w])) {
                    for(int k=0; k<w; k++) {
                        n1[cnt1] = num[k];
                        cnt1++;
                    }
                    break;
                }
            }
            for(int j=w+1; j < int(strlen(num)); j++) {
                n2[cnt2] = num[j];
                cnt2++;
            }
        }
        num1 = atoi(n1);
        num2 = atoi(n2);
        if(ch == 'a') {
            chch[0] = '+';
            ans = num1 + num2;
        } else if(ch == 'b') {
            chch[0] = '-';
            ans = num1 - num2;
        } else {
            chch[0] = '*';
            ans = num1 * num2;
        }
        sprintf(num1ch,"%d",num1);
        sprintf(num2ch,"%d",num2);
        sprintf(ansch,"%d",ans);
        strcpy(arr,num1ch);
        strcat(arr,chch);
        strcat(arr,num2ch);
        strcat(arr,eql);
        strcat(arr,ansch);
        for(int j=0; j < int(strlen(arr)); j++) {
            brr[i][j]=arr[j];
        }
    }
    for(int i=0; i<n; i++) {
        for(int j=0; j < int(strlen(brr[i])); j++) {
            cout << brr[i][j];
        }
        cout << "\n" << strlen(brr[i]);
        if(i!=n-1){
            cout << "\n";
        }
    }
    return 0;
}

by Xy_top @ 2022-11-04 19:09:59

@bj12z_dingbolin 看上一篇帖子,不要用string做,很麻烦还容易错


|