一直想整理一下一直以来所遇到的变态的不行的输入输出格式
接下来稍作整理:
链接: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>