一、题目忘记在哪了,大概:
输入:一行多个单词以空格隔开。如:123 hello world
输出:一行每个单词反转。如:321 olleh dlrow
二、经验:
(1)行输入问题
详见:cin、cin.get()、cin.getline()比较
cin:遇到【enter】【space】【tab】开始下一个输入,且忽略多个【enter】等。
cin.get():a. cin.get(a) :输入一个字符。
b. cin.get(array, num) :输入num个字符。
c. cin.get(array, num, spiltchar) :输入num个字符遇到spiltchar停止。
cin.getline(): 与get相似,就一点不同, 如果一行结束或者遇到spiltchar删除缓冲区的【enter】,及下一个字符不会读到enter。
综上:选择cin.getline()作为输入最好。
(2)尽量用while循环
(3)学会char array[num] = {0}, 在后面判断的时候while(array[i])就知道是不是已经读入的数据了。
三、代码:
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
char input[501] = {0};
char output[501] = {0};
cin.getline(input, 501);
int i = 0;
int j = 0;
while(input[i]){
j = i;
while(input[i]!=' '&&input[i]) i++; // i = ' '
int k = i;
while(j!=i){
output[j] = input[k-1];
j++; k--;
}
output[j]=' ';
i++;
}
output[j]='\0';
cout << output;
return 0;
}