题目:输入一个简单的加法方程式A+B=C,其中A,B,C中有一个为未知数X,其余两个为非负整数,要求输出X的值。输入为字符串,没有空格。
我理解这道题是一个从字符串中提取数字,因为不知道A,B,C的位数,所以要提取出字符串中的数字,然后再进行计算。
例如:12+x=15;
输出3;
参考代码:
<span style="font-size:14px;"><strong>#include<iostream>
#include<stdio.h>
#include<string>
#include<ctype.h>
using namespace std;
int main()
{
string str;
cin>>str;
int len=str.length();
int numbers[2]={0};
int i=1;
int k=1;
int flag=0;
int index_equal=0;
int index_x=0;
for(int m=0;m<len;m++)
{
if(str[m]=='x')
index_x=m;
if(str[m]=='=')
index_equal=m;
}
if(index_equal>index_x)
{
flag=1;
}
if(isdigit(str[0]))
{
numbers[0]=str[0]-'0';
while(str[i])
{
if(!isdigit(str[i]))
break;
else
{
numbers[0]=numbers[0]*10+str[i]-'0';
}
i++;
k++;
}
for(int j=k;j<len;j++)
{
if(isdigit(str[j]))
{
numbers[1]=numbers[1]*10+str[j]-'0';
}
}
if(flag==1)
cout<<numbers[1]-numbers[0];
if(flag==0)
cout<<numbers[0]+numbers[1];
}
else
{
flag=0;
int index=3;
int index_t=3;
numbers[0]=str[2]-'0';
while(str[index]&&index<len)
{
if(!isdigit(str[index]))
break;
else
{
numbers[0]=numbers[0]*10+str[index]-'0';
}
index++;
index_t++;
}
for(int j=index_t;j<len;j++)
{
if(isdigit(str[j]))
{
numbers[1]=numbers[1]*10+str[j]-'0';
}
}
cout<<numbers[1]-numbers[0];
}
return 0;
}</strong></span>