)
一、特殊的科学计数法给定一个正整数 N位数可达 $10^{5}$请将其转写为科学计数法形式形如a.b×$10^{c}$具体而言有如下要求∙ ∙ a为 [1,9] 之间的整数∙ ∙ b为对 N的第二位数字进行四舍五入后的小数部分保留一位小数∙ ∙ c 为整数指数∙ ∙ 输出格式严格为 无多余空格。输入描述一行输入正整数 N(≦N≦)不含前导零。输出描述输出 N 的科学计数法表示 a.b*10^c。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); String n scanner.nextLine(); scanner.close(); int len n.length(); // 指数c初始为位数减1 int c len - 1; // 第一位数字a int a n.charAt(0) - 0; // 第二位数字d2 int d2 n.charAt(1) - 0; // 第三位数字d3用于四舍五入判断 int d3 n.charAt(2) - 0; // 判断是否需要对d2进位 int carry d3 5 ? 1 : 0; d2 carry; // 处理d2进位后可能等于10的情况 if (d2 10) { d2 0; a 1; // 处理a进位后可能等于10的情况 if (a 10) { a 1; c 1; } } // 按格式输出结果 System.out.printf(%d.%d*10^%d\n, a, d2, c); } }运行结果二、小红的夹吃棋在一个 3×3棋盘上小红执黑 *与小紫执白 o进行“夹吃棋”。规则若某棋子在横向或纵向上被对方两个棋子夹住即三连中间为对方棋子该中间棋子被“夹吃”。胜负判定∙ ∙ 若仅一方存在被夹吃的棋子则对方获胜∙ ∙ 若双方均无被夹吃或双方均被夹吃则为平局。给定若干局面判断结果。输入描述第一行输入整数 t询问次数。每组询问输入 3行每行长度为 3 的字符串仅含 o白子、’*’黑子、’.’未落子表示棋盘状态。输出描述对每局输出一行∙ ∙ 小红胜输出 kou∙ ∙ 小紫胜输出 yukari∙ ∙ 平局输出 draw。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int t scanner.nextInt(); scanner.nextLine(); // 消耗换行符 for (int i 0; i t; i) { // 读取3x3棋盘 char[][] board new char[3][3]; for (int j 0; j 3; j) { String line scanner.nextLine(); board[j] line.toCharArray(); } // 判断双方被夹吃的情况 // 小红(黑棋)是否有被夹吃的棋子 boolean redEaten hasEaten(board, *); // 小紫(白棋)是否有被夹吃的棋子 boolean purpleEaten hasEaten(board, o); // 根据规则判断结果 if (redEaten !purpleEaten) { System.out.println(yukari); // 小紫胜 } else if (!redEaten purpleEaten) { System.out.println(kou); // 小红胜 } else { System.out.println(draw); // 平局 } } scanner.close(); } /** * 检查指定棋子是否有被夹吃的情况 * param board 棋盘 * param piece 要检查的棋子(*或o) * return 是否有被夹吃的棋子 */ private static boolean hasEaten(char[][] board, char piece) { char opponent (piece *) ? o : *; // 检查横向被夹吃的情况 for (int row 0; row 3; row) { // 中间是当前棋子两边是对方棋子 if (board[row][1] piece board[row][0] opponent board[row][2] opponent) { return true; } } // 检查纵向被夹吃的情况 for (int col 0; col 3; col) { // 中间是当前棋子两边是对方棋子 if (board[1][col] piece board[0][col] opponent board[2][col] opponent) { return true; } } return false; } }运行结果三、计算一年中的第几天今年的第几天输入年、月、日计算该天是本年的第几天。输入描述包括三个整数年(1Y3000)、月(1M12)、日(1D31)。输出描述输入可能有多组测试数据对于每一组测试数据输出一个整数代表Input中的年、月、日对应本年的第几天。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in new Scanner(System.in); while (in.hasNextInt()) { int year in.nextInt(); int month in.nextInt(); int day in.nextInt(); int daysInMonth[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ((year % 4 0 year % 100 ! 0) || (year % 400 0)) { daysInMonth[1] 29; } int totalDays 0; for (int i 0; i month - 1; i) { totalDays daysInMonth[i]; } totalDays day; System.out.println(totalDays); } } }运行结果