NO.15【婳骨】の井底之蛙

题目

原题:
有一口深度为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);
}

部分运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是增加了给定成语最后一个字符在指定列表中是否出现的Java代码: ```java import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Scanner; public class IdiomGame { private static final String[] idioms = {"一马当先", "九牛二虎之力", "画龙点睛", "四面楚歌", "金玉满堂", "珠光宝气", "独孤求败", "龙飞凤舞", "卧虎藏龙", "虎头蛇尾", "井底之蛙", "鹤立鸡群", "鸡犬不宁", "狐假虎威", "亡羊补牢"}; private static boolean isLegal(String idiom1, String idiom2) { if (idiom1.charAt(idiom1.length() - 1) != idiom2.charAt(0)) { return false; } if (usedIdioms.contains(idiom2)) { return false; } if (!common.contains(String.valueOf(idiom2.charAt(idiom2.length() - 1)))) { return false; } return true; } private static String getRandomIdiom() { Random random = new Random(); int index = random.nextInt(idioms.length); return idioms[index]; } private static List<String> usedIdioms = new ArrayList<>(); private static List<String> common = new ArrayList<>(); public static void main(String[] args) { common.add("一"); common.add("二"); common.add("三"); common.add("四"); common.add("五"); common.add("六"); common.add("七"); common.add("八"); common.add("九"); String lastIdiom = null; while (true) { String idiom; if (lastIdiom == null) { idiom = getRandomIdiom(); System.out.println("AI: " + idiom); lastIdiom = idiom; usedIdioms.add(idiom); } else { Scanner scanner = new Scanner(System.in); idiom = scanner.nextLine(); if (isLegal(lastIdiom, idiom)) { System.out.println("AI: " + idiom); lastIdiom = idiom; usedIdioms.add(idiom); } else { System.out.println("AI: 你输了,你的成语不符合规则!"); break; } } } } } ``` 在这个代码中,新增了一个列表 `common`,它包含了所有被允许的成语最后一个字符。同时,在 `isLegal` 方法中添加了一个判断,用于判断当前输入的成语的最后一个字是否在 `common` 列表中出现过。如果不符合规则,则输出一个提示信息并结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值