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\n", 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
#include<stdio.h>int main(){char input[81];int space[82];int i,j=0,a,k;int x;gets(input);input[80] = 0; //safe donespace[j++] = -1;//mark the first word begin's frontfor(i=0,x=0;input[i]>0;i++,x++){if(input[i]==' ')space[j++]=i;}space[j]=x; //mark the last word endfor(a=j;a>0;a--){for(k=space[a-1]+1;k<space[a];k++)printf("%c",input[k]);if(a>1) printf(" ");else printf("\n");//the last not have blank}return (0);}試試這樣。你的代碼太冗余了。
不是說反話 是傲嬌 類似於撒嬌吧 就好像你女朋友生你氣 你要抱她 她會說 滾開 誰要你抱之類的 但是你強行抱住她 她his會很高興的 這就是傲嬌
雖然和說反話差不多 但是有區別 傲嬌可以明顯看出來時口是心非 嘴上說不好 心裡說好
說反話就不一定了 不一定看得出來 而且也許嘴上說好心裡說不好
總的來說就是 傲嬌算褒義詞 說反話就是貶義