黑马程序员技术交流社区

标题: 分享一下近几期的点招题 [附答案+分析] [打印本页]

作者: L1ub0w3n    时间: 2016-6-17 22:59
标题: 分享一下近几期的点招题 [附答案+分析]
假设某小卖铺钱柜里仅有1元和5角的硬币各若干,这时来了一个顾客想兑换一张20元的钞票。(6分)
             请编写程序,输出所有可能的兑换组合
            要求:(1)每种钞票/硬币的张数/个数不为0;
               (2)每种组合输出占一行。如下所示为输出中的一行:
                        1元的有1张,5角的硬币有38个
         打印格式:
                1元的有1张,5角的硬币有38个
                1元的有2张,5角的硬币有36个
                1元的有3张,5角的硬币有34个

作者: L1ub0w3n    时间: 2016-6-17 23:05
这道题比较简单。用到Java基础语言中的if语句和for语句。
分析:看到了打印格式。心里就已经应该明白了肯定是要用到for语句的。
其次就是题目硬性规定了 必须每种硬币都要有。不可以20个1元硬币或者40个5毛硬币这样的去换。所以就规定了硬性条件。就是 1元硬币!=0 && 5毛硬币!=0  代码要建立在这个基础上。
所以就是if(x!=0 && y!=0)   也告诉了我们要定义两个变量 x y分别代表两种币种。1元的基础上是1。5毛的基础是2。因为如果5毛的规定初始变量是1的话。那么就换多了。
然后进行循环。
代码如下:
  1. public class Test01 {
  2.         public static void main(String[] args) {
  3.                 //定义1元硬币的数量和5毛硬币的数量
  4.                 int x = 1,y = 2;
  5.         if(x!=0 && y!=0){
  6.                                 for (int m = 1; m < 20; m++) {
  7.                                         y = (20 - m) * 2;
  8.                                         System.out.println("1元有"+m+"个,5毛的硬币有"+y+"个。");                                       
  9.                         }
  10.                 }
  11.         }
  12. }
复制代码

作者: 孟小垚    时间: 2016-6-18 19:05
学习了!谢谢
作者: lionc123    时间: 2016-6-19 00:24
谢谢分享 ,看了一下下,什么时候的题目
作者: JunFreeman    时间: 2016-6-19 13:24
    for (int i = 1; i < 20; i++) {
                        for (int j = 1; j < 40; j++) {
                                if ((i + 0.5 * j) == 20) {
                                        System.out.println("1元的有" + i + "张,5角的硬币有" + j + "个");
                                }
                        }
                }

两个for循环加if判断就好啦

作者: 18566190744    时间: 2016-6-19 16:06
for (int i = 1; i < 20; i++) {     //这里就已经定义了不能一元不等于0,和五毛不能等与0
        int j=(20-i)*2;
        System.out.println("1元有"+i+"个,5毛的硬币有"+j+"个");
        }
作者: lt3886930    时间: 2016-6-19 17:06
虽然还不到考试的时候,但是收藏了解总是没错的.
作者: gjtdxjd    时间: 2016-6-19 18:49
感谢分享,学习了!
作者: 一个大西瓜    时间: 2016-6-19 19:27
int b;
                for(int a=1;a<20;a++)
                {
                        b=(20-a)*2;
                        System.out.println("1元的有"+a+"张,5角的硬币有"+b+"个");
                }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2