ASaltyFish @ 2020-12-02 10:06:46
#include<bits/stdc++.h>
using namespace std;
int len(int x)//判断位数
{
int len=0;
if(x<0)
{
x*=-1;
len++;
}
while(x>0)
{
x/=10;
len++;
}
return len;
}
int main()
{
int n;
scanf("%d",&n);
getchar();//读取第一个回车
char r;//r用来存放运算符
for(int p=1;p<=n;p++)
{
char s[20];//s用来存放整行输入
char x[10],y[10];//x,y用来存放两个数字
memset(y,0,sizeof(y));//清空x y数组
memset(x,0,sizeof(x));
gets(s);
if(s[0]<='z'&&s[0]>='a')//判断第一个字符是不是字母
{
//如果是,则开始存放两个数字
r=s[0];
int k=0;
int i=1;
for(i=2;i<strlen(s);i++)//存放第一个数字
{
if(s[i]!=' ')//遇到空格就停止读入
x[k++]=s[i];
else break;
}
for(i=i+1,k=0;i<strlen(s);i++)//存放第二个数字
y[k++]=s[i];
}
else//如果第一位不是字母,说明运算符为上一行的运算符,直接开始存数字
{
int k=0;
int i=0;
for(i=0;i<strlen(s);i++)//与上同理
{
if(s[i]!=' ')
x[k++]=s[i];
else break;
}
for(i=i+1,k=0;i<strlen(s);i++)
y[k++]=s[i];
}
int x1=atoi(x),y1=atoi(y);//用x1,y1来存两个数的整型形式
//atoi用来转字符型为整型
if(r=='a')
printf("%d+%d=%d\n%d",x1,y1,x1+y1,len(x1)+len(y1)+len(x1+y1)+2);//+2是加的运算符和等于号
if(r=='c')
printf("%d*%d=%d\n%d",x1,y1,x1*y1,len(x1)+len(y1)+len(x1*y1)+2);
if(r=='b')
printf("%d-%d=%d\n%d",x1,y1,x1-y1,len(x1)+len(y1)+len(x1-y1)+2);
if(p<n) printf("\n");
}
return 0;
}
by Ephemeroptera @ 2020-12-02 10:19:58
用
by ASaltyFish @ 2020-12-02 10:46:07
@Job_Lee cin不是遇到空格就结束了嘛
by ASaltyFish @ 2020-12-02 10:54:54
@Job_Lee cin.get gets cin.getline都试了,都WA
by ASaltyFish @ 2020-12-02 10:55:32
错误都是Too short on line 1.
by Jiyeon2 @ 2021-01-27 21:51:39
我的代码和你的很像,不知道是哪里出了问题