SOGO論壇

標題: = =練習時習題不甚了解..(求救) [列印本頁]

作者: a1205050    時間: 2009-5-23 14:28:05     標題: = =練習時習題不甚了解..(求救)

提示: 作者被禁止發言或禁止訪問或刪除帳號,本文內容已被系統自動屏蔽。
作者: kazima    時間: 2009-6-9 05:50:52

原帖由 a1205050 於 2009-5-23 14:28 發表
01  由鍵盤輸入字串,並附加到檔案output.txt中
02  #include <stdio.h>
03  #include <conio.h>
04  #include <stdlib.h>
05  #define ENTER 13
06  #define MAX 80
07  int  main(void)
08  {
09   ...



我對程式不在行,但是我可以高度肯定這是個XX問題.....
程式敘述越長,意味著佔用空間越大,使用時佔用記憶體也越大
所以,既然可以用最少的敘述去達到效果,有誰會去用較長的敘述
我想不是太難的問題,而是沒有人知道
因為大家在程式設計時都在追求越短越少越好,

請注意用詞哦!

《 本帖最後由 紅塵孤鳥 於 2009-6-9 08:17 編輯 》
作者: alan1573    時間: 2009-6-10 01:29:50

如果只是改寫而結果是一樣的話我會這樣子改:
    while((ch=getche())!=13&&i<80)
    str=ch;
    i++;

但如果是要用令一種寫法的話我想不到...

#include <conio.h>  這個函數庫好像用不到它,試試把他刪掉程式會跑快一點~~

《 本帖最後由 alan1573 於 2009-6-10 01:54 編輯 》
作者: regist    時間: 2009-7-12 12:20:24

如果只是要把它展開成比較攏長的話,我會把第15、16行改成:
    if(i<MAX) {
        ch = getche();
        for(;;){    // 相當於 while(true){}
            if(ch == ENTER) {
                break;
            }
            str=ch;
            i = i + 1;
        }
    }

看來邏輯似乎是等價的,不過我沒有C的編譯器,沒測試,大致上應該是可以了
原題目的邏輯也差不多是這個樣子,只是寫得比較簡短
應該說如果C語言不支援簡短的statement
(比如 i++, while 裡的單行述敘可不加大括號{},變數設值後,可直接取設完值的變數再運算,而不需再拆成兩個statement....ex: while((ch=getche())!=ENTER.... etc),

那麼大家寫出來的樣子會跟這個差不多
本題題目應該是要考大家對 C 的本質了解多少,而不是一心想要飛而忘了怎麼走路




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM