对于每个单词列表,在不改变单词顺序的情况下,用c++编写能输出一个将每个单词反转的行的程序。第一行输入一个整数 n(1≤n≤10),然后跟着输入 n 行句子,输出n行句子。
时间: 2023-03-19 15:21:10 浏览: 196
以下是用C语言编写的程序,能够将每个输入的句子中的单词反转输出,且不改变单词顺序。
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000 // 假设每个单词的长度不超过1000个字符
void reverse(char *s, int len) { // 将一个字符串反转
int i;
char tmp;
for (i = 0; i < len/2; i++) {
tmp = *(s+i);
*(s+i) = *(s+len-i-1);
*(s+len-i-1) = tmp;
}
}
int main() {
int n, i, j, len;
char s[MAXLEN];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s", s);
len = strlen(s);
for (j = 0; j < len; j++) {
if (s[j] == ' ') { // 遇到空格,将前面的单词反转
reverse(s+j-len, len-j+len-1);
len = len-j-1; // 更新单词长度
}
}
reverse(s, len); // 反转最后一个单词
printf("%s\n", s);
}
return 0;
}
```
程序思路如下:
1. 首先读入一个整数n,表示有n行输入。
2. 对于每行输入,我们定义一个字符数组s来存储。
3. 对于每行输入,我们遍历字符数组s中的每个字符,如果遇到了空格,说明前面的字符就是一个单词,我们将其反转。然后将单词长度更新为len-j-1(其中len是原字符串的长度)。
4. 最后反转最后一个单词,并将结果输出即可。
阅读全文