救命啊各位dalao为啥样例过了还能爆0啊
查看原帖
救命啊各位dalao为啥样例过了还能爆0啊
394481
continue_waste楼主2020/10/10 16:06
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<math.h>
char a[1000];//存放字符信息
int b[5]; //存放数字信息

int  l(int x) {  //可用来计算长度
	int length=0;
	if(x<0)
		length+=1;
	while(x) {
		x/=10;
		length++;
	}
	return length;
}

//用一个函数把数字部分输入数字数组
//有运算符号时
void c1(char a[]) {
	int sum=0;
	int cnt=0;
	int length=strlen(a);
	for(int i=0; i<length; i++) {
		if(a[i]==' ') {
			int t=i+1;
			while(a[t]!=' '&&t!=length) {
				sum=sum*10+a[t]-'0';
				t++;           //得到了第一个空格后的第一个数
			}
			if(sum!=0) {
				b[cnt]=sum;
				cnt++;
				sum=0;
			}
		}
	}
}

//无运算符时
void c2(char a[]) {
	int length=strlen(a);
	int cnt=0;
	int sum=0;
	for(int i=0; i<=length; i++) {
		if(a[i]!=' '&&i!=length) {
			sum=sum*10+a[i]-'0';
		}
		if(a[i]==' '||i==length) {
			b[cnt]=sum;
			cnt++;
			sum=0;
		}
	}
}

using namespace std;
int main() {
	int i;
	scanf("%d",&i);
	getchar();
	int flag=0;
	for(int j=0; j<i; j++) {
		gets(a);
		if(a[0]>='a'&&a[0]<='c') {  //有运算符
			c1(a);
			if(a[0]=='a') {
				printf("%d+%d=%d\n",b[0],b[1],b[0]+b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]+b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]+b[1])+2);
				flag=1;
			}
			if(a[0]=='b') {
				printf("%d-%d=%d\n",b[0],b[1],b[0]-b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]-b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]-b[1])+2);
				flag=2;
			}
			if(a[0]=='c') {
				printf("%d*%d=%d\n",b[0],b[1],b[0]*b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]*b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]*b[1])+2);
				flag=3;
			}
		} else {
			c2(a);
			if(flag==1) {
				printf("%d+%d=%d\n",b[0],b[1],b[0]+b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]+b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]+b[1])+2);
			}
			if(flag==2) {
				printf("%d-%d=%d\n",b[0],b[1],b[0]-b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]-b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]-b[1])+2);
			}
			if(flag==3) {
				printf("%d*%d=%d\n",b[0],b[1],b[0]*b[1]);
				if(j==i-1)
					printf("%d",l(b[0])+l(b[1])+l(b[0]*b[1])+2);
				else
					printf("%d\n",l(b[0])+l(b[1])+l(b[0]*b[1])+2);
			}
		}
	}
	return 0;
}
2020/10/10 16:06
加载中...