J1_27_1,J1_27_2,J1_27_3

这篇博客包含三个编程问题:一是通过循环计算购买啤酒的罐数,条件是总花费和商品价格;二是分别使用递归和非递归方法计算特定数值的阶乘;三是处理字符串,通过不断删除奇数位置字符,最终得到单一字符。这些问题涵盖了基础算法和数据处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、J1_27_1

啤酒每罐 2.3 元,饮料每罐 1.9 元。
小明买了若干啤酒和饮料,一共花了 82.3 元。
我们还知道他买的啤酒比饮料的数量少,请你编程计算他买了几罐啤酒。
注意:使用循环实现。

代码如下:

public class Week01 {
    public static void main(String[] args) {
        Double pj = 2.3,yl = 1.9;//啤酒和饮料价格
        for(int p = 1;;p++){
            for (int y = 1;y<p; y++) {
                System.out.println(y*yl);
                if( (p*pj) + (y*yl) == 82.3 ){
                    System.out.printf("他买了%d罐啤酒",p);
                    return;
                }
            }
        }
    }
}

二、J1_27_2

本月酒水的销售为 2!+4!+5!的值。n!表示 n 的阶乘,
例如:3!=3×2×1=6,5!=5×4×3 ×2×1=120。求这个值。 注意:分别利用递归和非递归方法实现求 n!。

代码如下:

public class Week02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n:");
        int n = sc.nextInt();
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += monthed(i);
        }
        System.out.println(sum);
    }

    /**
     * 递归方法求阶乘
     *
     * @param n
     * @return
     */
    private static int monthed(int n) {
        if (n == 0) {
            return 1;
        } else {
            return n * monthed(n - 1);
        }
    }
}

二、J1_27_3

酒水产商临时打算,为系统增加新功能,根据特定算法生产特定的字符 logo。 把
abcd…s 共 19 个字母组成的序列重复拼接 106 次,得到长度为 2014 的串。
接下来删除第 1 个字母(即开头的字母 a),以及第 3个,第 5 个等所有奇数位置的字 母。得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请编程求解该字母。

代码如下:

public class Week03 {
    public static void main(String[] args) {
        String str = "abcdefghijklmnobqls";
        StringBuffer str106 = new StringBuffer();
        System.out.println(2014 / 106);
        for (int i = 0; i < 106; i++) {
            str106.append(str);
        }
        // 删除所有奇数位置的字母
        String s = "";
        while (str106.length() > 1) {
            StringBuffer s2 = str106;
            for (int i = 0; i < s2.length(); i++) {
                if (i == 0 || (i + 1) % 2 != 0) {
                    s2.deleteCharAt(i);// 删除 char在这个序列中的指定位置。 返回值为StringBuffer
                }
            }
            System.out.println(s2);
            str106 = s2;
        }
        System.out.println("-----");
        System.out.println(str106);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值