LZH2011 @ 2022-08-20 23:34:08
题目口算题练习 代码
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string s;
char fh[3]={'+','-','*'};
int JS(char c,int a,int b)
{
if(c=='a')
{
return a+b;
}
else if(c=='b')
{
return a-b;
}
else
{
return a*b;
}
}
int CD(int a)
{
int n=0;
if(a<0)
{
n+=1;
a=-a;
}
do
{
a/=10;
n++;
}
while(a>0);
return n;
}
int main()
{
int n;
cin>>n;
char c='a';
getchar();
for(int i=1;i<=n;i++)
{
int a=0,b=0,k=0;
getline(cin,s);
int l=s.size();
s=s+" ";
if(s[0]>='a' && s[0]<='c')
{
c=s[0];
k=2;
}
while(true)
{
if(s[k]!=' ')
{
a=a*10+(s[k]-'0');
k++;
}
else
{
break;
}
}
k++;
while(true)
{
if(s[k]!=' ')
{
b=b*10+(s[k]-'0');
k++;
}
else
{
break;
}
}
cout<<a<<fh[c-'a']<<b<<"="<<JS(c,a,b)<<endl<<CD(a)+CD(b)+CD(JS(c,a,b))+2<<endl;
}
}
我试了好几遍,明明是对的,偏偏是全错,求大佬帮助!
by LZH2011 @ 2022-08-20 23:38:54
这里不补充一句,全RE,不知道为啥
by _Revenge_ @ 2022-08-20 23:39:27
RE可能是数组开小了,或越界,尝试修改范围。
by zsseg @ 2022-08-20 23:49:15
if(s[k]!=' ')
改成
if(s[k]>='0'&&s[k]<='9')
by zsseg @ 2022-08-20 23:52:58
getchar();
后面再加一个
getchar();
(Linux的换行符是两个字符\r\n)
by Jorisy @ 2022-08-21 07:10:37
@Jq5_ Linux 是 \n,windows 才是\r\n
by LZH2011 @ 2022-08-21 10:32:06
@Revenge 这里不可能有越界吧,就一个数组,用来储存符号
by LZH2011 @ 2022-08-21 10:37:41
@Jq5_ 感谢大佬
by zsseg @ 2022-08-21 11:29:20
记错力(悲)