一直想整理一下一直以来所遇到的变态的不行的输入输出格式
接下来稍作整理:
链接:http://acm.dlmu.edu.cn/status.php?user_id=201358501149
#include <iostream>
#include <string>
using namespace std;
int main(){
int a,b,c;
int count = 0;
char ch1,ch2;
char ss[10];
//string ss;
while(~scanf("%d%c%d%c%s",&a,&ch1,&b,&ch2,&ss))//cin>>a>>ch1>>b>>ch2>>ss)
{
if(ss=="?")
continue;
if(strlen(ss)==1)//ss.length()==1)
c=(int) ss[0] - (int)'0';
else
if(strlen(ss)==1)//(ss.length()==2)
c=((int) ss[0] - (int)'0')*10+(int) ss[1] - (int)'0';
else
if(strlen(ss)==1)//(ss.length()==3)
c=((int) ss[0] - (int)'0')*100+((int) ss[1] - (int)'0')*10+(int) ss[2] - (int)'0';
else
continue;
if(ch1=='+'&&a+b==c)
count++;
else
if(ch1=='-'&&a-b==c)
count++;
}
cout<<count;
return 0;
}
此处值得注意的是,要想使用string类型作为存储结果的变量,就只能用cin 输入,因为scanf()是不能输入string的,但是用数组储存的话就可以了。
下面在此使用sscanf()来输入,比较好的方法,以后注意用
#include<iostream>
using namespace std;
int main()
{
char c[99];
int m,n,p,s=0;
while(scanf("%s",&c)==1)
{
if(sscanf(c,"%d+%d=%d",&m,&n,&p)==3&&m+n==p)s++;
if(sscanf(c,"%d-%d=%d",&m,&n,&p)==3&&m-n==p)s++;
}
cout<<s<<endl;
return 0;
}
关于sscanf()用法参考网址:<a target=_blank href="http://blog.csdn.net/u014665013/article/details/41088251">http://blog.csdn.net/u014665013/article/details/41088251</a>