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
具体正确写法找题解看看就好了