RSS   



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


 


 
主題: [資訊電機] [問題]C++中switch的寫法該如何寫?   字型大小:||| 
老江
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
School Days推廣

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#1 : 2005-4-5 09:42 PM     全部回覆 引言回覆

最近在練習寫c++
遇到了一個例題,看起來應該是用switch的寫法
不過怎麼寫程式都給我自爆
連去網路上查教學copy回來的程式碼都自爆(題外話,用google搜尋竟然都搜到大陸香港才有教學..)
想問一下switch的寫法
switch (enter){
case ' a':
    prinft("xxx");
    break;
default:
    printf("yyy");
}
是不是大概是這樣寫
還有其中enter是用char定義嗎?
因為程式的要求是輸入一個代號
然後做出不同動作
所以說一開始是
char enter;
printf("請輸入代號");
scanf("%c",&enter);
用%c應該沒錯吧

附上題目讓大家看看好了,免得我說半天沒人看懂
Write a program that computes the area of different shapes.The program repeatedly ask the user for a command (a single character).,and performs the action as shown blew.

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"

應該是用switch加上副程式來寫吧



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#2 : 2005-4-6 09:37 PM     全部回覆 引言回覆

我寫完了
但是很慘烈的是..會自爆
先貼上我寫的程式碼
#include< stdio.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;
    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");
            return 0;
    }
}
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);
}                  

Switch方面輸入正常代號都沒問題,會跑出下一步要求輸入數字
但是一旦打到default裡的
就自爆
printf那行沒出現就爆了
病症二
輸入完數字之後
自爆
我在想是副程式的問題
不過看了半天好像沒寫錯啊

[老江 在 2005-4-6 09:53 PM 作了最後編輯]



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#3 : 2005-4-6 10:07 PM     全部回覆 引言回覆

#include後面是有打的
不過copy太順,論壇把它看作html語法所以沒顯示出來
編譯都沒有問題
所以自爆找不出在那錯了

return 0我改了位子了
編譯..OK
執行..自爆

之前那個位子他也沒查出有錯



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#4 : 2005-4-6 10:40 PM     全部回覆 引言回覆

#include < stdlib.h >
system("PAUSE");

我很仔細的看了幼幼跟我的程式差別
發現少這兩行而已
就讓我的程式不再自爆
這兩行到底是有何德何能
我敗了...orz


我原本的程式是錯在邏輯上嗎
想想也沒錯的感覺
到底是怎麼一回事



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#5 : 2005-4-7 08:03 PM     全部回覆 引言回覆

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

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

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

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

這好像是必然的結果

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



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#6 : 2005-4-8 08:00 AM     全部回覆 引言回覆

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

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

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



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

 . 積分: 391
 . 精華: 1
 . 文章: 3664
 . 收花: 1702 支
 . 送花: 8225 支
 . 比例: 4.83
 . 在線: 650 小時
 . 瀏覽: 18020 頁
 . 註冊: 7257
 . 失蹤: 274
#7 : 2005-4-9 09:30 AM     全部回覆 引言回覆

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

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



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

   



 



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