提交不对,本地正确?
查看原帖
提交不对,本地正确?
859012
L2022211395楼主2022/12/16 01:03
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int change(char str[],int a,int b);//将字符转化成整数
int len(int num);//计算数字长度
int main()
{
   int n;//输入n组数
   int i=1;
   int y=0;
   int a;
   int b;
   int result;
   int num1;
   int num2;
   int l=0;
   char ch;
   scanf("%d",&n);
   getchar();
   char str[100];
   for(i=1;i<=n;i++)
   {
   	gets(str);//每次读入一个字符串
   	if(str[0]>='a'&&str[0]<='c')//判断首个字符是否为字母
   	{
   		ch=str[0];//存下上一次的字母,以便下次使用
   		if(str[0]=='a')
   		{
   			a=2;
   			for(y=2;str[y]!=' ';y++)
   			{
   				b=y;
   			}
   			l=b-a+1;
   			num1=change(str,a,b);//a,b分别为数字的起始位置
   			a=b+2;
   			for(y=b+2;str[y]!='\0';y++)
   			{
   				b=y;
   			}
   			l=l+b-a+1;
   			num2=change(str,a,b);
   			result=num1+num2;
   			l=l+len(result);
   			l=l+2;//l为总长度
   			printf("%d+%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   		if(str[0]=='b')
   		{
   			a=2;
   			for(y=2;str[y]!=' ';y++)
   			{
   				b=y;
   			}
   			l=b-a+1;
   			num1=change(str,a,b);
   			a=b+2;
   			for(y=b+2;str[y]!='\0';y++)
   			{
   				b=y;
   			}
   			l=l+b-a+1;
   			num2=change(str,a,b);
   			result=num1-num2;
   			l=l+len(result);
   			if(result>=0)
   			{
   				l=l+2;
   			}
   			else
   			l=l+3;
   			printf("%d-%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   		if(str[0]=='c')
   		{
   			a=2;
   			for(y=2;str[y]!=' ';y++)
   			{
   				b=y;
   			}
   			l=b-a+1;
   			num1=change(str,a,b);
   			a=b+2;
   			for(y=b+2;str[y]!='\0';y++)
   			{
   				b=y;
   			}
   			l=l+b-a+1;
   			num2=change(str,a,b);
   			result=num1*num2;
   			l=l+len(result);
   			l=l+2;
   			printf("%d*%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   	}
   	else
   	{
   		a=0;
   		for(y=0;str[y]!=' ';y++)
   		{
   			b=y;
   		}
   		l=b-a+1;
   		num1=change(str,a,b);
   		a=b+2;
   		for(y=b+2;str[y]!='\0';y++)
   		{
   			b=y;
   		}
   		l=l+b-a+1;
   		num2=change(str,a,b);
   		if(ch=='a')//ch为上一次输入的运算方式
   		{
   			result=num1+num2;
   			l=l+len(result);
   			l=l+2;
   			printf("%d+%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   		if(ch=='b')
   		{
   			result=num1-num2;
   			l=l+len(result);
   			if(result>=0)
   			{
   				l=l+2;
   			}
   			else
   			l=l+3;
   			printf("%d-%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   		if(ch=='c')
   		{
   			result=num1*num2;
   			l=l+len(result);
   			l=l+2;
   			printf("%d*%d=%d\n",num1,num2,result);
   			printf("%d",l);
   		}
   	}
   	if(i!=n)
   	{
   		printf("\n");
   	}
   }
   return 0;
}
int change(char str[],int a,int b)
{
   int i=b;
   int count=1;
   int num=0;
   while(i>=a)
   {
   	num=num+(str[i]-'0')*count;
   	count=count*10;
   	i--;
   }
   return num;
}
int len(int num)
{
   int l=0;
   if(num==0)
   l=1;
   else
   {
   	while(num!=0)
   {
   	num=num/10;
   	l++;
   }
   }
   return l;
}
2022/12/16 01:03
加载中...