【問題】C++問題


Recommended Posts

我是最近才加來加社的,先來打個招呼

嗯......由於有很多節課都漏掉了,以致要在家中自己翻講義學,嗚嗚~~~~(聽說好像能補課)

最近還在練習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

鏈接文章
分享到其他網站

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;

加減乘除都可以這樣用

(講義裡都有啊...仔細看看)

鏈接文章
分享到其他網站

這個一般來講要用字串讀入

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會不會溢位

溢位少拿十分=皿=

鏈接文章
分享到其他網站
  • 2 weeks later...