1. 编程题
提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
package kaoshi;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;
import java.util.Calendar;
public class kaoshi1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入年份:");
int year = sc.nextInt();
System.out.print("输入月份:");
int month = sc.nextInt();
System.out.print("输入日期:");
int day = sc.nextInt();
int[] monthDaysArr = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (0 == year % 4) { //闰年
monthDaysArr[1] = 29;
}
if (day > monthDaysArr[month - 1] || month > 12) {
System.out.println("一年最多只有12个月,且不能超过本月最大天数!");
} else {
int sumDays = 0;
for (int i = 0; i < month - 1; i++) {
sumDays += monthDaysArr[i + 1];
}
sumDays += day;
System.out.println("这是" + year + "年的第 " + sumDays + " 天");
}
}
}
2. 编程题
编程找出 1000 以内的所有完数并打印出来。
所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3
package kaoshi;
public class kaoshi2_wanshu {
public static void main(String[] args) {
System.out.print("1000以内的完数有:");
for (int i = 1; i < 1000 + 1; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if ( i % j ==0) {
sum += j;
}
}
if (i == sum) {
System.out.println(i);
}
}
}
}
3. 编程题
实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。
其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。
其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
package kaoshi;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class kaoshi2_choujiang {
public static void main(String[] args) {
int[] userNum = new int[7];
int[] sysNum = new int[7];
//彩民 购买彩票(6+1)
System.out.println("请输入红色球的号码(1-33):");
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
int n = sc.nextInt();
boolean isExist = false;
//循环数组,判断n是否已经存在于数组中
for (int j = 0; j < i; j++) {
if (userNum[j] == n) {
isExist = true;
i--;
break;
}
}
if (!isExist) {
userNum[i] = n;
}else {
System.out.println("此号已选,请重选!");
}
}
System.out.println("请输入蓝色球的号码(1-16):");
userNum[6] = sc.nextInt();
System.out.println("您购买的双色球号码为:" + Arrays.toString(userNum));
System.out.println(".....系统开奖.....");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Random random = new Random();
for (int i = 0; i < sysNum.length - 1; i++) {
int n = random.nextInt(33)+1;
boolean isExist = false;
//循环数组,判断n是否已经存在于数组中
for (int j = 0; j < i; j++) {
if (sysNum[j] == n) {
isExist = true;
i--;
break;
}
}
if (!isExist) {
sysNum[i] = n;
}
}
sysNum[6] = random.nextInt(16)+1;
System.out.println("双色球开奖号码为:" + Arrays.toString(sysNum));
//系统开奖(6+1)
//比对 中奖结果
int count = compare(userNum,sysNum);
System.out.println("红色球相同的个数:" + count);
//开奖
if (count == 6 && userNum[6] == sysNum[6]) {
System.out.println("恭喜你,中了一等奖。奖金500万。");
}else if (count == 6 && userNum[6] != sysNum[6]) {
System.out.println("恭喜你,中了二等奖。奖金300万。");
}else if (count == 5 && userNum[6] == sysNum[6]) {
System.out.println("恭喜你,中了三等奖。奖金3000。");
}else if ( (count == 5 && userNum[6] != sysNum[6]) || (count == 4 && userNum[6] == sysNum[6]) ) {
System.out.println("恭喜你,中了四等奖。奖金200。");
}else if ( (count == 4 && userNum[6] != sysNum[6]) || (count == 3 && userNum[6] == sysNum[6]) ) {
System.out.println("恭喜你,中了五等奖。奖金10。");
}else if ( (count == 2 && userNum[6] == sysNum[6]) || (count == 1 && userNum[6] == sysNum[6]) || (count == 0 && userNum[6] == sysNum[6]) ) {
System.out.println("恭喜你,中了六等奖。奖金5。");
}else {
System.out.println("很遗憾,没中奖,请继续努力!");
}
}
//比对两个数组的前6个元素,返回相同元素的个数
public static int compare(int[] arr1,int[] arr2) {
int count = 0;
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = 0; j < arr2.length - 1; j++) {
if (arr1[i] == arr2[j]) {
count++;
break;
}
}
}
return count;
}
}
4. 编程题
自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。
例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。
package kaoshi;
import java.util.Arrays;
import java.util.Scanner;
public class shuzu_kuorong {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true;
int[] arr = new int[1];
int count = 0;
while (flag) {
System.out.print("请输入数字:");
int input = sc.nextInt();
arr[count] = input;
if (count >= (arr.length - 1) * 0.8) {
int[] brr = new int[(int) ((arr.length * 1.5 > arr.length * 15 / 10) ? (arr.length * 15 / 10 + 1) : (arr.length * 15 / 10))];
System.arraycopy(arr, 0, brr, 0, arr.length);
arr = brr;
}
count ++;
System.out.println("数组长度:" + arr.length);
System.out.println("元素数量:" + count);
System.out.println("数组内容:" + Arrays.toString(arr));
}
//程序结尾处
}
}
5. 编程题
使用双重循环实现五子棋游戏棋盘的绘制,棋盘界面的具体效果如下:
package kaoshi;
public class wuziqi {
public static void main(String[] args) {
int[] arr = {48, 49, 50,51,52,53,54,55,56,57,97,98,99,100,101,102};
for (int i = 0; i < arr.length; i++) {
if (0 == i) {
System.out.print(' ');
System.out.print(' ');
for (int j = 0; j < arr.length; j++) {
System.out.print(' ');
System.out.print((char)arr[j]);
System.out.print(' ');
}
System.out.println();
}
System.out.print((char) arr[i]);
System.out.print(' ');
for (int j = 0; j < arr.length; j++) {
System.out.print(" + ");
}
System.out.println();
}
}
}