为什么不能输出且返回值很诡异
/*输入一个句子,将句子中的每一个单词翻转后输出。例如,输入 Hello World,输出 olleH dlroW
输入
输入一行,为一个字符串,不超过 100 个字符,单词之间以空格隔开
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致*/
#include<iostream>
#include<cstring>
#include<string.h>
using namespace std;
int main()
{
char str[100001];
int str2[100001],str3[100001];
memset(str, '0', sizeof(str));
memset(str2, '0', sizeof(str2));
memset(str3, '0', sizeof(str3));
cin.getline(str, sizeof(str));
int n = strlen(str);
int j = 0, k = 0;
int p,q;
if (str[0] != ' ') {
j += 1;
}
for (int i = 1; i < n-1; i++) {
if (str[i] != ' ' && str[i - 1] == ' '){
str2[j] = i;
j++;
}
if (str[i] != ' ' && str[i + 1] == ' ') {
str3[k] = i;
k++;
}
if (str[n - 1] != 0) {
k += 1;
}
}
for (int x = 0; x < j; x++) {
p = str2[x], q = str3[x];
while(str2[x] < str3[x]) {
int temp = 0;
temp = str[p];
str[p] = str[q];
str[q] = temp;
p++;
q--;
}
}
for (int i = 0; i < n; i++) {
cout << str[i];
}
}
memset(str, '0', sizeof(str));
改成
memset(str,0, sizeof(str));
后面两行一样