题目4:字符串处理 1)从键盘输入一个英文句子并保存在字符数组中: 2)能删除多余的空格:单词之间只留一个空格,句子前后无空格; 3)能统计某单词出现的频度: 4)能替换某个单词
时间: 2024-02-01 08:12:59 浏览: 109
以下是基于C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char sentence[MAX_LEN];
char word[MAX_LEN];
char new_word[MAX_LEN];
int word_count = 0;
int len = 0;
// 输入句子
printf("请输入一个英文句子:\n");
fgets(sentence, MAX_LEN, stdin);
// 删除多余空格
int i, j;
len = strlen(sentence);
for (i = 0, j = 0; i < len; i++) {
if (sentence[i] != ' ' || (i > 0 && sentence[i - 1] != ' ')) {
sentence[j] = sentence[i];
j++;
}
}
if (j > 0 && sentence[j - 1] == ' ') {
sentence[j - 1] = '\0';
j--;
}
sentence[j] = '\0';
// 统计单词频度
printf("请输入要统计的单词:\n");
scanf("%s", word);
len = strlen(word);
for (i = 0; i <= j - len; i++) {
if (strncmp(sentence + i, word, len) == 0) {
word_count++;
}
}
printf("单词 %s 出现的次数为:%d\n", word, word_count);
// 替换单词
printf("请输入要替换的单词:\n");
scanf("%s", word);
printf("请输入新的单词:\n");
scanf("%s", new_word);
len = strlen(word);
for (i = 0; i <= j - len; i++) {
if (strncmp(sentence + i, word, len) == 0) {
memmove(sentence + i + strlen(new_word), sentence + i + len, j - i - len + 1);
memcpy(sentence + i, new_word, strlen(new_word));
j = j - len + strlen(new_word);
}
}
printf("替换后的句子为:%s\n", sentence);
return 0;
}
```
代码中使用了fgets函数从键盘输入句子,并使用了字符串处理函数来删除多余空格、统计单词频度和替换单词。其中,strncmp函数用于比较字符串,memmove函数用于移动内存块,memcpy函数用于复制内存块。
阅读全文