1009. 说反话

 1 /*
 2  * Main.c
 3  * 1009. 说反话
 4  *  Created on: 2014年8月29日
 5  *
 6  **********测试通过******
 7  */
 8 
 9 #include <stdio.h>
10 #include <string.h>
11 
12 char inStr[81];
13 char outStr[41][81];
14 
15 int main(void) {
16 
17     int i, j;
18     int wordNum = 0;
19 
20     gets(inStr);
21 
22     int length = strlen(inStr);
23     //以空格分隔,将每个单词存储到二维数组
24     j = 0;
25     for (i = 0; i < length; i++) {
26         if (' ' == inStr[i]) {
27             wordNum++;
28             j = 0;
29             continue;
30         }
31         outStr[wordNum][j++] = inStr[i];
32     }
33 
34     while(wordNum>0)
35         printf("%s ", outStr[wordNum--]);
36     printf("%s
", outStr[0]);
37 
38     return 0;
39 }

这题目遇到一个古怪问题:

1 char inStr[81];
2 char outStr[41][81];

定义为全局时,才能在我的IDE中正常运行;如果定义为局部时( main( )里面第一行位置 )结果就会出现乱码。

如图:

1. Visual Studio 2013 Express,局部变量:

2. Ecplise Luna,MinGW,GCC,局部变量:

但是奇怪之处在于,提交PAT结果都是正确的,无论局部还是全局的,都完全通过。这里就不懂了,望请大虾指点!感谢!

题目链接:

http://pat.zju.edu.cn/contests/pat-b-practise/1009

参考:

http://www.xuebuyuan.com/1560821.html

 

原文地址:https://www.cnblogs.com/boomkeeper/p/1009b.html