遇到這種問題
先把變數設定好
錢是 N
跑幾公里是 x
計價單位 y
每單位花多少錢 n
暫存變數 tmp
再來是先寫外圈
while (N>0) {
x=x+y;
N=N-n;
}
接著再在圈內寫條件及改寫
語法:
if (N>=80) { //必須至少有 80元
/* 前面是2公里內,每公里 80元,題指個人是這麼解釋,如有誤那這一段就要改了*/
y=1;
n=80;
while (N>0) {
x=x+y;
if (x>2) {
x=2;
break; //離開 while 迴圈
}
//試算是否可以跑下一個單位
tmp=N-n;
if (tmp>0) {
N=tmp; //扣款成立
}else {
x=x-y; //錢變負的,之前跑得y公里要扣回
break;
}
} //第一段的 while迴圈結尾
if (x>=2) { //需跑到2公里才可套用以下算式
/* 後面是以每0.5公里 加5元來算,*/
y=0.5;
n=5;
while (N>0) {
x=x+y;
//試算是否可以跑下一個單位
tmp=N-n;
if (tmp>0) {
N=tmp; //扣款成立
}else {
x=x-y; //錢變負的,之前跑得y公里要扣回
打折副程式;
break;
}
if (打折副程式==1) break;
}
} //第二段的 while迴圈結尾
}
int 打折副程式()
{
if (x>=30) {
//試算 是否還有錢可以跑 0.5公里
tmp=N*0.8; //八折
if ((N-tmp)<5) { //至少要剩五元
N=tmp;
打折副程式=1;
}
}
}