標題:吉的堡美語

C++問題(急~急~急~)switch沒跑就結束

發問:abc訂房中心

#include #includeint main(){ char pp ; double... 顯示更多 #include #include int main(){ char pp ; double a,bb,cc,dd,ee,ff,; printf("請選擇計算科目:a->國文,b->英文,c->數學,d->物理\n"); printf("e->化學f,->地理,g->歷史,h->公民,i->全部都算(不建議)\n\n"); printf("--------------------請選擇代號-------------------\n\n"); printf("請輸入第一次期中考分數\n"); scanf("%lf",&bb); printf("請輸入第二次期中考分數\n"); scanf("%lf",&cc); printf("請輸入第期末考分數\n"); scanf("%lf",&dd); printf("請輸入平時成績考分數\n"); scanf("%lf",&ee); printf("請輸入代號\n"); scanf("%f\n",&pp); 程式止執行到這裡SWITCH就沒了,哪裡出錯?? 程式止執行到這裡SWITCH就沒了,哪裡出錯?? 程式止執行到這裡SWITCH就沒了,哪裡出錯?? 程式止執行到這裡SWITCH就沒了,哪裡出錯?? switch(pp){ case'a': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//國文 break; case'b': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//英文 break; case'c': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//數學 break; case'd': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//物理 break; case'e': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//化學 break; case'f': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//地理 break; case'g': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//歷史 break; case'h': printf("\n成績為%lf",ff =( bb + cc )*0.2 + ( dd + ee )*0.3);//公民 } system("pause"); } 更新: 第2個問題出現了: 代號竟要輸入好幾個,才跑出結果, 另外再問個小問題:傳回值有它的 存在意義嗎,有些程式好像有無都沒關係? (巨匠上到進階了有些小問題還不了解,教教我吧! ^ O ^川 ) 更新 2: 我修改到這樣,發現英文不太一樣,其他的也可能,那自訂函式,怎不能輸入,直接跳結果char English(); switch(pp){ printf("成績為%lf",English());//英文 break; }char English(){ printf("請輸入學科競試 "); scanf("%lf",&aa); printf("%lf",(bb+cc)*0.2+dd*0.3+ee*0.25+aa*0.05); } 顯示更多 我修改到這樣,發現英文不太一樣,其他的也可能,那自訂函 式,怎不能輸入,直接跳結果 char English(); switch(pp){ printf("成績為%lf",English());//英文 break; } char English(){ printf("請輸入學科競試 "); scanf("%lf",&aa); printf("%lf",(bb+cc)*0.2+dd*0.3+ee*0.25+aa*0.05); } 更新 3: 我也是像你那樣用,只不過有限字數,刪刪減減就剩這樣,目的是把英文移出來, 只是不會switch自動跑完, 學科競試輸入也沒做 就直接跳結束? 對了7.32分的那個問題已解決了(一個一個試),原因是多了 它換行後又 重複再做一次動作.所以要輸入兩次代號,之後我把輸入代號移到最前面,發現 switch還是有跑,後來開始做科目的一些修正,英文多了一個' 學科競試 '所以想說用自訂函式,這個剛學的東西switch卻自動跑完English()輸入根本不能輸入 更新 4: 開始------->輸入代號(科目)--->其他都OK,英文不太一樣 ------->數入期中*2加上期末和平時成績,----->用switch跑代號b英文------>進入自訂函式 English()------->輸入英文學科競試---->傳回switch ,case'b'---->印出

英文補習班推薦最佳解答:

一開始的double宣告裡ff後面多一個, pp是char怎用%f來接值= =....f是用在float 改成%s 印出時ff =( bb + cc )*0.2 + ( dd + ee )*0.3 改成( bb + cc )*0.2 + ( dd + ee )*0.3就行了 2010-01-29 20:10:11 補充: 聽不懂你的問題... 一般看人的程式尾端加個return 0...我們只是單純練這種簡單程式的話其實加不加是沒啥差 2010-01-29 21:47:05 補充: 副程式不能這樣用... 要用的話順序要 #include char English(); int main(){主程式內容} char English(){副程式內容} 或 #include char English(){副程式內容} int main(){主程式內容} 你講一下想要的程式動作是什麼我解給你看... 2010-01-30 17:18:47 補充: 你希望的程式動作是如何?.. 開始->輸入什麼?印出什麼?->結束 因為看code我不太清楚這程式想做的流程是怎樣 沒辦法跟你解釋 2010-01-30 19:16:05 補充: 就是case b時要call English()就是了 依這樣寫的話..在English裡的aa.bb.cc.dd.ee全都會沒定義喔..會錯誤 主程式與各個副程式裡定義的變數各不同..在main裡定義的aa和english裡再定義的aa是不同東西 要讓那些變數在English()裡有作用的話.要嘛就設成全域變數(不建議).不然就呼叫時傳值進去 如果要在English裡運算再改變主程式裡原有值->傳址呼叫 只是單純的要借用值做運算印出.不改變原有值->傳值呼叫 2010-01-30 19:21:12 補充: 改的話..因為english裡運算用到bb.cc.dd.ee 所以要把這些值傳進去 char English(double bb,double cc,double dd,double ee) 裡面要再定義一個叫aa的變數(此aa和main裡的aa不同東西) 叫用的時候則要English(bb,cc,dd,ee)來呼叫 2010-01-30 19:21:28 補充: printf("成績為%lf",English());//英文 如果要這樣使用的話代表English這副程式須要有回傳值 那你的定義要改變..因為要回傳浮點數(%lf)才能印出來 所以改成double English(double bb,double cc,double dd,double ee) 然後裡面只有單純做運算.並沒有回傳值 所以要加個return(此return值的型態已經定義在English前面..為double) return (bb+cc)*0.2+dd*0.3+ee*0.25+aa*0.05; 2010-01-30 19:21:34 補充: printf("%lf",(bb+cc)*0.2+dd*0.3+ee*0.25+aa*0.05); 這句可以去掉不用

其他解答:

你 scanf("%lf",&cc); 裡面是用&位址? 我不大懂這種寫法 我寫成C++寫法 你看看 http://paste.bradleygill.com/index.php?paste_id=287134D962705AE823D35
arrow
arrow

    蘇山亨耶敏蒂轄粒 發表在 痞客邦 留言(0) 人氣()