呙凯01 @ 2020-10-24 23:05:32
int main()
{
char a[51][20]={'\0'};
int n,k,s=0,sum1[51]={0},len[51]={0},x;
int jishu=0;
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
{
gets(a[i]); //输入
}
for(int i=1;i<=n;i++)
{
int j=0;//j指向当前字符
if(a[i][j]=='a'||(a[i][j]!='b'&&a[i][j]!='c'&&k==1))//k作记号,标明上次结束的运算方式
{
if(k!=1) a[i][j]=' ',j+=2;k=1;//消除前面的指示字母'a'。。。
while(a[i][j]!='\0')
{
while(a[i][j]!=' '&&a[i][j]!='\0')
{
x=a[i][j]-'0';
s=s*10+x;j++;len[i]++;
}//累加数字长度,并将字符转换为整型
if(a[i][j]==' ')a[i][j]='+',j++,len[i]++;//数字间的空格变运算符
sum1[i]+=s;s=0;//开始累加
}
}
if(a[i][j]=='b'||(a[i][j]!='a'&&a[i][j]!='c'&&k==2))
{
if(k!=2) a[i][j]=' ',j+=2;k=2;
jishu=0;//标明第一次
while(a[i][j]!='\0')
{
while(a[i][j]!=' '&&a[i][j]!='\0')
{
x=a[i][j]-'0';
s=s*10+x;j++;len[i]++;
}
jishu++;
if(jishu==1)
{
sum1[i]+=s; s=0;
}
else{
sum1[i]-=s;s=0;
}
if(a[i][j]==' ') a[i][j]='-',len[i]++,j++;
}
}
if(a[i][j]=='c'||(a[i][j]!='a'&&a[i][j]!='b'&&k==3))
{
if(k!=3) a[i][j]=' ',j+=2;k=3;
while(a[i][j]!='\0')
{
jishu++;
while(a[i][j]!=' '&&a[i][j]!='\0')
{
x=a[i][j]-'0';
s=s*10+x;j++;len[i]++;
}
if(a[i][j]==' ') a[i][j]='*',j++,len[i]++;
if(jishu==1) sum1[i]+=s;
else sum1[i]*=s;s=0;
}
}
}
for(int i=1;i<=n;i++)
{
int j=0,len1=0;
while(a[i][j]==' ')
{
j++;
}//消除空格
while(a[i][j]!='\0')
{
printf("%c",a[i][j]);
j++;
}//输出字符
printf("=%d\n",sum1[i]);//输出和
if(sum1[i]<0) len1++;//为负数,加个'-'的长度
while(sum1[i]!=0)
{
len1++,sum1[i]/=10;
}
printf("%d",len[i]+len1+1);
if(i<n) printf("\n");
}
return 0;
}```
输入
1
a 99 999
输出
99+999=1098
11
by entity @ 2020-10-28 22:09:37
铜球
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
/*
4
a 64 46
275 125
c 11 99
b 46 64
*/
int a,b,c,n,len=0;
char str[30]={},save='d';
int space[11]={1,10,100,1000,10000};
int main(){
scanf("%d\n",&n);
while(n--){
len=0;
cin.getline(str,20);
if(str[0]>='a'&&str[0]<='c'){
bool f=false;
a=0;
b=0;
int lenth=strlen(str);
for(int i=2;i<lenth;i++){
if(str[i]==' '){
f=true;
}else{
if(!f) a=a*10+str[i]-'0';
else b=b*10+str[i]-'0';
}
}
if(str[0]=='a'){
c=a+b;
save='a';
}else{
if(str[0]=='b'){
c=a-b;
save='b';
}else{
c=a*b;
save='c';
}
}
}else{
bool f=false;
a=0;
b=0;
int lenth=strlen(str);
for(int i=0;i<lenth;i++){
if(str[i]==' '){
f=true;
}else{
if(!f) a=a*10+str[i]-'0';
else b=b*10+str[i]-'0';
}
}
if(save=='a') c=a+b;
else if(save=='b') c=a-b;
else c=a*b;
}
cout<<a;
if(save=='a') cout<<'+';
else if(save=='b') cout<<'-';
else cout<<'*';
cout<<b<<'='<<c<<endl;
if(a<0){
len++;
a=-a;
}
if(b<0){
len++;
b=-b;
}
if(c<0){
len++;
c=-c;
}
if(a>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>a){
len+=i;
break;
}
if(b>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>b){
len+=i;
break;
}
if(c>10000)len+=5;
else
for(int i=1;i<=4;i++)
if(space[i]>c){
len+=i;
break;
}
len+=2;
cout<<len<<endl;
}
return 0;
}