請原諒我的標題寫的有些誇張,但實際情況往往比想象的更離奇。好了進入主題。小a最近正在學習c語言,這時候小a上小學的兒子小b跑過來問:「爸爸,這道數學題怎麼算?」,小a看了看題目說「一百天是多少個禮拜零多少天?」
好了,我們的小a,看到題目後不假思索,一迅雷不及掩耳盜鈴之勢寫下了如下**:
#include
int main(void)
這是小a自己測試的結果:
小a高興地說:「來兒子,看爸爸給你算。「
這時候,小b小心翼翼的敲下:一百天, 然後把計算結果填在了作業本上。不料第二天小b哭著鼻子說:」爸爸,你騙我,答案是錯的,全班就我乙個人的答案是錯的。~~(>_
小a說,這個只能輸入數字,小b說:」爸爸,一百天就是100天 啊,「
小a想了想,最後改了程式如下:
#include
int main(void)
printf("輸入有誤,請重新輸入:");
while (getchar() != '\n');
}printf("%d are %d week(s) %d day(s)\n",days, days/7,days%7);
return
0;}
然後小a自己又測試了一下:
然後小b說讓他再試試,這次小a緊緊的看著小b。意想不到的事還是發生了。(呵呵,小b真調皮)
小a看到這種情況仔細想了想100tian很明顯不符合輸入,即使結果是正確的也不行,我是**座,再改:
#include
int main(void)
printf("輸入有誤,請重新輸入:");
while (getchar() != '\n');
}printf("%d are %d week(s) %d day(s)\n",days, days/7,days%7);
return
0;}
小a這次覺得可以了,然而萬萬沒想到,淘氣的小b還是那麼淘氣:
哎,我們可憐的小a被兒子小b這麼瘋了。小a抬起沉重的手指再改。
#include
int main(void)
printf("輸入有誤,請重新輸入:");
while (getchar() != '\n');
}printf("%d are %d week(s) %d day(s)\n",days, days/7,days%7);
return
0;}
完了小a再測試:
明明輸100,為什麼不執行了? 然後小a又敲了一次100
這次為什麼又執行了,於是小a仔細看了看程式,終於找到了,原來是這句引起來的。
if(ret == 1 && getchar() == '\n' && days >= 0)
printf("輸入有誤,請重新輸入:");
while (getchar() != '\n');
因為鍵盤輸入乙個負數,前面兩個條件都滿足,只有第三個不滿足,在程式中,程式把記憶體中的-100 放到 days中去了,然後釋放記憶體,也就是說記憶體裡現在什麼都沒有了,所以while (getchar() != 『\n』);這句話就一直等待使用者輸入。然後被讀走,導致程式沒有反應。知道原因後小a這樣改了程式:
#include
int main(void)
printf("輸入有誤,請重新輸入:");
if (ret1 != 1 || ret2 != '\n')
}printf("%d are %d week(s) %d day(s)\n",days, days/7,days%7);
return
0;}
小a看到這裡心裡暫時是滿意了。
誰知道後面還有乙隻更大的蟲子,願小a學習之路多鑽研。
乙個memset引發的血案
前幾天做了一道bst題,提交了幾次都是wa,今天抽空拿了出來仔細瞧瞧總算被我發現禍頭根源.總結原因還在於自己對memset不太了解,以前用對估計也是瞎貓撞見死耗子 memset的介紹 void memset void buffer,int ch,size t count buffer 指向某段記憶體...
乙個分號引發的「血案」
再多的表情也無法詮釋我現在的心情!a b for matrices 這是很水的一道題,然而卻整整折騰了我2個多小時。從晚上6點多開始,花了沒幾分鐘就把 敲好了,可是資料一測,竟然不對,然後就開始找問題,找了很久,我竟然都還沒看出問題在哪,越找心裡越不爽,這麼做明明對的呀,一執行怎麼就錯了呢?一直到了...
乙個strlen引發的血案
部分測試 原來是這樣的 int decryptrelation aesdecryptfromfiletobytes const std string in file path,unsigned char out data,const char aes encrypt key,int in data ...