题目
原题:
有一口深度为h的井, 井底有一只小青蛙 它白天可以向上爬u米, 而晚上会下滑d米
设计一个程序输入高度, 白天向上爬的距离, 晚上下滑的距离 计算出小青蛙需要多少天才能从井底爬出来
样例输入:
12 3 2
样例输出:
10
代码
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
void In(double* a);
int main()
{
double h, x, y, num; //定义井深、白天爬的、晚上掉的、天数、总米数
int day = 0; //天数
system("title 【婳骨】の井底之蛙");
printf("青蛙掉井里h米,白天往上爬x米,晚上往下掉y米,问几天能出去?\n");
printf("注意:以下除天数外均保留两位小数\n");
printf("请输入井深几米:");
while (1)
{
In(&h);
if (h <= 0)
{
printf("请输入正值:\n");
}
else break;
}
printf("请输入白天爬的米数:\n");
while (1)
{
In(&x);
if (x < 0)
{
printf("请输入正值:\n");
}
else if (x == 0)
{
printf("你这都不带爬动的,出不去了,没救了,等死吧\n");
exit(0);
}
else break;
}
if (x >= h)
{
printf("井深%.2lf米,白天能爬%.2lf米\n", h, x);
printf("好,一天就上来了,干得漂亮,完事!\n");
exit(0);
}
printf("请输入晚上掉的米数:\n");
while (1)
{
In(&y);
if (y < 0)
{
printf("请输入正值:\n");
}
else break;
}
if (y == 0)
{
printf("好家伙,你这是蜘蛛还是青蛙啊\n");
}
if (x > y)
{
for (num = 0; num < h; num -= y)
{
num += x;
day++;
if (h - num > 0)
{
printf("第%d天入睡前,距离井口还有%.2lf米远\n", day, h - num);
}
}
printf("第%d天出来啦!\n", day);
printf("井深%.2lf米,白天能爬%.2lf米,晚上能掉%.2lf米,总共%d天能爬出来\n", h, x, y, day);
exit(0);
}
else printf("别了,爬的没掉的多,上不去了\n");
system("pause");
return 0;
}
void In(double* a) //对输入数据进行判断
{
do
{
if (scanf_s("%lf", a) == 1)
{
break;
}
char choice;
while ((choice = getchar()) != '\n' && choice != EOF);
printf("输入的不是数字!\n");
} while (scanf_s("%lf", a) != 1);
}
部分运行结果