求助

P1957 口算练习题

YuuAnn @ 2024-12-18 16:41:30

得分是六十分,第七个没有过,
测试点数据如下
输入:
4
a 64 46
275 125
c 11 99
b 46 64
输出: 64+46=110
9
275+125=400
11
1199=1089
10
46-64=-18
9
(没错就是给的样例)
我自己测的是数据符合题目要求,但格式不正确。不知道我的编译器哪里出问题了。
我的编译器输出下面的形式(我直接粘贴的,我不知道怎么插入图片): 4
a 64 46
64+46=110
9
275 125
115+125=240
11
c 11 99
1199=1089
10
b 46 64
46-64=-18
9
代码如下:

#include<stdio.h>
#include<string.h>
int size(int);
int main()
{
    int n,i,j;
    char sign,store;
    scanf("%d",&n);
    int arr[n][2];
    for(i=0;i<n;i++){
        sign=getchar();
        sign=getchar();
        scanf("%d %d",&arr[i][0],&arr[i][1]);
        if(sign>'c'||sign<'a'){
        arr[i][0]=size(arr[i][0])*10*(sign-'0')+arr[i][0];
        sign=store;
        }//判断是否是两个还是三个数据 
        if(sign=='a')
        printf("%d+%d=%d\n",arr[i][0],arr[i][1],arr[i][0]+arr[i][1]);
        else if(sign=='b')
        printf("%d-%d=%d\n",arr[i][0],arr[i][1],arr[i][0]-arr[i][1]);
        else
        printf("%d*%d=%d\n",arr[i][0],arr[i][1],arr[i][0]*arr[i][1]);
        if(sign=='a')
        printf("%d\n",size(arr[i][0])+size(arr[i][1])+2+size(arr[i][0]+arr[i][1]));
        else if(sign=='b')
        printf("%d\n",size(arr[i][0])+size(arr[i][1])+2+size(arr[i][0]-arr[i][1]));
        else
        printf("%d\n",size(arr[i][0])+size(arr[i][1])+2+size(arr[i][0]*arr[i][1])); 
        store = sign;
    }
    return 0;
}
    int size(int a){
        int index=1;
        if(a<0)
        index++,a=-a;
        while((a-10)>=0){
        index++;
        a=a/10;
        }//判断数字的位数 
        return index;
    }

by JhdFarrell @ 2024-12-18 16:54:02

你这个输入方式不对


by YuuAnn @ 2024-12-18 17:01:25

@JhdFarrell 大佬,可不可以再具体点。orz


by JhdFarrell @ 2024-12-18 17:23:22

你这个输入只适用于3个数据的情况,两个数据的情况会把第一个数字的第一位吞掉


by JhdFarrell @ 2024-12-18 17:23:53

具体正确写法找题解看看就好了


|