先说一下正则表达式

%*[a-z]表示忽略前面的小写字符,%[0-9]表示把紧接着非字符的连续数字存入t字符串中去;

  从"abc123de4f"中得到"123";

#include <stdio.h>
int main()
{
char s[50] = "abc123de4f", t[50] = {0};
sscanf(s, "%*[a-z]%[0-9]", t);
printf("%s\n", t);///结果: 123
return 0;
}

  从"Abc12.3de4f"中得到"12.3"

#include <stdio.h>
int main()
{
char s[50] = "Abc12.3de4f", t[50] = {0};
sscanf(s, "%*[^0-9]%[0-9.]", t);
printf("%s\n", t);///结果: 12.3
return 0;
}

  

  从"2442932358@qq.com"中得到"@qq.com"

#include <stdio.h>
int main()
{
char s[50] = "2442932358@qq.com", t[50] = {0};
sscanf(s, "%*[^@]%s", t);
printf("%s\n", t);///结果: @qq.com
return 0;
}

  从"2442932358@qq.com"中得到"qq.com"

#include <stdio.h>
int main()
{
char s[50] = "2442932358@qq.com", t[50] = {0};
sscanf(s, "%*[^@]@%s", t);
printf("%s\n", t);///结果: 12.3
return 0;
}

  还有很多可以慢慢尝试;

题目链接:http://codeforces.com/contest/727/problem/B

题意:有一个采购单以字符串的形式给出,里面按顺序包括“物品名+价钱”,没有“+”号,物品名是由小写英文字符组成,价钱有两种形式,带美分的和不带美分的,其中带美分的是由小数点加两位数字构

的,美元部分则由小数点每隔3位分开一次,例如123.45表示123.45美元,12.345表示12345美元,1.234.45表示1234.45美元,现在要求所有物品的价格之和

输出格式按照输入格式来处理;

输出格式有两种:

1. 全是整数的,没有.00这种形式

2. 有小数部分的,小数部分不为0的保留两位小数;

#include <stdio.h>
#include <string.h>
#define N 5200
int main()
{
char s[N]={}, next[N]={}, p[N]={}, t[N] = {}; while(scanf("%s", s+) != EOF)
{
s[] = 'a';///以下正则表达式的规则是以字符开头,数字结尾的;
double sum = ;
int f = ;
///正则表达式求s串中从前面开始的数字部分以字符串的形式存入p中,剩余部分存入next中;
///
while(sscanf(s, "%*[^0-9]%[0-9.]%[^\0]", p, next) > )
{
double num1 = , num2 = ;///num1是小数部分的值,num2是整数部分的值;
int len = strlen(p), flag = ;
if(len> && p[len-] == '.')
{
sscanf(p+len-, "%lf", &num1);///把小数部分转化成double;
flag = f = ;///说明是2位小数;
}
if(flag == ) len = len - ;
for(int i=; i<len; i++)///处理整数部分;
{
if(p[i] == '.') continue;
num2 = num2* + (p[i]-'');
}
sum += num1 + num2; strcpy(s, next);///循环处理剩余部分;
memset(next, , sizeof(next));///要清空的;
} sprintf(t, "%.2f", sum);///再把结果保存为字符串,方便输出; int len = strlen(t), k = ;
char ans[N];///保存结果; if(f == )len -= ;///没有小数部分的;
if(f == )///2位小数;
{
ans[k++] = t[--len];
ans[k++] = t[--len];
ans[k++] = t[--len];
if(ans[] == '' && ans[] == '')k = ;///小数部分为0的,不输出;
} for(int i=len-, counts=; i>=; i--,counts++)
{
if(counts%== && counts!=)
ans[k++] = '.';
ans[k++] = t[i];
}
for(int i=k-; i>=; i--)
printf("%c", ans[i]);
printf("\n");
}
return ;
}

Codeforce727B --- Bill Total Value(字符串处理 正则表达式)的更多相关文章

  1. Bill Total Value

    Bill Total Value time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. 字符串处理(正则表达式、NSScanner扫描、CoreParse解析器)-备用

    搜索 在一个字符串中搜索子字符串 最灵活的方法 1 - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptio ...

  3. python字符串及正则表达式[转]

    原文链接:http://www.cnblogs.com/guojidong/archive/2012/12/20/2826388.html 字符串: 正则表达式 正则表达式元字符与语法图: 注意事项: ...

  4. 零基础学Python--------第5章 字符串及正则表达式

    第5章 字符串及正则表达式 5.1 字符串常用操作 在Python开发过程中,为了实现某项功能,经常需要对某些字符串进行特殊处理,如拼接字符串.截取字符串.格式化字符串等.下面将对Python中常用的 ...

  5. R5—字符串处理/正则表达式

    R通常被用来进行数值计算比较多,字符串处理相对较少,而且关于字符串的函数也不多,用得多的就是substr.strsplit.paste.regexpr这几个了.实际上R关于字符串处理的功能是非常强大的 ...

  6. C#高级编程9-第9章 字符串和正则表达式

    字符串和正则表达式 String类 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显 ...

  7. 转义字符的理解(JAVA、字符串和正则表达式)

    一.原理总结: 要理解转义,首先要从正则表达式说起. 在正则表达式中:*和\是特殊字符:为了匹配这两个字符本身,正则表达式中需要写为\*和\\ 在Java中,只能用字符串表示正则表达式,所以需要把\* ...

  8. js中object、字符串与正则表达式的方法

    对象 1.object.hasOwnProperty(name) 检测object是否包含一个名为name的属性,那么hasOwnProperty方法返回true,但是不包括其原型上的属性. 正则表达 ...

  9. PHP09 字符串和正则表达式

    学习要点 字符串处理简介 常用的字符串输出函数 常用的字符串格式化函数 字符串比较函数 正则表达式简介 正则表达式语法规则 与perl兼容的正则表达式函数    字符串处理介绍 Web开发中字符串处理 ...

随机推荐

  1. 在本地(Eclipse)运行第一个strom-starter例子

    一.在Eclipse中建立storm项目: 具体步骤如下: 1.在Eclipse中新建java project项目并导入jar包: File-> New -> Java Project - ...

  2. POJ 2955 (区间DP)

    题目链接: http://poj.org/problem?id=2955 题目大意:括号匹配.对称的括号匹配数量+2.问最大匹配数. 解题思路: 看起来像个区间问题. DP边界:无.区间间隔为0时,默 ...

  3. wp控件

    导航控件 Silverlight的Windows Phone应用程序是基于一种可以让用户在不同页面内容间来回导航的页面模型.这个模型是基于其中的frame控件,而页面间的导航就是靠它. 下面的表格列出 ...

  4. 为tomcat 安装 native 和配置apr

    yum install -y apr-devel openssl-devel gcc 安装native cd /lxyy/tomcat7/bin tar zxvf tomcat-native.tar. ...

  5. 基于nginx tomcat redis分布式web应用的session共享配置

    一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...

  6. Qt5 和 Qt4 的一些改动和不同

    Qt5从Qt4升级后,很多原来Qt4中定义的函数或者变量由于种种原因在Qt5中被遗弃,所以用Qt5来编译Qt4的一些工程项目时,难以避免的会需要修改一些地方,下面就罗列一些我遇到的一些需要修改的地方: ...

  7. ajax无刷新获取php后台数据

    $.ajax({ url:"result.php", //data:{"page":i}, dataType:"json", beforeS ...

  8. 通过ReflectionMethod,我们可以得到Person类的某个方法的信息

    PHP反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互.借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传 ...

  9. autoLayout 纯代码

    SB中拖好空间,让后分别在,Pin,Align,Resolve Auto Layout Issues三个面板中设置好约束就好了. 用存代码的方式给控件添加约束,完成自动布局: 利用NSLayoutCo ...

  10. 管理Sass项目文件结构

    构建你的结构体系 CSS预处理器的特点之一是可以把你的代码分割成很多个文件,而且不会影响性能.这都要归功于Sass的@import命令,只要在你的开发环境下,你调用不管多少文件,最终将编译出一个CSS ...