先说一下正则表达式

%*[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. BZOJ3757 : 苹果树

    树上莫队,有几个坑: a可能等于b 数据范围是100000 #include<cstdio> #include<algorithm> #include<cmath> ...

  2. 关于ztree异步加载的问题(二)

    本来以为这个异步加载会很难控制,因为考虑到ztree节点图标的控制,结果并不是那么困难,ztree自己控制图标,你只要在json中设置isParent:true,它自己会识别父节点并控制图标,以下是核 ...

  3. UITextFielddelegate委托方法注释

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{         //返回一个BOOL值,指定是否循序文本字段开始编辑     ...

  4. jar MANIFEST.MF 汇总

    : Manifest-Version: 1.0Created-By: Apache Ant 1.5.1Extension-Name: Struts FrameworkSpecification-Tit ...

  5. Ctrl+Shift+F12切换最大化编辑器

    常用快捷键(keymaps:Default情况下) Esc键编辑器(从工具窗口) F1帮助千万别按,很卡! F2(Shift+F2)下/上高亮错误或警告快速定位 F3向下查找关键字出现位置 F4查找变 ...

  6. 使用SEP禁止客户端修改IP地址 - 飞舞的菜刀 - 51CTO技术博客

    1.首先从注册表中搜寻 IP地址所在的位置,查到几项,此项即可: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Paramete ...

  7. CSS权威指南 - 层叠

    CSS权威指南 第三章结构与层叠 - 层叠 按权重及来源排序 1. Reader important declarations 2. Author important declarations 3. ...

  8. userDefaults

    // // RootViewController.m #import "RootViewController.h" @interface RootViewController () ...

  9. PHP防止用户重复提交表单

    我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦. 那么如何规避 ...

  10. ICON文件保存

    这两天想做一下windows系统下图标的修改,让程序有更新的时候能够更新图标的外观,达到提醒的作用,360,QQ经常采用这种方式进行更新的提示,也有采用弹框的方式来提示,用新版QVOD的同事可能见到过 ...