2007年9月3日 星期一

小考一(A) 解答


/* C Programming Quiz 1A */
/*
題目:輸入里程,並計算出車費。假設里程在 1500 公尺以下皆為 70 元,
每超過 500 公尺加 5元,不足 500 公尺以 500 公尺計算。
輸入值:0 ~ 5000 公尺之間任意值
輸出值:價格
*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int taxi_dist, price;

printf("To compute the price, please enter the distance -> ");
scanf("%d",&taxi_dist);
if (taxi_dist>=0 && taxi_dist<=5000) /*如果在要求範圍內,則計算價格。*/
{
if (taxi_dist >= 1500)
{
price = 70 + 5*(taxi_dist-1500)/500;
if ((taxi_dist-1500)%500 != 0) /* 判斷是否有不滿500公尺的距離。 */
price += 5;
}
else
price = 70;
printf("價格是%d元\n",price);
}
else
printf("請輸入0-5000的距離範圍!!!\n");

system("pause");
return 0;
}

小考一(A)題目

小考目錄

回到首頁

12 則留言:

匿名 提到...

你少寫了一項少於1500公尺的判斷式

liangk 提到...

Thanks, it's fixed.

匿名 提到...

好像輸入7600或2100時..答案會有1塊錢的....不是只會多出5元的?....

匿名 提到...

價錢計算裡改成先除再乘就不會有多出1元的情況發生。

price=70+5*((taxi_dist-1500)/500);

匿名 提到...

因為(taxi_dist-1500)/500結果是浮點數,才會有1塊錢的狀況,乘於5之前得宣告int.

Plenty Su 提到...

Hi, This is my answer.
Please comment on it.

int main(void)
{
int taxi_dist, price = 0;

printf("To compute the price, please enter the distance -> ");
scanf_s("%d", &taxi_dist);

if (taxi_dist < 5000) {
taxi_dist += 499;
taxi_dist -= taxi_dist % 500;

price = 70 + 5 * ((taxi_dist-1500) / 500);

} else
printf("input error ... \n");

printf("price = %d \n", price);
system("pause");

return 0;
}

Plenty Su 提到...

Hi, This is my answer. Please comment on it. Thank you!

int main(void)
{
int taxi_dist, price = 0;

printf("To compute the price, please enter the distance -> ");
scanf_s("%d", &taxi_dist);

if (taxi_dist < 5000) {
taxi_dist += 499;
taxi_dist -= taxi_dist % 500;

price = 70 + 5 * ((taxi_dist-1500) / 500);

} else
printf("input error ... \n");

printf("price = %d \n", price);
system("pause");

return 0;
}

Unknown 提到...

有點笨的方法不過可行

#include
#include
int main()
{
int km, kmo;

printf("輸入里程數(公尺):");
scanf("%d",&km);
if(km<=1500)
{
printf("70元");
}
else if(km>1500,km<=2000)
{
printf("75元");
}
else if(km>2000,km<=2500)
{
printf("80元");
}
else if(km>2500, km<=3000)
{
printf("85元");
}
else if(km>3000,km<=3500)
{
printf("90元");
}
else if(km>3500,km<=4000)
{
printf("95元");
}
else if(km>4000,km<=4500)
{
printf("100元");
}
else if(km>4500,km<=5000)
{
printf("105元");
}
else
{
printf("超出範圍!!\n");
}


system("PAUSE");
return 0;
}

Unknown 提到...

有點笨的方法不過行嗎?
#include
#include
int main()
{
int km, kmo;

printf("輸入里程數(公尺):");
scanf("%d",&km);
if(km<=1500)
{
printf("70元");
}
else if(km>1500,km<=2000)
{
printf("75元");
}
else if(km>2000,km<=2500)
{
printf("80元");
}
else if(km>2500, km<=3000)
{
printf("85元");
}
else if(km>3000,km<=3500)
{
printf("90元");
}
else if(km>3500,km<=4000)
{
printf("95元");
}
else if(km>4000,km<=4500)
{
printf("100元");
}
else if(km>4500,km<=5000)
{
printf("105元");
}
else
{
printf("超出範圍!!\n");
}


system("PAUSE");
return 0;
}

匿名 提到...

@吳佳鴻 可是如果你要計算更大更多數字
你這樣會打到累死吧XD

Hubert 提到...

花了一節課時間,終於完成了~~~~~~~~~~~~~~~~~~


#include
int main (void)
{
int x,i=9;

while (i>0){
scanf("%d",&x);
if (x<=5000 && x>=0){
if (x<=1500){
printf("車費是70元喔~~");
}else
{
x=70+5*x/500;
printf("車費是%d元喔~~\n",x);
}
}
else{
printf("輸入0~5000\n");
}
}
}


匿名 提到...

if ((taxi_dist-1500)%500 != 0) /* 判斷是否有不滿500公尺的距離。 */
price += 5;
這裡是指 餘數加上price?