前言: 更新: 之前的前言是我说我写的第一种解法测试点3过不去,经过若干天后我重新看这个题。仍然觉得没问题 然后把字符数组的大小改为82就过了测试点3。 鬼知道什么情况。应该是输入的测试用例不规范吧
题目:
解法1 char型数组与string数组赋值解法:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char arr[82] = {0};
int i = 0;
while ((arr[i] = getchar()) != '\n')
i++;
// 用来存放每一个单词
string brr[40];
char* p = arr;
int a = 0;
// 调整字符串
for (int j = 0; j < 81; j++)
{
if (arr[j] == ' ' || arr[j] == '\n')
arr[j] = '\0';
}
// 正序存放单词
while (*p != '\0')
{
brr[a] = p;
while (*p != '\0')
p++;
p++;
a++;
}
// 逆序打印单词
for (int i = a - 1; i >= 0; i--)
{
cout << brr[i];
if (i == 0)
break;
cout << " ";
}
}
注:1. 如果把这个代码整体调试一遍 会让你对字符数组,string类型对象,缓冲区等有更深的理解 (