【题目链接】

ybt 1406:单词替换
OpenJudge NOI 1.7 21:单词替换

【题目考点】

1. 多字符串处理

读入字符串时可以选择方法

  • 先读入整个字符串,而后遍历字符串,遇到空格时取子串
  • 每次读入一个字符,遇到空格时形成一个字符串
  • 使用while(cin>>s)来分别读入由空格分开的多个字符串

存储多个字符串可以选择使用:

  • 二维字符数组
  • 字符指针数组+动态内存分配
  • string类数组

【解题思路】

每个单词为一个字符串,读入多个字符串保存在某种结构中。遍历所有的字符串,看哪个字符串与给定的字符串相同,则将其替换。最后输出所有的字符串。

【题解代码】

解法1:使用二维数组保存多个字符串

读入整个字符串 截取子串,多个字符串保存在二维数组中

#include<bits/stdc++.h>
using namespace std;
#define N 105
int main()
{char words[N][N], oriWord[N], tarWord[N], s[N];int wordNum = 0, j = 0;//wordNum:单词数量 j:单词下标 char c;cin.getline(s, N);//读入整个字符串到s int len = strlen(s);for(int i = 0; i <= len; ++i)//将字符串s拆分为多个单词保存在words中 {if(s[i] == ' ' || s[i] == '\0'){words[wordNum][j] = '\0';wordNum++;j = 0;}elsewords[wordNum][j++] = s[i];}cin >> oriWord >> tarWord;//oriWord:要被替换的字符串 tw:替换后的字符串 for(int i = 0; i < wordNum; ++i){if(strcmp(oriWord, words[i]) == 0)//如果oriWord与第i个单词相同 strcpy(words[i], tarWord);//把第i个单词替换为tarWord }for(int i = 0; i < wordNum; ++i)cout << words[i] << ' ';return 0;
}

解法2:使用指针数组保存多个字符串

循环使用getchar()读入字符,构造单词,保存在指针数组中。

#include<bits/stdc++.h>
using namespace std;
#define N 105
int main()
{char *words[N], oriWord[N], tarWord[N], c;//words:指针数组 words[i]这个指针指向一个单词字符串 int wordNum = 0, j = 0;//wordNum:单词数量 j:单词下标 words[wordNum] = new char[N];//申请长为N的字符数组 do{c = getchar();if(c == ' ' || c == '\n') {words[wordNum][j] = '\0';wordNum++;j = 0;words[wordNum] = new char[N];}elsewords[wordNum][j++] = c;}while(c != '\n');//已知第一行末尾一定有换行符 读到换行符即结束 cin >> oriWord >> tarWord;//oriWord:要被替换的字符串 tw:替换后的字符串 for(int i = 0; i < wordNum; ++i){if(strcmp(oriWord, words[i]) == 0)//如果oriWord与第i个单词相同 strcpy(words[i], tarWord);//把第i个单词替换为tarWord }for(int i = 0; i < wordNum; ++i){cout << words[i] << ' ';delete words[i];//销毁内存 }return 0;
}

解法3:使用string类数组保存多个字符串

用while(cin>>s)读入多个单词

#include<bits/stdc++.h>
using namespace std;
#define N 105
int main()
{string s, words[N], oriWord, tarWord;int i = 0, wordNum;while(cin >> s)//每次将一个单词读入words[i],而后i指向下一个位置,直到没有单词为止。 words[i++] = s;tarWord = words[i-1];//最后两个单词为要被替换的单词与替换后的单词 oriWord = words[i-2];wordNum = i - 2;//单词总数 for(int i = 0; i < wordNum; ++i){if(oriWord == words[i])//如果oriWord与第i个单词相同 words[i] = tarWord; //把第i个单词替换为tarWord}for(int i = 0; i < wordNum; ++i)cout << words[i] << ' ';return 0;
}

信息学奥赛一本通 1406:单词替换 | OpenJudge NOI 1.7 21:单词替换相关推荐

  1. 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛

    [题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...

  2. 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶

    [题目链接] ybt 1190:上台阶 OpenJudge NOI 2.3 3525:上台阶 注:ybt 1190最大数据数量为71,而OpenJudge 2.3 3525中最大数据数量为100.如果 ...

  3. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题

    [题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...

  4. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818

    [题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...

  5. 信息学奥赛一本通 1115:直方图 | OpenJudge NOI 1.9 09

    [题目链接] ybt 1115:直方图 OpenJudge NOI 1.9 09:直方图 [题目考点] 1. 散列存储 也叫哈希存储.其思想为:将要存储的值通过某种算法映射到存储地址,映射算法为散列函 ...

  6. 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08

    [题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...

  7. 信息学奥赛一本通 1109:开关灯 | OpenJudge NOI 1.5 31:开关灯

    [题目链接] ybt 1109:开关灯 OpenJudge NOI 1.5 31:开关灯 [题目考点] 1. 模拟 2. 循环.数组 3. 用逗号分隔输出 设标志位:isFirst,表示现在输出的是否 ...

  8. 信息学奥赛一本通 1073:救援 | OpenJudge NOI 1.5 19:救援

    [题目链接] ybt 1073:救援 OpenJudge NOI 1.5 19:救援 [题目考点] 1. 直角坐标系下某点到原点的距离 点(x,y)(x,y)(x,y)到原点的距离d=x2+y2d = ...

  9. 信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题

    [题目链接] ybt 1070:人口增长 OpenJudge NOI 1.5 14:人口增长问题 [题目考点] 1. 循环求幂 设变量r初始值为1:int r = 1; 循环n次每次循环中输入变量a, ...

最新文章

  1. 《中国人工智能学会通讯》——2.13 医疗服务机器人综述
  2. Python2和Python3中raise Exception
  3. 大型网站技术架构小结
  4. python离散余弦变换_在python3下使用OpenCV做离散余弦变换DCT及其反变换IDCT
  5. asp.net 返回超时的解决方法
  6. 混合云:公共云和私有云之间取得平衡的方式?
  7. mel滤波器组频率响应曲线_非常好的滤波器知识总结,值得一看!
  8. 微软发布的两个MSF过程指导(Process Guidance)
  9. 讲师BLOG:http://linuxguest.blog.51cto.com/
  10. Java二分查找代码
  11. 商品分页查询 ego-prc 实现-easyui
  12. 英文邮件寻求帮助的礼貌用语
  13. 转载作品:人生重开模拟器(修仙7.0版)
  14. Web防火墙(WAF)是什么?和传统防火墙区别是什么?
  15. “海大学舍”Scrum Meeting(第十周会议记录)
  16. 使用WarZone联机对战横扫千军(TA)指南
  17. Dynamics CRM 客户端程序开发:常用工具介绍之Dynamics XRM Tools
  18. python爬取豆瓣电视剧页面
  19. 最新抖音简单无人直播教程
  20. Pytorch函数之topk()方法

热门文章

  1. 速记计算机键盘,速记键盘的原理
  2. 前端常见问题——Canvas 图片跨域
  3. smartcard 智能卡芯片 封装为DIP8 芯片样式
  4. 物联网课程学习目标_学习攻略|软件工程统计方法amp;amp;物联网
  5. 基于mybatis-plus的代码自动生成-完美版
  6. 入门爬虫示例-爬取豆瓣短评
  7. 黑龙江“智慧林草”顶层规划方案
  8. Qt开源软件集锦(部分有编译指导)
  9. 钉钉审批流的调用(官方推荐审批流)
  10. 【转】html 代码中 table 跨行跨列的操作