先说一下正则表达式

%*[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. c/c++ 笔试面试题

    #include <iostream> using namespace std; class A { public: void sayHi(){ cout<<"hel ...

  2. TextBlock 格式化内容

    Text="{Binding ContentName,StringFormat=分享好书\{0\}}"

  3. Codeforces Round #208 (Div. 2) B Dima and Text Messages

    #include <iostream> #include <algorithm> #include <string> using namespace std; in ...

  4. TYVJ P1036 统计数字 Label:坑!!!(用queue+map做出来的水)

    背景 NOIP2007年提高组第一题 描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数 ...

  5. 【wikioi】1285 宠物收养所

    题目链接:http://www.wikioi.com/problem/1285/ 算法:Splay 刚开始看到这题,就注意到特征abs了,并且数据n<=80000显然不能暴力,只能用nlgn的做 ...

  6. QRadioButton 使用方法

    QRadioButton 控件是Qt中实现多选一功能的控件,它的使用方法如下: 声明控件: QRadioButton *rbutton; 然后实现它的响应函数: void YourClass::on_ ...

  7. portable runtime

    APR The mission of the Apache Portable Runtime (APR) project is to create and maintain software libr ...

  8. flowvisor test(1)

    参考: Flowvisor 入门 杨帅老师:mininet+FlowVisor+ODL环境搭建及实验1 安装: 参考: 1.Flowvisor安装 2.Mininet安装 3.官网,Floodligh ...

  9. web接入层 传入参数的格式化及web返回值传出数据的参数格式化,都要统一

    1.web接入层 传入参数的格式化及web返回值传出数据的参数格式化,都要统一. 比如acSpace中, 传入层参数@RequestBody javaBean对象.统一转换为javabean传入参数. ...

  10. Pull解析器学习

    1, package com.service; import java.io.InputStream; import java.io.OutputStream; import java.util.Ar ...