1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
package question;
 
import java.util.Scanner;
 
public class Test11_20 {
    /*
     * 输入一个数据n,计算斐波那契数列的第n个值 并打印所以值
     * 1 1 2 3 5 8 13
     * 规律一个数等于前两个数之和
     */
    public void test11(){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int f1 = 1,f2 = 1;
        int sum = 0;
        //输出f1 f2
        System.out.print("打印所以值:");
        System.out.print(f1+" ");
        System.out.print(f2+" ");
        //从第三个开始,前面已经打印两个数了,所以n-2
        for(int i=0; i<n-2; i++){
            sum = f1+f2;
            System.out.print(sum+" ");//打印所以数
            f1 = f2;
            f2 = sum;
        }
     System.out.println();
     System.out.println("第n个值是:sum="+sum);//打印第n个数
     /*
      * 结果:                    8
                    打印所以值:1 1 2 3 5 8 13 21
                    第n个值是:sum=21
      */
    }
     
/***************************************************/  
    //使用递归求斐波那契数列第n个数
    public int test12(int n){
        if(n==1||n==2){
            return 1;
        }else{
            return test12(n-1)+test12(n-2);
        }
    }
     
/***************************************************/
    /*
     * 求1-1/3+1/5-1/7+1/9.....的值
     */
    public void test13(){
         double sum=1;//作为第一个数1
         double fz = -1.0;//作为第二个数的分子
         double fm = 3.0;//第二个数的分母
        for(int i=0; i<20; i++){
            sum = sum+fz/fm;
            fz *= -1;//下一次运算将分子变为相反数
            fm += 2; //分母每次加2
        }
        System.out.println(sum);
    }
     
/***************************************************/
    /*
     *在屏幕上打印出n行的金字塔图案
     *        *
     *       ***
     *      *****
     */
    public void test14(){
        for(int i=1; i<10; i++){
             for(int j=0; j<10-i; j++){
                System.out.print(" ");
            }
            for(int k=0; k<2*i-1; k++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
     
/***************************************************/
    /*
     * 歌巴德猜想,任何一个大于6的偶数都可以拆分成两个质数的和
     * 打印所有的可能
     */
    //是否是质数
    private boolean isPrime(int n){
        if(n==1){
            return false;
        }
        for(int i=2; i<=Math.sqrt(n); i++){
            if(n%i==0){
                //System.out.println(i);
                return false;
            }
        }
        return true;
    }
    //
    public void test15(){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//n大于6 且是偶数,
        if(n%2!=0){
            System.out.println("不能为奇数");
            return;
        }
        if(n<6){
            System.out.println("不能小于6");
            return;
        }
        for(int i=3; i<n/2; i++){
            if(isPrime(i)&&isPrime(n-i)){//都不为质数时
                System.out.println(i+"+"+(n-i)+"="+n);//打印所有的可能
            }
        }
    }
     
/***************************************************/
    /*
     * 定义一个int型的数组,包含十个元素分别赋一些随机数,然后求出所有元素的最大值
     * 最小值,平均值,和值,并输出出来
     */
    public void test16(){
        int[] arr = new int[10];
        System.out.println("以下是十个随机数!");
        for(int i=0; i<10; i++){
            //随机生成十个数 介于0到100
            arr[i] = (int)(Math.random()*100);
        }
        for(int i=0; i<10; i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();//换行
        System.out.println("和等于:"+sum(arr));
        System.out.println("平均值等于:"+sum(arr)/10);
        sort(arr);
        System.out.println("最大值"+arr[arr.length-1]);
        System.out.println("最小值:"+arr[0]);
        /*以下是十个随机数!
          4 87 68 7 88 84 40 4 20 47
            和等于:449
            平均值等于:44
            最大值88
            最小值:4
         */
    }
    //求和
    private int sum(int[] a){
        int sum = 0;//求数组和
        for(int i=0; i<a.length; i++){
            sum+=a[i];
        }
        return sum;
    }
    //冒泡排序 升序
    private void sort(int[] arr){
        for(int i=0; i<arr.length; i++){
             for(int j=i; j<arr.length; j++){
                if(arr[j]<arr[i]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
             }
        }
    }
/*****************************************/
    /*
     * 定义一个一维数组 包含十个元素,分别赋值1到10,然后将数组中的元素向前
     * 移动一个位置a[0]=a[1]...最后一个数等于a[0]
     */
    public void test17(){
        int[] arr = new int[10];
        System.out.println("以下是十个随机数!");
        for(int i=0; i<10; i++){
            //随机生成十个数 介于0到10
            arr[i] = (int)(Math.random()*10);
        }
        //打印随机生成的元素
        for(int i=0; i<10; i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();//换行
        System.out.println("移动后的元素:");
        int temp = arr[0];//保存第一个数
        for(int j=0; j<arr.length-1; j++){
            arr[j] = arr[j+1];//把后一个数赋值给前一个
        }
        arr[arr.length-1] = temp;//把第一个数赋值给最后一个
        //打印移动后的元素
        for(int i=0; i<10; i++){
            System.out.print(arr[i]+" ");
        }
    }
     
    /*
            运行结果:
            以下是十个随机数!
            8 3 1 2 7 3 6 4 1 3
            移动后的元素:
            3 1 2 7 3 6 4 1 3 8
     */
     
/*******************************************/
    /*
     * 将一个数组中的数据倒过来排,
     * 例如:1 2 3 4 5 6 倒过来  6 5 4 3 2 1
     */
    public void test18(){
        int[] arr = new int[10];
        int[] newArr = new int[10];
        System.out.println("以下是十个随机数!");
        for(int i=0; i<10; i++){
            //随机生成十个数 介于0到10
            arr[i] = (int)(Math.random()*10);
        }
        //打印随机生成的元素
        for(int i=0; i<10; i++){
            System.out.print(arr[i]+" ");
        }
        //将生成数组的元素的最后一个赋值给第一个,倒数第二个给第二个,以此类推
        for(int i=9; i>=0; i--){
            newArr[9-i] = arr[i];
        }
        System.out.println();//换行
        for(int i=0; i<10; i++){
            System.out.print(newArr[i]+" ");
        }
    }
    /*  打印结果:
     *  以下是十个随机数!
        5 0 8 4 2 1 3 5 7 6
        6 7 5 3 1 2 4 8 0 5
     */
     
/*************************************************/
    /*
     * 定义一个int数组a,包含100个元素,保存100个随机的4位数
     * 再定义一个int数组b,包含十个元素,统计a数组中的元素对10
     * 求余等于0的个数,保存到b[0]中,余数等于1保存到吧[1]中,以此类推
     */
    public void test19(){
        int[] a = new int[100];
        int[] b = new int[10];
        System.out.println("以下是100个随机数!");
        for(int i=0; i<a.length; i++){
            //随机生成十个数 介于0到10
            a[i] = (int)(Math.random()*9000+1000);//1000~10000
        }
        int sum = 0;
        for(int i=0; i<b.length; i++){
            for(int j=0; j<a.length; j++){
                if(a[j]%10==i){
                    sum++;
                }
            }
            b[i] = sum;
            sum=0;//取余完所有i之后将sum=0,重新计算
            System.out.print("b["+i+"]"+"="+b[i]+" ");
        }
    }
    // 运行结果  :b[0]=11 b[1]=6 b[2]=12 b[3]=14 b[4]=6 b[5]=10 b[6]=9 b[7]=10 b[8]=10 b[9]=12
 
/****************************************************************/
     
    /**
     * 打印一个○
     */
    public void test20(){
        for(int i=0; i<30; i++){
            for(int j=0; j<30; j++){
                //半径为5 圆公式 x^2+y^2 = r^2
                if(((i-10)*(i-10)+(j-10)*(j-10))==25){
                    System.out.print(" * ");
                }else{
                    System.out.print(" ");
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
    /*运行结果
                    *                 
              *          *           
            *              *         
                                         
                                         
          *                  *       
                                         
                                         
            *              *         
              *          *           
                    *     
     */
     
    public static void main(String[] args) {
        Test11_20 t = new Test11_20();
        t.test20();
 
    }
}

  如有不足,多多指教。

posted on   如果······  阅读(257)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示