1. 程式人生 > >新人起步(4/n)

新人起步(4/n)

使用do-while,if完成小時候的數學題目.

一隻烏龜在井底,每次可以爬高x米,每爬高一次就要下滑y米,爬到z米高的井口需要多少次?

誤區:烏龜爬到井口的次數並不是z / (x - y),在這個次數之前烏龜已經到達井口的一次了。大部分人會無視條件,當我們輸入x,和y時,x < y將無法成功。

個人結果

#include <stdio.h>

int main()
{
int gaodu = 0;
int pashang;
int xiahua;
int jinggao;
int cishu = 0;
printf("請輸入烏龜爬上的米數(整數)");
scanf("%d",&pashang);
printf("請輸入烏龜下滑的米數(整數)");
scanf("%d",&xiahua);
printf("請輸入井的高度");
scanf("%d",&jinggao);
if(pashang > xiahua)
{
do{ gaodu = gaodu + pashang;
if(gaodu < jinggao)
{
gaodu = gaodu - xiahua;
cishu++;

}
else
{
cishu = cishu;
}

}while(gaodu < jinggao);
printf("烏龜爬高的次數為:%d",cishu);
}
else
{
printf("無法計算");
}
return 0;
}

修改題目,增加時間隨機,設定烏龜爬上和下滑

烏龜爬上為3-5米,烏龜下滑為0-2米,井高度不變依舊為人工設定

更改後,因為爬上一定大於下滑,所以無需考慮x < y.

個人結果

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
int gaodu = 0;
int pashang;
int xiahua;
int jinggao;
int cishu = 0;

printf("請輸入井的高度");
scanf("%d",&jinggao);

do{ pashang = (rand() * 11) % 3 + 2;
xiahua = (rand() * 11) % 3;
gaodu = gaodu + pashang;
if(gaodu < jinggao)
{
gaodu = gaodu - xiahua;
cishu++;
printf("烏龜本次爬高為:%d米\n 烏龜本次下滑為:%d米\n 烏龜本次高度為:%d米\n",pashang,xiahua,gaodu);
}
else
{
cishu = cishu;
}

}while(gaodu < jinggao);
printf("烏龜爬高的次數為:%d",cishu);
return 0;
}

錯誤:本次題目暫無