h0266. 文本串里单词、数字和符号的识别

给你一段程序,识别出指定程序里的单词、数字和符号(空格不作处理)。

输入格式:

输入不超过1000行的代码,参考输入样例。

输出格式:

输出指定文本串里的单词、数字和符号,参考输出样例。

输入样例:

#include<iostream>
using namespace std;
const int N=1e4+5;
int a[N],L,M,l,r,s;
int main(){
    cin>>L>>M;
    while(M--){
        cin>>l>>r;
        for(int i=l;i<=r;i++) a[i]=1;
    }
    for(int i=0;i<=L;i++){
        if(a[i]==0) s++;
    }
    cout<<s;
    return 0;
}

输出样例:

# 符号
include 单词
< 符号
iostream 单词
> 符号
using 单词
namespace 单词
std 单词
; 符号
const 单词
int 单词
N 单词
= 符号
1 数字
e 单词
4 数字
+ 符号
5 数字
; 符号
int 单词
a 单词
[ 符号
N 单词
] 符号
, 符号
L 单词
, 符号
M 单词
, 符号
l 单词
, 符号
r 单词
, 符号
s 单词
; 符号
int 单词
main 单词
( 符号
) 符号
{ 符号
cin 单词
> 符号
> 符号
L 单词
> 符号
> 符号
M 单词
; 符号
while 单词
( 符号
M 单词
- 符号
- 符号
) 符号
{ 符号
cin 单词
> 符号
> 符号
l 单词
> 符号
> 符号
r 单词
; 符号
for 单词
( 符号
int 单词
i 单词
= 符号
l 单词
; 符号
i 单词
< 符号
= 符号
r 单词
; 符号
i 单词
+ 符号
+ 符号
) 符号
a 单词
[ 符号
i 单词
] 符号
= 符号
1 数字
; 符号
} 符号for 单词
( 符号
int 单词
i 单词
= 符号
0 数字
; 符号
i 单词
< 符号
= 符号
L 单词
; 符号
i 单词
+ 符号
+ 符号
) 符号
{ 符号
if 单词
( 符号
a 单词
[ 符号
i 单词
] 符号
= 符号
= 符号
0 数字
) 符号
s 单词
+ 符号
+ 符号
; 符号
} 符号cout 单词
< 符号
< 符号
s 单词
; 符号
return 单词
0 数字
; 符号
} 符号

 第2关:文本串里单词、数字和符号的识别 - jesee_smith - 博客园 (cnblogs.com)

//看了大佬题解,还是比较简单的,之前一直格式错误,问题原来就是我们最后输出“} 符号"时不换行 (这个应该是后面新增的测试点),以前我们并没有严格意义上去区分最后一行需要换行。

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;int i;
    while(getline(cin,s)){
        for(i=0;i<s.size();i++){
            if(s[i]>='0'&&s[i]<='9'){
                while(s[i]>='0'&&s[i]<='9'){
                    cout<<s[i];
                    i++;
                }
                cout<<" 数字\n";
                i--;
                continue;
            }
            if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
                while((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
                    cout<<s[i];
                    i++;
                }
                cout<<" 单词\n";
                i--;
                continue;
            }
            if(s[i]==' '||s[i]=='\n'||s[i]=='\t')//'\t'指多空格情况
                continue;
            if(s[i]!='}')cout<<s[i]<<" 符号\n";
            else cout<<s[i]<<" 符号";
        }
    }
    return 0;
}

因为格式问题,老师还更新了测试样例,下面请看原样例:

输入样例:

#include<iostream.h>
using namespace std;  
int main()  
{  
    int year = 2022;  
    cout << "hello" << endl;  
    return 0;  
}  

输出样例: 

# 符号
include 单词
< 符号
iostream 单词
> 符号
using 单词  
namespace 单词  
std 单词  
; 符号  
int 单词  
main 单词  
( 符号  
) 符号  
{ 符号  
int 单词  
year 单词  
= 符号  
2022 数字  
; 符号  
cout 单词  
< 符号  
< 符号  
" 符号  
hello 单词  
" 符号  
< 符号  
< 符号  
endl 单词  
; 符号  
return 单词  
0 数字  
; 符号  
} 符号  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星河欲转。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值