先说一下正则表达式

%*[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. 【wikioi】1553 互斥的数(hash+set)

    http://wikioi.com/problem/1553/ 一开始我也知道用set来判a[i]/p是否在集合中,在的话就直接删掉. 但是我没有想到要排序,也没有想到当存在a,b使得a/p==b时到 ...

  2. 模板引擎freemarker的简单使用教程

    freemarker十分强大,而且不依赖web容器,个人感觉十分好用. 下面直接进主题,freemarker还有什么特性,请找度娘或谷哥~ 一.freemarker生成word 1.创建模板. 我创建 ...

  3. 关于javascript在作用域中的变量定义你所不知道的一些东西

    //先看一段代码 var a = 100; function test(){ alert(a); var a = 200; } test(); /* 结果:undifined 原因:js引擎在执行sc ...

  4. POJ 1988 Cube Stacking(带权并查集)

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 23678   Accepted: 8299 Ca ...

  5. CSS3:过渡大全

    代码 地址:http://jsbin.com/moquyesumi/edit?html,output <!DOCTYPE HTML> <html> <head> & ...

  6. Apache Spark源码走读之17 -- 如何进行代码跟读

    欢迎转载,转载请注明出处,徽沪一郎 概要 今天不谈Spark中什么复杂的技术实现,只稍为聊聊如何进行代码跟读.众所周知,Spark使用scala进行开发,由于scala有众多的语法糖,很多时候代码跟着 ...

  7. RDBMS vs. NoSQL 合作还是竞争

    欢迎转载,转载请注明出处,徽沪一郎. 由于近期手头的工作和数据库的选型相关,纠结于是否使用一款NoSQL数据库来替换已有的MySQL数据库.在这个过程中随着学习研究的深入,对于二者的异同有了一些初步的 ...

  8. 18. 求交错序列前N项和

    求交错序列前N项和 #include <stdio.h> int main() { int numerator, denominator, flag, i, n; double item, ...

  9. PHP 设计模式 笔记与总结(9)数据对象映射模式

    [数据对象映射模式] 是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作.例如在代码中 new 一个对象,使用数据对象映射模式就可以将对象的一些操作比如设置一些属性,就会自动保存到数 ...

  10. PHP 文件系统管理函数与 preg_replace() 函数过滤代码

    案例:在带行号的代码至文件 crop.js 中.用两种方法去掉代码前面的行号,带行号的代码片段: 1.$(function(){ 2. //初始化图片区域 3. var myimg = new Ima ...