Sweety

Practice makes perfect

导航

简单的字符处理(各种易错点)

Posted on 2014-11-10 21:32  蓝空  阅读(161)  评论(0编辑  收藏  举报

 

一直想整理一下一直以来所遇到的变态的不行的输入输出格式

接下来稍作整理:

 

链接: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>