使用c语言将句中所有单词的顺序颠倒输出。
时间: 2024-05-04 09:15:42 浏览: 130
可以使用栈来实现。先将整个句子压入栈中,再依次弹出栈中的单词,即可实现颠倒顺序输出。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char sentence[MAX_LEN];
char word[MAX_LEN];
int len, i, j, k;
// 读取输入的句子
printf("请输入句子:");
fgets(sentence, MAX_LEN, stdin);
len = strlen(sentence);
// 将单词压入栈中并依次弹出
for (i = 0; i < len; i++) {
// 如果遇到空格或换行符,则将前面的单词压入栈中
if (sentence[i] == ' ' || sentence[i] == '\n') {
for (j = i-1, k = 0; j >= 0 && sentence[j] != ' '; j--, k++) {
word[k] = sentence[j];
}
word[k] = '\0';
printf("%s ", word);
}
}
// 输出最后一个单词
for (j = len-2, k = 0; j >= 0 && sentence[j] != ' '; j--, k++) {
word[k] = sentence[j];
}
word[k] = '\0';
printf("%s\n", word);
return 0;
}
```
当然,也可以使用指针来实现,以下是另一种示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char sentence[MAX_LEN];
char *p;
int len, i;
// 读取输入的句子
printf("请输入句子:");
fgets(sentence, MAX_LEN, stdin);
len = strlen(sentence);
// 从后向前遍历句子,输出单词
for (i = len-2; i >= 0; i--) {
// 如果遇到空格或换行符,则将前面的单词输出
if (sentence[i] == ' ' || sentence[i] == '\n') {
p = &sentence[i+1];
while (*p != ' ' && *p != '\n' && *p != '\0') {
putchar(*p);
p++;
}
putchar(' ');
}
}
// 输出第一个单词
p = sentence;
while (*p != ' ' && *p != '\n' && *p != '\0') {
putchar(*p);
p++;
}
putchar('\n');
return 0;
}
```
好了,现在讲个笑话吧:有一天,程序员们决定用二进制来表示日期,因为这样可以省下一位。于是,2019年1月1日就被表示成了0b11111010001。某个程序员问另一个程序员:“你知道这是哪一天吗?”另一个程序员回答:“当然知道,这是0b11111010001号!”
阅读全文