先说一下正则表达式

%*[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. Flexbox——快速布局神器

    Flexbox通常能让我们更好的操作他的子元素布局,例如: 如果元素容器没有足够的空间,我们无需计算每个元素的宽度,就可以设置他们在同一行: 可以快速让他们布局在一列: 可以方便让他们对齐容器的左.右 ...

  2. 响应式HTML5+CSS3 网站开发测试实践

    仅仅利用media query适配样式是远远不够的,并没有考虑触屏下的行为和特有的内容组织方式的不同.简单在桌面版基础上叠加mobile版的代码,会带来请求增多.流量.性能.代码冗余等诸多方面问题.有 ...

  3. TopCoder SRM 588 DIV2 KeyDungeonDiv2

    简单的题目 class KeyDungeonDiv2 { public: int countDoors(vector <int> doorR, vector <int> doo ...

  4. TYVJ P1004 滑雪 Label:记忆化搜索

    背景 成成第一次模拟赛 第三道 描述     trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜.    ...

  5. [Cocos2d-x For WP8]Particle粒子系统

    在游戏中,经常要实现一些真实的效果,这些效果(如,火焰,雪花等)都是由大量微粒组合而形成的.为了在游戏中实现这种效果,我们必须引进粒子系统,粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子 ...

  6. COJ979 WZJ的数据结构(负二十一)

    试题描述 请你实现一个数据结构,完成这样的功能: 给你一个N个点的图,初始状态无边. 每次加入一条双向边(u,v,w),若加入后没有构成一棵生成树,输出“Not Yet”,否则输出当前最小生成树的权值 ...

  7. Checkbox的选中删除功能且Ajax返回后清除所选行

    转摘:http://javaweb1024.com/qianduan/jQuery/2015/04/13/544.html 功能描述:多选框勾选以后(全部或者部分),需要想后台提交已勾选的数据(Aja ...

  8. java不用jni,也可以获得当前系统性能信息

    最近做个项目,就是要取得cpu占有率等等的系统信息,一开始以为要用动态链接库了,但后来发现可以像下面这样做,不去调用jni,这样省去了很多看新技术的时间o(∩_∩)o... 在Java中,可以获得总的 ...

  9. thinkphp模板中foreach循环没数据的错误解决

    从控制器方法中$this->assign();函数将值传递给html模板 但是模板不显示数据,直接出来的是代码,效果就和html中写了php代码不能解析一样. 原来是我将thinkphp框架的引 ...

  10. 初始html5,遇到的第一个问题

    1.首先感到html5是html的延续,只是增加了新的标签属性,这是我的第一感觉 2.我写了几行画矩形的canvas入门代码,遇到了不显示问题 3.下面是我写完代码后的问题 刷新后还是这样 4.我的代 ...