RSS   



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


 


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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#1 : 2005-4-5 10:43 PM     全部回覆 引言回覆

對阿, 但是, 'a' 前面不該有空白
還有, 是printf, 不是prinft

你要的應該大約是:
switch (enter)
{
   case 'q':
   case 'Q':
       //
       break;
   case 'e':
   case 'E':
       //
       break;
   case 'f':
   case 'F':
       //
       break;
   case 's':
   case 'S':
       //
       break;
   default:
       //
       break;
}



Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#2 : 2005-4-6 05:48 PM     全部回覆 引言回覆


引用:
柚祐寫到:
呵呵 .. 都被別人講完了 .. ^^

大概就是 default 後面記得加上 break 是要小心的地方 .. 就這樣 ..

default:
動作;
break;


閒閒沒事來吐槽
習慣上, default 會寫在最後面 (老江也是寫在最後面)
switch-case 的最後面一個, break 省略是不會錯誤的
因為他執行完畢, 後面沒東西了, 並不會構成錯誤

Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#3 : 2005-4-7 10:48 AM     全部回覆 引言回覆

感覺上不對 @_@
程式已經說, q  結束程式, 那表示, q command 以前, 程式不應該結束
此外, system () 是執行一個外部程式或命令, 沒事也別用
程式應該這樣比較合理: (我直接拿你們的code, 加上while (1) {....} 而已

#include<stdio.h>

#include <stdlib.h>



double rec(double r1,double r2);

double cir(double r);

double hex(double h);



int main(void)

{

    char enter;

    double r1,r2,r,h;


    while (1)
    {


       printf("請輸入代號>"); scanf("%c",&enter);
   
      
   
       switch(enter)
   
       {
   
          case 'q':
      
          case 'Q':
      
               return 0;
      
               break;
      
          case 'e':
      
          case 'E':
      
               printf("請輸入長與寬>");
      
               scanf("%lf,%lf",&r1,&r2);
      
               printf("面積是%f",rec(r1,r2));
      
               break;
      
          case 'f':
      
          case 'F':
      
               printf("請輸入圓半徑>");
      
               scanf("%lf",&r);
      
               printf("面積是%f",cir(r));
      
               break;
      
          case 's':
      
          case 'S':
      
               printf("請輸入六邊形邊長>");
      
               scanf("%lf",&h);
      
               printf("面積是%f√3",hex(h));
      
               break;
      
          default:
      
               printf("Invaild Number");
      
               break;
   
       }

    }

}



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);

}   
另外, 萬一真的需要讓程式暫停, 後面才結束, 建議用:
printf ("Press Enter to continue...");
getchar ();


Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#4 : 2005-4-7 10:43 PM     全部回覆 引言回覆


引用:
GERRYccc寫到:

引用:
Acute寫到:
...

...
另外, 萬一真的需要讓程式暫停, 後面才結束, 建議用:
printf ("Press Enter to continue...");
getchar ();

Acute.


來抓毒王錯字.....要讓他暫停應該是 getch(); 這樣就好了:icons8
送花送花~~~~要送三朵唷


gerry, 今天就教你C 語言, 算你30朵花, 自己去送

1. getch(), getche() 這是DOS 環境下, Microsoft/Borland 在百般無聊情形下, 提供的取得字元方法, 所以, 這兩個function 在Windows 32 bits console program 中就無法使用了 (使用MSVC 6.0 選擇建立console program)

2. getchar () 這是標準的C function, 90% 的platform 都會提供這個function, so, 要讓你的C program 可以跨平台, 必須使用這個function, 不能用那些特定compiler 提供的function

Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#5 : 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 頁
 . 註冊: 8022
 . 失蹤: 5374
#6 : 2005-4-7 11:34 PM     全部回覆 引言回覆

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

char buf[255]

gets (buf);

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

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

Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#7 : 2005-4-9 03:05 AM     全部回覆 引言回覆

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

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

Acute.



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

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8022
 . 失蹤: 5374
#8 : 2005-4-10 03:07 AM     全部回覆 引言回覆

C 語言課程Part II:

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

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

Acute.



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

   



 



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