黑马程序员技术交流社区

标题: 几个有意思的基础编程题 [打印本页]

作者: 岳阳天    时间: 2016-9-8 21:13
标题: 几个有意思的基础编程题
本帖最后由 岳阳天 于 2016-9-8 21:18 编辑

1.28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
2. 有这样一组数列:  1/2,1/4,2/6,3/8,5/10,8/12.....,统计前20项之和,精确到小数点后2位;
3.代码实现一个n 阶数组,
1 ,  2,  3,  4
12 13 14  5
11 16 15 6
10 9   8   7

作者: 岳阳天    时间: 2016-9-8 21:14
1 ,  2,  3,  4
12 13 14  5
11 16 15 6
10 9   8  7
作者: 岳阳天    时间: 2016-9-8 21:43
package com.heima.lianxi;

import java.util.Scanner;

public class Test2 {

        /**
         * * 第3题:写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
         *        1        2        3        4
         *        12        13        14        5
         *        11        16        15        6
         *        10        9        8        7
         * @author Administrator
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                int n;
                while(true){
                        try{
                                n = sc.nextInt();
                                break;
                        }catch(Exception e){
                                System.out.println("输入有误,请输入一个正整数");
                        }
                }
                int [][]arr = new int[n][n];
               
                method(arr);
                for (int i = 0; i < arr.length; i++) {
                        for (int j = 0; j < arr.length; j++) {
                                System.out.print(arr[j] + "\t");
                        }
                        System.out.println();
                }
        }

        private static void method(int[][] arr) {
                int i = 0;
                int j = 0;
               
                int max = arr.length -1;
                int min = 0;
               
                int num = 1;
                while(min<=max){
                        while(j<max){
                                arr[j++] = num++;
                        }
                        while(i<max){
                                arr[i++][j] = num++;
                        }
                        while (j>min){
                                arr[j--] = num++;
                        }
                        while (i>min){
                                arr[i--][j] = num++;
                        }
                        if(min ==max){
                                arr[j]= num;
                        }
                        max --;
                        min ++;
                        
                        j++;
                        i++;
                }
        }

}

作者: NBoss    时间: 2016-9-8 22:19
谢谢分享
作者: 从此学好    时间: 2016-9-11 20:01
谢谢分享。思考下。。
作者: 邬志江    时间: 2016-12-20 10:47
表示我被第二题难住了
作者: cyifovou    时间: 2016-12-21 12:00
感觉这更多的是数学问题不是编程问题。





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