自测和答案一模一样,但就是爆0 求助大佬! 代码可读性很强
查看原帖
自测和答案一模一样,但就是爆0 求助大佬! 代码可读性很强
118654
ASaltyFish楼主2020/11/30 17:51
#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;
	
}
2020/11/30 17:51
加载中...