SOGO論壇
  登入   註冊   找回密碼
查看: 1023|回覆: 3

[程式設計] = =練習時習題不甚了解..(求救) [複製連結]

a1205050 該用戶已被刪除
狀態︰ 離線
發表於 2009-5-23 14:28:05 |顯示全部樓層
提示: 作者被禁止發言或禁止訪問或刪除帳號,本文內容已被系統自動屏蔽。

Rank: 6Rank: 6

數位硬體勳章

狀態︰ 離線
發表於 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 編輯 》

Rank: 2

狀態︰ 離線
發表於 2009-6-10 01:29:50 |顯示全部樓層
如果只是改寫而結果是一樣的話我會這樣子改:
    while((ch=getche())!=13&&i<80)
    str=ch;
    i++;

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

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

《 本帖最後由 alan1573 於 2009-6-10 01:54 編輯 》
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 熱心助人

總評分: 威望 + 2   查看全部評分

Rank: 2

狀態︰ 離線
發表於 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 的本質了解多少,而不是一心想要飛而忘了怎麼走路
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 熱心助人

總評分: 威望 + 2   查看全部評分

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-3-29 19:10

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部