某子 10 發表於 November 17, 2007 檢舉 Share 發表於 November 17, 2007 我是最近才加來加社的,先來打個招呼嗯......由於有很多節課都漏掉了,以致要在家中自己翻講義學,嗚嗚~~~~(聽說好像能補課)最近還在練習C++,以下是一串最近邊翻講義邊湊的程式碼(敝人沒有迴圈概念,抱歉)嗯......想寫得更精簡一點,不曉得有哪位大大可以幫幫我嗎?謝謝~~~~#include<stdio.h>#include<stdlib.h>int main(){ printf("這是一個測試你在卡片中能力的小遊戲,\n"); printf("由下列選項選一個最適合你的答案即可,不要亂選啊!\n"); system("pause"); int att=0; int btt=0; int ctt=0; printf("第一題\n"); printf("如果有人欠你錢不還,還恐嚇你,你會?\n"); printf("(1)扁他再說(2)理性勸導(3)報警處理(4)還是忘了吧~~\n"); int ans; while(ans!=1&&ans!=2&&ans!=3&&ans!=4){ scanf("%d",&ans); if(ans==1){ att=att+800; btt=btt+200; ctt=ctt+900; } else if(ans==2){ att=att+400; btt=btt+700; ctt=ctt+1300; } else if(ans==3){ att=att+100; btt=btt+1200; ctt=ctt+1400; } else if(ans==4){ att=att+300; btt=btt+500; ctt=ctt+1600; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第二題\n"); printf("如果要你選一條通往天堂的路,你會選?\n"); printf("(1)試煉之路(2)崎嶇小徑(3)寬廣大道(4)我怎麼可能上天堂\n"); int ans1; while(ans1!=1&&ans1!=2&&ans1!=3&&ans1!=4){ scanf("%d",&ans1); if(ans1==1){ att=att+700; btt=btt-300; ctt=ctt+900; } else if(ans1==2){ att=att+900; btt=btt+1300; ctt=ctt-400; } else if(ans1==3){ att=att+700; btt=btt+1000; ctt=ctt+800; } else if(ans1==4){ att=att+1400; btt=btt+200; ctt=ctt+500; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第三題\n"); printf("如果有天,你必須拋棄生命中最重要的一樣東西,會是什麼?\n"); printf("(1)人際關係(2)高學歷或高收入(3)珍藏已久的寶物(4)形象和尊嚴\n"); int ans2; while(ans2!=1&&ans2!=2&&ans2!=3&&ans2!=4){ scanf("%d",&ans2); if(ans2==1){ att=att+1500; btt=btt+700; ctt=ctt+1300; } else if(ans2==2){ att=att+500; btt=btt+300; ctt=ctt+1900; } else if(ans2==3){ att=att+700; btt=btt+1100; ctt=ctt+1000; } else if(ans2==4){ att=att+1000; btt=btt+1000; ctt=ctt+800; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第四題\n"); printf("如果別人在你面前耍冷,你會?\n"); printf("(1配合他假裝笑笑(2)忽視不鳥他(3)走過去嗆他(4)我自己就是冷王\n"); int ans3; while(ans3!=1&&ans3!=2&&ans3!=3&&ans3!=4){ scanf("%d",&ans3); if(ans3==1){ att=att-200; btt=btt+500; ctt=ctt+700; } else if(ans3==2){ att=att+600; btt=btt+900; ctt=ctt+400; } else if(ans3==3){ att=att+1200; btt=btt-400; ctt=ctt+600; } else if(ans3==4){ att=att+800; btt=btt+500; ctt=ctt+500; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第五題\n"); printf("你有交過女友嗎?\n"); printf("(1)你問哪一位?太多不好記(2)有,交往中(3)有但已分手(4)沒有,怎樣?\n"); int ans4; while(ans4!=1&&ans4!=2&&ans4!=3&&ans4!=4){ scanf("%d",&ans4); if(ans4==1){ att=att-100; btt=btt+500; ctt=ctt+1700; } else if(ans4==2){ att=att+300; btt=btt+200; ctt=ctt+1100; } else if(ans4==3){ att=att+800; btt=btt+200; ctt=ctt+600; } else if(ans4==4){ att=att+700; btt=btt+700; ctt=ctt+500; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第六題\n"); printf("你平常的上網時數?\n"); printf("(1)5小時超過(2)5~3小時(3)3~1小時(4)不到1小時\n"); int ans5; while(ans5!=1&&ans5!=2&&ans5!=3&&ans5!=4){ scanf("%d",&ans5); if(ans5==1){ att=att+600; btt=btt+600; ctt=ctt+200; } else if(ans5==2){ att=att+300; btt=btt+500; ctt=ctt+700; } else if(ans5==3){ att=att-300; btt=btt+800; ctt=ctt+900; } else if(ans5==4){ att=att+200; btt=btt+1000; ctt=ctt-200; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第七題\n"); printf("你最常做什麼事?\n"); printf("(1)和朋友CHECK聊天(2)奮發圖強(3)從事自身有興趣的活動(4)睡覺\n"); int ans6; int f=0; while(ans6!=1&&ans6!=2&&ans6!=3&&ans6!=4){ scanf("%d",&ans6); if(ans6==1){ f=f+1; att=att+400; btt=btt+100; ctt=ctt+500; } else if(ans6==2){ f=f+2; att=att+100; btt=btt+100; ctt=ctt+1000; } else if(ans6==3){ f=f+3; att=att+600; btt=btt+500; ctt=ctt+200; } else if(ans6==4){ f=f+4; att=att+300; btt=btt+800; ctt=ctt+600; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第八題\n"); printf("快遲到時,你會直接橫越綠燈的馬路嗎?(燈指車視紅綠燈)\n"); printf("(1)闖過去就對了(2)視車流量而定(3)等該燈紅了再過(4)換條路走\n"); int ans7; while(ans7!=1&&ans7!=2&&ans7!=3&&ans7!=4){ scanf("%d",&ans7); if(ans7==1){ att=att+1100; btt=btt-300; ctt=ctt-200; } else if(ans7==2){ att=att-200; btt=btt+800; ctt=ctt-100; } else if(ans7==3){ att=att+100; btt=btt+700; ctt=ctt+300; } else if(ans7==4){ att=att+300; btt=btt-300; ctt=ctt+200; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第九題\n"); printf("如果你可以選擇一個伙伴來伴你旅行,你會帶?\n"); printf("(1)家人(2)知心好友(3)寵物(4)還是自己旅行\n"); int ans8; while(ans8!=1&&ans8!=2&&ans8!=3&&ans8!=4){ scanf("%d",&ans8); if(ans8==1){ att=att-400; btt=btt-200; ctt=ctt+300; } else if(ans8==2){ att=att-100; btt=btt+300; ctt=ctt-600; } else if(ans8==3){ att=att+300; btt=btt-200; ctt=ctt+200; } else if(ans8==4){ att=att+600; btt=btt-400; ctt=ctt+300; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } printf("第十題\n"); printf("這個測試你覺得?\n"); printf("(1)無聊(2)很囧(3)不錯玩(4)無意見\n"); int ans9; while(ans9!=1&&ans9!=2&&ans9!=3&&ans9!=4){ scanf("%d",&ans9); if(ans9==1){ att=att+100; btt=btt+200; ctt=ctt+100; } else if(ans9==2){ att=att+200; btt=btt+400; ctt=ctt-100; } else if(ans9==3){ att=att-300; btt=btt+400; ctt=ctt+200; } else if(ans9==4){ att=att+300; btt=btt+300; ctt=ctt-400; } else{ printf("請重新輸入您的回答吧~~~~\n"); printf("你回答得不清不楚耶-_-↓\n"); } } for(att=att+0;att<=0;att+200){ if(att>0){ continue; } } for(btt=btt+0;btt<=0;btt+200){ if(btt>0){ continue; } } for(ctt=ctt+0;ctt<=0;ctt+200){ if(ctt>0){ continue; } } printf("測試結束~^-^~\n"); system("pause"); if(f==1){ printf("屬性:胡扯\n"); }else if(f==2){ printf("屬性:嘴砲\n"); }else if(f==3){ printf("屬性:炮灰\n"); }else{ printf("屬性:囧人\n"); } printf("攻擊力:%d\n",att); printf("守備力:%d\n",btt); printf("血量:%d\n",ctt); printf("囧到了嗎?呵呵~~~~\n"); printf("11/16號By Cheng\n"); system("pause"); return 0; }寫出來的東西http://www.badongo.com/file/5169479 鏈接文章 分享到其他網站
jim2212001 10 發表於 November 17, 2007 檢舉 Share 發表於 November 17, 2007 while(....)裡面因為你限制輸入的數字必須要在1~4之間所以可以改成while(ans<0 || ans>4){...}不過我看了一下你的程式可以試著用while(1){...}配合break;來寫再來..那一大串if else因為你只需要判斷一個變數可以使用switch case來改最後要說一下..+=的用法a+=1;意思是a=a+1;a-=1;就是a=a-1;加減乘除都可以這樣用(講義裡都有啊...仔細看看) 鏈接文章 分享到其他網站
某子 10 發表於 November 17, 2007 作者 檢舉 Share 發表於 November 17, 2007 啊~~感謝感謝,瞬間又少寫了一些麻煩的程式不過,敝人還是有個小疑問,有次在輸入數字時一不小心加了個字母,結果就整個當了,這種情況要怎麼處理啊? 鏈接文章 分享到其他網站
lachu 10 發表於 November 18, 2007 檢舉 Share 發表於 November 18, 2007 這個一般來講要用字串讀入char str[10]; //看你要開幾格,一般來講是數字的位數+1,不過可以開大一點int i,num;scanf("%s",str);num=0;for(i=0;i<strlen(str);i++){ //記得要#include<string.h> num=num*10+str-48; //字元的數字代碼:數字+48}這樣num就是輸入的數字了這樣程式就不會當掉可是還是會壞= =所以要這樣避免別人輸入其他字:int ok,i,num;char str[10];while(1){ scanf("%s",str); ok=1; for(i=0;i<strlen(str);i++){ if(str<48||str>57){ //ascii:48 = 0 ascii:57 = 9 ok=0; break; } } if(ok) break; printf("請重新輸入\n");}num=0;for(i=0;i<strlen(str);i++){ //記得要#include<string.h> num=num*10+str-48; //字元的數字代碼:數字+48}//雖然判斷是不是數字有一個函數 不過我不記得=口=要注意num會不會溢位溢位少拿十分=皿= 鏈接文章 分享到其他網站
Recommended Posts