Java基础入门训练
一、根据年龄数值输出年龄段
题目内容:
根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
Java代码实现
import java.util.Scanner;
public static void main0(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入这个人的年龄大小:");
int age = scan.nextInt();
if(age>=0 && age<=18){
System.out.println("少年");
}
else if(age>=19 && age<=28){
System.out.println("青年");
}
else if(age>=29 && age<=55){
System.out.println("中年");
}
else if(age>=56){
System.out.println("老年");
}
}
编译效果:
我们输入一个数值的大小,程序会打印出对应的年龄段.
二、打印1-100素数
题目内容:
打印1-100之间存在的素数
Java代码实现
public static void main(String[] args) {
int i=1;
int j=2;
int count=0;
for(i=1;i<=100;i++){
for(j=2;j<i;j++){
if (i%j==0){
break;
}
}
if(i==j){
System.out.println(i);
count++;
}
}
System.out.println(count);
}
编译效果:
注意点:打印出1-100之间的素数,我们用的是较为简单的做法,还可以更加方便地求解,比如i++ --> i+=2,偶数不可能是素数。还可以将j的范围缩小到 i/2 或者 i开平方.
三、判断素数
题目内容:
输入一个数字判断是否是素数
Java代码实现:
import java.util.Scanner;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.printf("请输入要判断的数字:");
int num=scan.nextInt();
int i=0;
for( i=2;i<num;i++){
if(num%i==0){
System.out.println(num+"不是素数");
break;
}
}
if(i==num){
System.out.println(num+"是素数");
}
}
编译效果:
注意点:同上
四、输出闰年
题目内容:
输出 1000 - 2000 之间所有的闰年
Java代码实现:
public static void main(String[] args) {
int count = 0;
for(int year=1000;year<=2000;year++){
if((year%4==0) && (year %100!=0) ||(year %400 == 0) ){
System.out.println(year);
count++;
}
}
System.out.println(count);
}
编译效果:
五、输出乘法口诀表
题目内容:
输出9*9乘法口诀表
Java代码实现:
public static void main(String[] args) {
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.printf("%d*%d=%-2d ",j,i,i*j);
}
System.out.println();
}
}
编译效果:
注意点:格式化输出,我们可以采用C语言中printf函数的格式.
六、求两个正整数的最大公约数
题目内容:
输入两个正整数,输出他们的最大公约数
Java代码实现:
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c = 0;
if(a<b){
int tmp = a;
a = b;
b = tmp;
}
while(a%b!=0) {
c = a % b ;
a = b;//
b = c;
}
System.out.println(b);
}
编译效果:
注意点:我们做题时用到了辗转相除法,不了解规则的同学可以来到我的往期博客C语言编程笔试题(二)了解.
七、计算表达式的值
题目内容:
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
Java代码实现:
public static void main(String[] args) {
int flag = 1;
double sum = 0.0;
for(int i=1;i<=100;i++){
sum += (flag)*(1.0/i) ;
flag=-flag;
}
System.out.println(sum);
}
编译效果:
注意点: sum += ( flag ) * ( 1.0 / i) ;这里一定要明确 是1.0 / i ,不是1 / i.另外sum要定义成double类型.
八、数字9 出现的次数
题目内容:
编写程序数一下 1到 100 的所有整数中出现多少个数字9
// 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99
public static void main(String[] args) {
int count = 0;
for( int i = 0;i<=100;i++){
if(i%10==9){
count++;
}
if(i/10==9){
count++;
}
}
System.out.println(count);
}
编译效果:
注意点:99中9出现了两次,所以我们用两个if语句,分别对含有9的数字中9的个数进行计数.
九、求水仙花数
题目内容:
求出0~999之间的所有“水仙花数”并输出。
水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个“水仙花数.
Java代码实现:
public static void main(String[] args) {
for(int n=1;n<999;n++){
int tmp=n;
int count = 0;
//1.算出该数字有多少位
while(tmp!=0){
count++;
tmp = tmp/10;
}//得到的count 即为该数字的位数
//2.将该数字的每一位数字得到,算出每一位数字的次方的和
tmp=n;
int sum = 0;
while(tmp!=0){
sum += Math.pow(tmp%10,count);
tmp = tmp/10;
}
//3.比较结果与原数字是否相等
if(sum==n){
System.out.println(sum+"是水仙花数");
}
}
}
编译效果:
思考步骤:
1.算出该数字有多少位
2.将该数字的每一位数字得到,算出每一位数字的次方的和
3.比较结果与原数字是否相等
十、编写代码模拟三次密码输入的场景
题目内容:
最多能输入三次密码,密码正确,提示“登录成功”,密码错误可以重新输入.
最多输入三次。三次均错,则提示退出程序
Java代码实现:
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 3;
while(count>0){
System.out.println("请输入密码:");
String password = sc.nextLine();
if(password.equals("123456")){
System.out.println("输入正确 , 登陆成功 !!");
}
else{
count--;
System.out.println("输入错误 ,"+"你还有"+count+"次机会!!");
}
}
}
编译效果:
注意点:equals() 比较字符串的功能.
十一、求二进制位中1的个数
题目内容:
写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
Java代码实现:
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入数字:");
int num = sc.nextInt();
int count = 0;
for(int i=0;i<32;i++){
if(((num>>i) & 1 )== 1){
count++;
}
}
System.out.println(count);
}
编译效果:
注意点: 明确位操作符& 的作用,二进制的每一位 &1,都可以得到这一位上的数字
十二、求二进制奇偶序列
题目内容:
获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
Java实现代码:
import java.util.Scanner;
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = s.nextInt();
// 取到二进制数列中的偶数位
for(int i=31;i>=0;i-=2){
System.out.print(((num>>i)&1)+" ");
}
System.out.printf("\n");//换行打印
// 取到二进制序列中的奇数位
for(int i=30;i>=0;i-=2){
System.out.print(((num>>i)&1)+" ");
}
}
编译效果:
注意点:这是练习十二的拓展,我们根据二进制数列的奇偶位进行取位.
十三、猜数字游戏
我们实现简单的猜数字游戏,由电脑随机生成100以内的数字,我们进行猜测,直到猜对为止,程序退出。
Java代码实现:
import java.util.Random;
import java.util.Scanner;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Random random = new Random();
int randNum = random.nextInt(100);
//System.out.println(randNum);
while(true){
System.out.println("请输入数字:");
int num=scan.nextInt();
if(num<randNum){
System.out.println("你猜小了");
}
else if(num==randNum){
System.out.println("你猜对了");
break;
}
else if(num>randNum){
System.out.println("你猜大了");
}
}
}
编译效果:
好了,我们Java基础题目的分享就到这里结束了,希望大家多多练习。
谢谢大家的欣赏与关注!!!
完!
转载:https://blog.csdn.net/rain67/article/details/115433828