用指针数组编写程序,输入依据由若干单词和若干空格组成的英文字符串,单词之间用若干个空隔分开输入保证句子末尾没有多余的空格。要求程序将举重单词颠倒顺序输入。
时间: 2024-12-20 15:20:36 浏览: 14
在C语言中,你可以使用指针数组和字符串处理函数(如`fgets`、`strtok`)来实现这个需求。首先,你需要读取用户输入的字符串,然后使用`strtok`分割单词,再将单词存储到指针数组中。接着,反转数组中的元素并输出。
以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 10 // 指定最大单词数量
// 函数定义,用于反转指针数组
void reverse_words(char** words, int count) {
for (int i = 0; i < count / 2; i++) {
char* temp = words[i];
words[i] = words[count - 1 - i];
words[count - 1 - i] = temp;
}
}
int main() {
char sentence[MAX_WORDS][50]; // 存储单词的数组
char input[100];
int word_count = 0;
// 输入句子
printf("Enter a sentence with spaces between words: ");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 去除换行符
// 分割单词
char* token = strtok(input, " ");
while (token != NULL && word_count < MAX_WORDS) {
strcpy(sentence[word_count], token);
word_count++;
token = strtok(NULL, " ");
}
// 如果有超过最大单词数,提醒用户
if (word_count == MAX_WORDS) {
printf("Too many words, please enter fewer.\n");
return 1;
}
// 反转单词顺序
reverse_words(sentence, word_count);
// 输出结果
for (int i = 0; i < word_count; i++) {
printf("%s ", sentence[i]);
}
return 0;
}
```
在这个程序中,`reverse_words`函数接收一个指向字符指针的指针数组和一个计数器,通过交换元素实现了数组的反转。`main`函数负责输入、分割单词和打印结果。
运行这个程序时,请确保不要输入超过`MAX_WORDS`个单词。如果输入了更多,程序会提示用户并退出。
阅读全文