[字符串操作]删除单词后缀
2023-12-13 21:00:14
删除单词后缀
题目描述
给一组各分别以er、ly和ing结尾的单词, 请删除每个单词的结尾的er、ly或ing, 然后按原顺序输出删除后缀后的单词(删除后缀后的单词长度不为0)。
关于输入
输入的第一行是一个整数n(n≤50),表示后面有n个单词;
其后每行一个单词(单词中间没有空格,每个单词最大长度为32)。
关于输出
按原顺序输出删除后缀后的单词。
例子输入
3 referer lively going
例子输出
refer live go
提示信息
使用strlen(str)方法可以知道字符串的长度;
使用strcmp(str1,str2)可以判断两个字符串是否相等;
注意,这两个函数都在string.h中。
解题分析
只要利用好strcmp函数即可
#include <stdio.h>
#include <string.h>
#define MAX_LEN 33
int main() {
int n, i;
char word[MAX_LEN];
scanf("%d", &n); // 输入单词的数量
for(i = 0; i < n; i++) {
scanf("%s", word); // 输入单词
int len = strlen(word); // 计算单词的长度
// 检查单词的后缀,并删除它
if(len >= 2 && strcmp(word + len - 2, "er") == 0) {
word[len - 2] = '\0';
} else if(len >= 2 && strcmp(word + len - 2, "ly") == 0) {
word[len - 2] = '\0';
} else if(len >= 3 && strcmp(word + len - 3, "ing") == 0) {
word[len - 3] = '\0';
}
printf("%s\n", word); // 输出删除后缀后的单词
}
return 0;
}
当然,也可以选择最后的时候不输出
#include <iostream>
#include <cstring>
using namespace std;
char words[55][40];
int main(){
int n; cin>>n;
for(int i=0;i<n;i++){
scanf("%s",words[i]);
}
for(int i=0;i<n;i++){
int len=strlen(words[i]);
for(int j=0;j<len;j++){
if(j==len-3 || j==len-2){
if(strncmp(words[i]+j,"er",2)==0 || strncmp(words[i]+j,"ly",2)==0 || strncmp(words[i]+j,"ing",3)==0){
break;
}
}
printf("%c",words[i][j]);
}
printf("\n");
}
return 0;
}
文章来源:https://blog.csdn.net/StudyingPanda/article/details/134980542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!