一.编程题 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
/**
*编程实现: 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
*
*/
import java.util.Scanner;
public class JudgeDateTest{
public static void main(String[] args){
//1.初始化信息
int[] monthArr = {31,28,31,30,31,30,31,31,30,31,30,31};
//2.接收用户输入信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入年:");
int year = sc.nextInt();
if(year%4==0 &&year%100 !=0){//判断是否为闰年
monthArr[1] = 29;
}
System.out.println("请输入月:");
int month = sc.nextInt();
if(month<1||month>12){
System.out.println("月份输入有误");
return;
}
System.out.println("请输入日:");
int day = sc.nextInt();
if(day>monthArr[month-1]){
System.out.println("天数输入有误");return;
}
//3.计算是一年中第几天
int days = 0;
for(int i=0;i<month-1;i++){
days+= monthArr[i];
}
days += day;
//4.打印结果
System.out.println(year+"年"+month+"月"+day+"日是一年中的第"+days+"天");
}
}
二:编程题 编程找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3
/**
* 编程实现: 找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3
*/
import java.lang.Math;
public class PerfectNumTest{
public static void main(String[] args){
System.out.println("1000以内的完数分别是:");
for(int i=1;i<=1000;i++){
int sum = 0;
for(int j=1;j<= i/2;j++){//找到数的因子
if(i%j==0){
sum += j;
}
}
if(sum == i){//是完数
System.out.println(i);
}
}
}
}
三:编程题 实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。 其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。 其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
/**
*
*编程实现
*实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。
*其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。
*其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
*/
import java.lang.Math;
import java.util.Arrays;
public class WinningNumbersTest{
public static void main(String[] args){
System.out.println("红球中奖号码是:");
int[] redBall = new int[6];
int j= 0;
for(int i=1;i<=6;i++){
int randNum = (int)(Math.random()*33 +1);
if(Arrays.binarySearch(redBall,randNum)<0){
redBall[j++] = randNum;
}
}
System.out.println(Arrays.toString(redBall));
int blueBall = (int)(Math.random()*16 +1);
System.out.println("蓝球中奖号码是:"+blueBall);
}
}
四:编程题 自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。
/**
*编程实现 自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。
* 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。
*/
import java.util.Scanner;
import java.util.Arrays;
public class ExtendArrayRule{
public static void main(String[] args){
//1.输入数组原始容量
System.out.println("请输入数组原始容量");
Scanner sc = new Scanner(System.in);
int startLength = sc.nextInt();
int newLength = 0;
//2.初始化数组
int[] arr = new int[startLength];
//3.开始输入数组元素
System.out.println("请向数组中输入整数,若输入其他数据输入结束:");
int i =0;
while(sc.hasNextInt()){
if((i+1)*1.0/startLength >=0.8){//进行数组扩容
newLength = (int)(startLength*1.5);//计算扩容后的数组长度
int[] newarr = new int[newLength];//创建新扩容数组
//将旧数据搬到新数组中
for(int j=0;j<i;j++){
newarr[j] = arr[j];
}
arr = newarr;//将新的数组地址指向旧的变量
startLength = newLength;//将新的数组长度指给旧的变量
}
arr[i++] = sc.nextInt();
System.out.println("请向数组中输入整数,若输入其他数据输入结束:");
}
System.out.println("素组元素为:"+Arrays.toString(arr));
}
}
五:程题 使用二维数组和循环实现五子棋游戏棋盘的绘制,具体如下:
/**
*编程实现:使用二维数组和循环实现五子棋游戏棋盘的绘制。
*
*/
public class GobangPrintTest{
public static void main(String[] args){
boolean flagi =false;
boolean flagj =false;
for(int i= 0;i<='f'+1;i++){
for(int j =0 ;j<= 'f' +1;j++){
String str = "";
if(i ==0&&j==0){
str =" ";
} else if ( i==0&&j!=0){
str = flagj ? (char)(j-1)+" ": (j-1)+" ";
} else if(i!=0&&j==0){
str = flagi ? (char)(i-1)+" " : (i-1)+" ";
} else{
str = "+ ";
}
System.out.print(str);
if(j==10){
flagj =true;
j = 'a';
}
}
System.out.println("");
if(i==10){
flagi =true;
i = 'a';
}
}
}
}