首次满屏烫烫烫,但是看不出哪里溢出了……

RachelKong 2015-07-27 09:38:07
题目:1086: 说反话
时间限制: 1 Sec 内存限制: 128 MB
提交: 0 解决: 0
[提交][状态][讨论版]
题目描述
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入
测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出
每个测试用例的输出占一行,输出倒序后的句子。

样例输入
Hello World Here I Come
样例输出
Come I Here World Hello

我的程序:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main(){
char newS[41][81];
string s;
int i, j=0;
int wordNum = 0;
getline(cin, s);
int length =s.length();
for (i = 0; i < length; i++){
if (s[i] ==' '){
j = 0;
wordNum++;//当读取到空格时单词数+1
continue;
}
newS[wordNum][j++] = s[i];
}
for (i = wordNum; i > 0; i--){//倒序输出
cout << newS[i];
}
cout << newS[0] << endl;
system("pause");
return 0;
}

问题:感觉思路是对的,但是输出除了第一个词是对的,之后几乎都是烫。
可能是自己改程序很难看出问题吧=。=求教各位~
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RachelKong 2015-07-27
  • 打赏
  • 举报
回复
感谢诸位~这下深深感受到了初始化的重要性。上课时老师说定义一个变量时一定要习惯初始化……吸取教训了=v=
飞翔的薄荷 2015-07-27
  • 打赏
  • 举报
回复
引用 1 楼 king191923157 的回复:
定义完数组 初始化为 0 一下 试试 memset(newS,0,sizeof(newS));
+1
king191923157 2015-07-27
  • 打赏
  • 举报
回复
读字符串 是 根据‘\0’ 判断结尾的,不是按数组大小 没初始化时 ,都是乱码newS[wordNum] 没有找到‘\0’就往后读了好多吧
RachelKong 2015-07-27
  • 打赏
  • 举报
回复
F11中…… i=2,j=0的时候,newS 0x00a5eeb4{....|烫烫烫…… newS[wordNum] 0x00a5ef05<字符串中的字符无效> s读取的是没有问题,这一行都正常读取了。 看来就是newS的问题……为什么说字符串中的字符无效呢,string应该可以直接当做字符数组用吧?
king191923157 2015-07-27
  • 打赏
  • 举报
回复
定义完数组 初始化为 0 一下 试试 memset(newS,0,sizeof(newS));

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧