#include <iostream> #include <cstring> #include <string> using namespace std; int main() { int n,c,i,j,h[10]; //n用来存储字符串长度,i j用来计数,h存放查找的字符串出现的位置 char st[100],s,z[20],x[20],m; //s在空格转换和判断是否是用到,m判断是用到,z x用来存放要查询的字符串 cout<<"请输入一段英文句子:"; gets(st); n=strlen(st); while(st[n-1]==' ') //把后面的空格放到前面 { s=st[n-1]; for(i=n-1;i>=0;i--) { if(i==0) break; st[i]=st[i-1]; } st[i]=s; } for(i=n-1;i>=0;i--) //把中间多余的空格去掉 { if(i==0) break; if(st[i]==' '&&st[i-1]==' ') { s=st[i]; for(j=i;j>=0;j--) { if(j==0) break; st[j]=st[j-1]; } st[j]=s; } } i=0; while(st[i]==' ') { i++; } //i=i+1; string str(st); str.erase(0,i); cout<<"调整后的句子为:"<<str<<endl; //输出调整后的语句 //i=0; //h[i]=0; cout<<"要查询?(y/n):"; //查询 cin>>s; while(s=='y') { i=0; h[i]=0; cout<<"请输入要查询的单词:"; cin>>z; c=strlen(z); while(i<n) { if(i==0) h[i]=str.find(z,0); else h[i]=str.find(z,h[i-1]+1); if(h[i]==-1) break; i++; } cout<<"出现的次数:"<<i<<endl; if(i!=0) { cout<<"位置为:"; //输出位置 for(j=0;j<i;j++) cout<<h[j]+1<<' '; cout<<endl; cout<<"是否要替换改单词?:(y/n)"; //替换单词 cin>>m; if(m=='y') { cout<<"请输入要替换成的单词:"; cin>>x; do { cout<<"要替换第几个:"; cin>>j; }while(j<1||j>i); str.replace(h[j-1],c,x); } } else cout<<"你要查找的单词不存在!"<<endl; cout<<"该句子变成:"<<str<<endl; cout<<"是否要继续查询?(y/n):"; cin>>s; } //h=str.find("my"); cout<<"最后的句子为:"<<str<<endl; return 0; }

包含很多调试信息!

作业的第三题!

3、用字符数组保存一个英文句子。
   (1)  删除该英文句子的前导空格、后导空格、句中多余空格(单词之间只留一个空格)。
   (2) 统计句中某单词出现的次数。
   (3) 查找并替换某单词。

转载于:https://www.cnblogs.com/cyxcw1/archive/2009/06/26/3051367.html

很恶心的一个关于字符串的题目!相关推荐

  1. 一个很不错的C++类的练习题目

    //一个很不错的C++类的练习题目1.定义一个C++枚举(作为枚举结构),有以下四个值:一次.每天.每周.每月. 为这个枚举定义一个重载的输出操作符<<,根据枚举值,它将每日.每周.每月和 ...

  2. C语言的很吊的printf-----来自一个C语言竞赛题目

    一个C语言竞赛题目: 1 #include <stdio.h> 2 int main() 3 { 4 const int unix=1; 5 printf(&unix[" ...

  3. 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串。 但是要保证汉字不被截半个。

    题目: 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4, 应该截为"我AB",输入 ...

  4. 共享一个从字符串转 Lambda 表达式的类(4)

    开始写第四篇,别的不说了.这篇将涉及到如何使用字符串解析结果,生成一个 Lambda 表达式树.东西有点多,我先整理一下思路,在下面说明一下.如果你有问题,在后面的评论上写下来,我看到了会回复你. 在 ...

  5. LeetCode 2116. 判断一个括号字符串是否有效(栈)

    文章目录 1. 题目 2. 解题 1. 题目 一个括号字符串是只由 '(' 和 ')' 组成的 非空 字符串. 如果一个字符串满足下面 任意 一个条件,那么它就是有效的: 字符串为 (). 它可以表示 ...

  6. 很特别的一个动态规划入门教程

    很特别的一个动态规划入门教程 今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下--- (说明一下,本人非常痛恨教材公式定理漫天飞,实际 ...

  7. 我对于男人喜欢喷香水是觉得很恶心的一件事

    我对于男人喷香水是觉得很恶心的一件事,并且还是干IT的,不管怎样我觉得都要相信自身的魅力,无论是气味如何,自然才是最重要的, 除非你最近得了什么怪病,有很严重的体味,照顾周围的人的味觉和出于礼貌,我觉 ...

  8. 【python小作业】编写函数,接收一个任意字符串,返回其中最长的数字字串。要求使用正则表达式。

    题目 编写函数,接收一个任意字符串,返回其中最长的数字字串.要求使用正则表达式. python题解 使用正则表达式re.findall,可以找到所有的数字, 其中+表示前面的字符匹配1次或多次. \d ...

  9. 编写一个用于字符串比较的函数

    编写一个用于字符串比较的函数mystrcmp. 程序的运行结果如下所示: 输入: word work 输出: word<work 这是一个神奇的题--题目显示不完全-- 然后--按位比较ASCI ...

  10. 【C语言】编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。

    题目: 编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出. **输入提示信息:"请输入十 ...

最新文章

  1. 深入理解SpringCloud之配置刷新
  2. 两次include一个文件的问题
  3. 阿里云存储OSS中设置上传文件content type
  4. 男人一生要做的九件事情
  5. TOMCAT问题总结
  6. 要想通过面试,MySQL的 Limit 子句底层原理你不可不知
  7. Oracle ODI 12c之多表联合查询以及定时任务设置
  8. fastjson maven依赖_Spring Boot 使用 Maven 定制一个 parent 简化开发
  9. MATLAB秦九韶算法
  10. Windows - 安装/卸载服务 - 学习/实践
  11. linux-ab压力测试
  12. 计算机视觉中的图像扭曲
  13. 11.2.1 绝对值函数
  14. 爬虫返回乱码以及解决办法以及锟斤拷、ISO-8859-1转码、#、#x转码、unicode转码,gbk转码,ascii转码
  15. hdu - 1435 Stable Match 稳定婚姻问题、Gale-Shapley算法模板
  16. el-table表格数据 中文 键值渲染
  17. 牛津英语字典pdf下载_牛津树1阶段精讲笔记分享
  18. “全民来答题”用户协议
  19. 阿里云下部署es单机
  20. GopherChina第一天小结

热门文章

  1. DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled Tra
  2. JavaSE学习--集合02
  3. android 子线程的网络请求为什么还会造成界面卡顿_京东数科mPaaS:深度解读京东金融App(Android)的秒开优化实践...
  4. Flink Batch SQL 1.10 实践
  5. Go基础-Go中的Println和Print和Printf之间的区别
  6. oracle12c bug,12c expdp ORA-31623 -又遇到BUG
  7. java中伪代码_问Java的伪代码怎么书写
  8. 四十二、在线预览pdf文件
  9. SPA单页面应用、前后端分离项目SEO优化的方法
  10. ES6 系列之我们来聊聊装饰器