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


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

    接下来稍作整理:

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



     

  • 相关阅读:
    Flink window机制
    用上帝视角来看待组件的设计模式
    npm和package.json那些不为常人所知的小秘密
    四步走查智能硬件异常Case
    PorterDuffXfermode 图像混合技术在漫画APP中的应用
    发布流程进化史
    新手入门Sqlalchemy
    OpenResty 最佳实践 (2)
    更新数据库触发器
    删除约束名字段名
  • 原文地址:https://www.cnblogs.com/zswbky/p/5432041.html
Copyright © 2020-2023  润新知