洛谷 / 题目列表 / 题目详情 U379005 文档编辑 时间限制 1.00s 内存限制 128.00MB 提交答案 加入题单 做题计划(首页) 个人题单 团队题单 保存 题目提供者 white_feather 难度 普及− 历史分数
提交记录 标签 暂无标签 进入讨论版 相关讨论 暂无 推荐题目 暂无 复制Markdown 展开 题目描述 暑假期间, 妈妈让小白帮忙修改英文资料, 英文中还有一些统计数据 (统计数据都是正整数, 而且其前后都有空格)。 妈妈说: 如果文档结尾处有 “end”, 则应当删除, 文中所有的统计数据都要加上一个正整数 m。 你能编程完成小华的任务吗? (说明: 文档的开头没有空格, 也没有连续的空格)
输入格式 共2行,第1行输入正整数m,第2行输入要修改的字符串。
输出格式 输出共1行,输出修改后的字符串。
输入输出样例 输入 #1复制 13 There are 45 students in 32class.end 输出 #1复制 There are 58 students in 32class.
怎么做?
#include
using namespace std;
int main() { int i, j, m, num, st, idx; string str1; cin >> m; getchar(); getline(cin, str1); string str2(str1), sub; st = idx = 0; while (st >= 0) { idx = str1.find(" ", st);//根据当煎查级的开始位置,查找空格位置 sub = str1.substr(st, idx - st); for (i = 0, num = 0; i < sub.length(); i++) if (!(sub[i] >= '0' && sub[i] <= '9'))break;//判断子串是否为纯数字 if (i == sub.length()) { num = sub[0] - '0';//子串转数字 for (j = 1; j < sub.length(); j++) { num *= 10; num + sub[j] - '0'; } num += m; //数字+m for (j = idx - 1; j >= st; j--) {//数字转子串 str2[j] = (num % 10) + '0'; num /= 10; } } //更新下一次查找的开始位置 if (idx > 0)st = idx + 1; else st = -1; } //判断是否存在end if (str2.substr(str2.length() - 3, 3) == "end")str2.erase(str2.length() - 3); cout << str2; return 0; }
怎么修改?求大佬帮忙