RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 
 25  2/2  <  1  2 


 
主題: [資訊電機] [問題]C++中switch的寫法該如何寫?   字型大小:||| 
Acute
論壇第一大毒王
等級: 18等級: 18等級: 18等級: 18等級: 18
論壇第一小神童

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8216
 . 失蹤: 5568
#16 : 2005-4-7 10:48 PM     只看本作者 引言回覆


引用:
老江寫到:
我是用Bloodshed Dev-C++
原本想灌微軟的.net
不過好肥..
所以就灌了這個

自爆就是說程式自己就關了
之前會一直遇到這問題(第一篇程式碼時)

的確應該是在輸入Q之前程式都不應該關掉
我之前是想說用goto next讓他繼續跑
不過不行

在加入小神童的while之後就不會在跑完一項就跳掉了
不過每次都會看到那句Invaild Number

這好像是必然的結果

不過我不知道有while (1)這種用法呢
我認識的while是在那邊算count算到滿足條件為止
沒想到還可以打個(1)就好了
真是太神奇了


你會每次看到一個Invaild Number 是因為你輸入兩個字元, 但是只讀取一個
你想你按鍵的順序, 先按字母E, 再按Enter key, 所以, 你輸入兩個字元
但是你的程式scanf("%c",&enter); 只收走一個字元, 所以, 另一個, 下次收到
你可以在scanf 後面加一個getchar (), 這樣子, 解決眼前問題
但是user 輸入錯誤, 你依然是錯
等我晚一點有空再告訴你怎麼辦... 我要回家了, 哈

Acute.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
Acute
論壇第一大毒王
等級: 18等級: 18等級: 18等級: 18等級: 18
論壇第一小神童

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8216
 . 失蹤: 5568
#17 : 2005-4-7 11:34 PM     只看本作者 引言回覆

程式利用gets () 一次取得一個字串輸入, 而不要取得字元輸入
這樣子, 可以避免掉很多問題
也就是:

char buf[255]

gets (buf);

然後buf[0] 就相當於你的enter
這樣子, 萬一user 一次輸入好幾個字元, 你會通通收下來, 然後只解釋第一個字元 (因為只用buf[0])
另外, 程式要稍微好看一點點, 前面應該加一些printf 敘述, 把允許的command 印出來

最後... 以上的程式碼... 是C 語言, 不是C++

Acute.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
老江
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
School Days推廣

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7451
 . 失蹤: 134
#18 : 2005-4-8 08:00 AM     只看本作者 引言回覆

原來如此
enter key也能算是一個字元啊
我再去查查get的用法好了

其實我只是懶的打這麼多printf...XD

題外話
小神童的簽名檔裡第二個連結消失了喔
"指定的主題不存在或已被刪除,請返回。"



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
GERRYccc
名譽版主
等級: 8等級: 8
凹~~嗚~~^^y

今日心情

 . 積分: 103
 . 文章: 597
 . 收花: 497 支
 . 送花: 754 支
 . 比例: 1.52
 . 在線: 446 小時
 . 瀏覽: 7391 頁
 . 註冊: 8212
 . 失蹤: 103
 . ~@.@~ TWed2k 星球
#19 : 2005-4-8 05:38 PM     只看本作者 引言回覆

我已經大致把一些細節改美觀了,完整呈現!!

/*
User enters        Action
------------------------------------------------------------------------
q                  programs ends
e                  get two numbers from keyboard and display the area of a rectangular
f                   Get an radius from keyboard and display the area of a circle
s                   Get a number from keyboard and display the area of a equal lateral hexagon
all others       Display an error message "Invalid Number"
*/
#include<stdio.h>

double rec(double r1,double r2);
double cir(double r);
double hex(double h);

int main(void)
{
    while(1)
{
    char enter[255];
    double r1,r2,r,h;
    printf("Q:離開程式\n");
    printf("E:計算長方形面積\n");
    printf("F:計算圓面積\n");
    printf("S:計算等邊六邊形面積\n");
    printf("\n請輸入代號>"); gets (enter);
    switch(enter[0])
    {
    case 'q':
    case 'Q':
         return 0;
         break;
    case 'e':
    case 'E':
         printf("\n請輸入長方形的長>");
         scanf("%lf",&r1);
         printf("請輸入長方形的寬>");
         scanf("%lf",&r2);
         printf("\n長方形面積:%f",rec(r1,r2));
         break;
    case 'f':
    case 'F':
         printf("\n請輸入圓半徑>");
         scanf("%lf",&r);
         printf("\n圓面積:%f",cir(r));
         break;
    case 's':
    case 'S':
         printf("\n請輸入六邊形邊長>");
         scanf("%lf",&h);
         printf("\n六邊形面積:%f",hex(h));
         break;
    default:
            printf("\n###########################");
         printf("\nInvaild Number,輸入錯誤");
            printf("\n###########################");
         printf("\n\n請按任意鍵後重新輸入...");
         break;
    }
    printf("\n\n");
    getchar();
    printf("\n\n");
}
}
//副程式區
double rec(double r1,double r2)
{
       return (r1*r2);
}
double cir(double r)
{
       return (r*r*3.14);
}
double hex(double h)
{
       return (h*1.5);
}
我已經把程式改好了,之前變亂碼是因為我用幼幼那套DEV-C++在學校寫的結果...
一時不察,請見諒…另外,DEV-C++不支援getchar(); 跟 gets (); 令我納悶,
並不是沒有看阿Q的講解唷^^"
現在在家已經把程式成功寫出來了,也排版好了!請笑納^^"
<hr>
2005-04-12-補充:今天到學校把寫好的這段程式碼又COPY到DEV-C++卻又可以正常執行了
我錯怪DEV-C++哩...不過當天為啥不能用,我還是無解

[GERRYccc 在 2005-4-11 09:37 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
Acute
論壇第一大毒王
等級: 18等級: 18等級: 18等級: 18等級: 18
論壇第一小神童

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8216
 . 失蹤: 5568
#20 : 2005-4-9 03:05 AM     只看本作者 引言回覆

GERRYccc 你都不看我前面的發文喔
兩篇文都在說如何避免出現輸入錯誤的問題
真是被你打敗了...

so, 我不是跟你要花, 我是要罰你不認真看文
一篇不認真看, 罰10朵, so, 總共20朵, 記得繳來
還要負責把程式寫好

Acute.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
老江
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
School Days推廣

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7451
 . 失蹤: 134
#21 : 2005-4-9 09:30 AM     只看本作者 引言回覆

我的程式突然變的好巨大
而且怎麼還有看起來像亂碼的東西
這真的是我的那個小程式嗎XD

//和/* */是一樣的嗎?
我發現GERRY的註解都這樣寫



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7452
 . 失蹤: 1454
#22 : 2005-4-9 10:45 AM     只看本作者 引言回覆


引用:
老江寫到:
我的程式突然變的好巨大
而且怎麼還有看起來像亂碼的東西
這真的是我的那個小程式嗎XD

//和/* */是一樣的嗎?
我發現GERRY的註解都這樣寫


都是註解,一個可以跨行,一個不行
老江你書看的不夠多,不然就是看錯本
書要先看再寫程式,邊看邊寫或是不看就寫會很慘的



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
Acute
論壇第一大毒王
等級: 18等級: 18等級: 18等級: 18等級: 18
論壇第一小神童

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8216
 . 失蹤: 5568
#23 : 2005-4-10 03:07 AM     只看本作者 引言回覆

C 語言課程Part II:

/* .... */    這是最初的C 語言註解方式, 在開始跟結束的符號中間, 可以加任意長度, 任意行數的註解
//      這是ANSI C 開始才有的註解方式, 僅適用單行的模式, 也就是, 該符號之後一直到該行結束為止都是註解

某些早期的compiler 並無法支援// 的註解方式 ^^"
^^" 其實這些在小神童的C 語言筆記當中, 都有提到喲

Acute.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7452
 . 失蹤: 1454
#24 : 2005-4-10 06:40 AM     只看本作者 引言回覆


引用:
Acute寫到:
..........
^^" 其實這些在小神童的C 語言筆記當中, 都有提到喲
Acute.


有沒有 "小神童傳奇之C++ 語言筆記"、或是 "小神童傳奇之C# 語言筆記"
"小神童傳奇之 C 式語言筆記 3 部曲--C、C++、C#"



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
GERRYccc
名譽版主
等級: 8等級: 8
凹~~嗚~~^^y

今日心情

 . 積分: 103
 . 文章: 597
 . 收花: 497 支
 . 送花: 754 支
 . 比例: 1.52
 . 在線: 446 小時
 . 瀏覽: 7391 頁
 . 註冊: 8212
 . 失蹤: 103
 . ~@.@~ TWed2k 星球
#25 : 2005-4-11 03:36 AM     只看本作者 引言回覆


引用:
老江寫到:
我的程式突然變的好巨大
而且怎麼還有看起來像亂碼的東西
這真的是我的那個小程式嗎XD

//和/* */是一樣的嗎?
我發現GERRY的註解都這樣寫


不好意思,一時不察,中文都變亂碼了...
因為在學校用的是FREE軟體,所以怪怪~呵呵...
在家已經修正OK囉~用的是 Builder6

也有執行測試過了…很美觀嚕唷^^



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記

 25  2/2  <  1  2 
   



 



所在時區為 GMT+8, 現在時間是 2024-11-22 12:08 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.027444 second(s), 6 queries , Qzip disabled