短信中提取号码

题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1732

1732: 短信中提取号码

时间限制: 1 Sec 内存限制: 64 MB

题目描述

手机短信已经成为了我们学习、工作和生活中信息交流的一种常用方式。但是我们经常会碰到这样的情形,想对对方发短信或者打电话的时候,记不起来或者不知道电话号码,这个时候,通常这个时候,我们会向自己熟悉的人求助,请他查到对方的号码后,再将对方的号码发送短信息告诉你。收到短信后,打开短信就可看到你想联系的人的号码,有了这个号码就可以别人联系了。很多手机都具有从短信中提取号码的功能,这样就省得你必须记下来才能继续下一步的打电话或发短信的操作,而是,直接根据提取出来的号码进行下一步操作。你也可以编程做到这一点!

输入

第一行有个整数n(1≤n≤1000)表示测试用例的个数。其后的每一行中有一条短信,每一条短信中只包含字母、数字、空格、标点符号,没有回车换行符,短信的长度不超过400个英文字符。

输出

将每条短信中的电话号码提取出来。每个号码占一行。如果该短信中没有电话号码,请输出“no phone numbers!” 每个测试用例的输出之间用一个空行隔开。

样例输入

2
Mr Zhang's home phone is 073112345678, and his office phone is 87654321, his mobile phone is 13812345678
Sorry, I don't have his any phone numbers!

样例输出

073112345678
87654321
13812345678

no phone numbers!

解析:注意空格符等细节的处理

代码:

#include<iostream> 
#include<string> 
using namespace std; 
int main() 
{ 
    int t; 
    cin >> t; 
    getchar(); 
    int ok; 
    while (t--) 
    { 
        ok = 1; 
        string ch; 
        getline(cin, ch); 
        int num = ch.size(); 
        if (ch[0] > 47 && ch[0] < 58) 
        { 
            ok = 0; 
            cout << ch[0]; 
        } 
        for (int i = 1; i < num; i++) 
        { 
            if (int(ch[i]) > 47 && int(ch[i]) < 58) 
            { 
                ok = 0; 
                cout << ch[i]; 
            } 
            if ((int(ch[i - 1]) > 47 && int(ch[i - 1]) < 58) && (ch[i] < 48 || ch[i]>57)) 
                cout << endl; 
        } 
        if (ok) 
            cout << "no phone numbers!" << endl; 
        if (int(ch[num - 1]) > 47 && int(ch[num - 1]) < 58) 
            putchar('\n'); 
        putchar('\n'); 
    } 
} 
/************************************************************** 
    Problem: 1732 
    User: 201730685257 
    Language: C++ 
    Result: 正确 
    Time:0 ms 
    Memory:1484 kb 
****************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值