JAVA基础题练习

    科技2024-12-18  16

    顺序插入:插入有序

    Scanner input = new Scanner(System.in); char[] arr2 = {'b','d','f','i','k','m','x',(char)0}; char t2 = input.next().charAt(0); //输入字符 int i = arr2.length-2; for(; i>=0; i--){ //for循环功能是:以第一次循环为例,for循环做判断,若输入的字符值大于arr2[i]的值(第一次循环中即为x)则跳出循环,否则就将arr[i](即x)在数组中往后移一位。 if(t2>arr2[i]){ break; }else{ arr2[i+1] = arr2[i]; } } arr2[i+1] = t2; for(char c :arr2){ System.out.print(c+"\t"); }

    用一维数组完成斐波那契数列前10项

    int[] array = new int[10]; array[0] = 0; array[1] = 1; for(int i=2;i<array.length;i++){ array[i]=array[i-2]+array[i-1]; //执行功能:第三项开始,每一项等于前两项之和 } for(int c: array){ System.out.print(c+"\t"); }

    1~200中以3的整数倍,或包含3的数值之和

    int sum = 0; for (int i=1,a,b; i<=200 ;i++){ if(i%3==0){ sum += i ; //选判断是否能被3整除,若能则跳到下一个数进行判断 continue; } boolean has3 = false; if(i>=10){ a= i%10; //取出个位数 b = (i/10)%10; //取出十位数 if(a==3 || b==3) //判断个位和十位是否有任一一个包含了3 has3 = true; } if( has3) { sum+=i;} } System.out.println("3的整数倍,或包含3的数值之和是"+ sum);

    随机生成一个整数,输出其是否为质数

    System.out.println(Math.random()); Random rand = new Random(); int num = 1+rand.nextInt(100); //括号内的100意味着随机数生成范围为0~99,所以需要+1 boolean isPrime = true; for(int i = 2; i<=num/2 ; i++){ //判断一个数是否为质数,只要将其分别从2到其自身数值的一半的范围内分别%,看看能否被整除。 if(num%i==0){ isPrime = false; break; } } System.out.println(num+(isPrime ? "是" : "非")+"质数");

    猜数字小游戏:随机生成一个1~10000以内的随机数,控制台输入数值一直到输入数值为该随机数为止

    Random rand = new Random(); Scanner input = new Scanner(System.in); int num = 1+rand.nextInt(10000),guess,count=0; do{ guess = input.nextInt(); System.out.println(guess<num ? "小了" : guess>num ? "大了" : "中了"); count++; }while(num != guess); //当输入数与随机生成的数不相等时,则一直执行循环 System.out.println("你共猜了"+count+"次");

    输入年月日,求这一天是这一年的第多少天

    Scanner input = new Scanner(System.in); int year,month,a,daytime,sum=0,day=0; System.out.print("请输入年月日:"); year = input.nextInt(); month = input.nextInt(); daytime = input.nextInt(); boolean isLeapYear = (year%4==0&&year%100!=0) || year%400==0; //判断输入年是否为闰年 for( a=1;a<month;a++)//循环功能:判断输入月已过去的月份一共有多少天,并将其相加。 { switch (a) { case 4: case 6: case 9: case 11: day = 30; break; case 2: day = isLeapYear ? 29 : 28; break; default: day = 31; break; } sum += day; } sum += daytime; //累加输入的天数 System.out.println("是当前年的第:"+sum+"天");

    已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值

    int a,b,c; for(a=1;a<10;a++){ for(b=0;b<10;b++){ for(c=1;c<10;c++){ if((a*100+b*10+c)+(c*100+b*10+a)==1333) System.out.println("a值为:"+a+"\t"+"b值为:"+b+"" +"\t"+"c值为:"+c); } // 三重循环其中b固定表示为十位数,a和c可能为个位也可能为百位。 } }

    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    int count=0; for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) for(int k=1;k<=4;k++){ //i表示为百位数, j表示十位数 ,k表示个位数 if(i!=j&&j!=k&&i!=k){ //确保ijk不会相等 System.out.print(i*100+j*10+k+"\t"); count++; if(count%10==0) System.out.println(); } } System.out.println(); System.out.print("一共有"+count+"种不同的数");

    定义一个int类型变量接收一个大于100的三位数,求出100到该数字之间满足如下要求的数字之和: 1.数字的个位数不为7; 2.数字的十位数不为5; 3.数字的百位数不为3;

    Scanner input = new Scanner(System.in); int a= input.nextInt(),count=0; if(a<=100||a>=1000) System.out.println("不符合题意"); else { for (int i = 101; i < a; i++) if(i%10!=7&&i/10%10!=5&&i/100!=3) //分别表示个位数不等于7、十位数不等于5、百位数不等于3 count+=i; } if(count==0) System.out.println("没有满足条件的解"); else System.out.println("数字之和为:"+count);

    用1元人民币兑换5分、2分、1分的硬币共50枚,每种硬币至少一枚,问共有多少种兑换方案?输出每一种方案中三种硬币的数量

    int number5,number2,number1,count=0; for(number5=1;number5<20;number5++) { { for (number2 = 1; number2 < 50; number2++) { for(number1 =1;number1<50;number1++) //number5代表5分,number2代表2分,number1代表1分。根据题意每个硬币都需要一个,所以初始量都为1且硬币数量不能超过50个,5分不能超过20,否则就超过了1元的范围。 if((number5 * 5 + number2 * 2 + number1 * 1 == 100)&&(number5+number2+number1==50)) { System.out.println("5分数量为:"+number5+"\t"+"2分数量为:"+number2+"\t"+"1分数量为:"+number1); System.out.println(MessageFormat.format("5分数量为{0}个\t2分数量为{1}个\t1分数量为{2}个",number5,number2,number1)); count++; } } } } System.out.println("一共有方案:"+count);

    题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

    int s=0; Scanner input = new Scanner(System.in); System.out.println("请输入a的值:"); int a=input.nextInt(); System.out.println("请输入数量:"); int number=input.nextInt(); int numbera; for(int i=0;i<number;i++){ //第一个for循环用来表示各项相加 numbera=a; for(int j=0,t=10;j<i;j++){ //第二个for循环用来表示各项的值 numbera+=a*t; //执行一次循环则表示aa,执行两次则表示aaa。。。 t*=10; } s+=numbera; } System.out.println("输出结果为:"+s);

    题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

    int count; for(int i=1;i<1000;i++){ //将1000以内的数全部进行验证 count=0; for(int j=1;j<=i/2;j++){ //一个数的因子不会超过其自身的一半,根据这个特性设定循环条件,循环功能是取出一个数的所有因子。 if(i%j==0) count+=j; } if(count==i) System.out.println("完数为:"+i); }

    求两个正整数的最大公约数和最小公倍数

    Scanner input= new Scanner(System.in); int a = input.nextInt(); int b = input.nextInt(); int x=a,y=b,i; if(a>b) {x=b;y=a;} //确保接下来的运算 x小于y for(i=x;i>=1;i--) if(x%i==0&&y%i==0) // 两个数的最大公约数必定从较小的那个数开始找起 break; System.out.println("最大公因数为:"+i); System.out.println("最小公倍数为:"+(x*y)/i);
    Processed: 0.020, SQL: 8