资源描述
2022年第四届全国高校计算机能力挑战赛区域赛(java) 第二套试卷 编程的个人解答源码及思路个人解答源码及思路 1. 科学计数法的显示(实现类似Excel单元格的科学记数法功能)。从键盘上输入两个数值字符串(均为正整数),显示对应的科学记数法字符串。例如:10000 2,10000表示数,2表示小数点位数,显示为1.00E+4。注意:科学记数法必须考虑四舍五入问题。例如输入为12345 3,显示为1.235E+4,输入为99995 3,显示为1.000E+5,而不是10.000E+4。 输入说明:N(数值字符串) M(小数点位数) 输出说明:科学记数法对应的字符串 输入样例1:123456 3 输入样例2:314159 4 输出样例1:1.235E+5 输出样例2:3.1416E+5 源码: 1. import java.util.Scanner; 2. public class FirstProblemPreliminary { 3.     public static void main(String[] args) { 4.         Scanner sc = new Scanner(System.in); 5.         String[] strArray = sc.nextLine().split("\\s+"); 6.         String digitalStr = strArray[0]; 7.         Integer decimalNumber = Integer.valueOf(strArray[1]); 8.         int length = digitalStr.length(); 9.         int max = Math.max(length - 1, decimalNumber); 10.         char[] secondPartChars = new char[max]; 11.         Integer[] secondPartInts = new Integer[max]; 12.         for (int i = 0; i < max; i++) { 13.             secondPartChars[i] = '0'; 14.         } 15.         for (int i = 1; i < length; i++) { 16.             secondPartChars[i - 1] = digitalStr.charAt(i); 17.         } 18.         for (int i = 0; i < max; i++) { 19.             secondPartInts[i] = Integer.valueOf(String.valueOf(secondPartChars[i])); 20.         } 21.         boolean flag = false; 22.         if (decimalNumber < length - 1) { 23.             flag = (secondPartInts[decimalNumber] >= 5) ? true : false; 24.         } 25.         for (int i = decimalNumber - 1; i >= 0; i--) { 26.             if (flag) { 27.                 secondPartInts[i] = secondPartInts[i] + 1; 28.                 if (secondPartInts[i] == 10) { 29.                     secondPartInts[i] = 0; 30.                     flag = true; 31.                 } else { 32.                     flag = false; 33.                 } 34.             } 35.         } 36.         //处理第一部分 37.         char firstPartChar = digitalStr.charAt(0); 38.         int firstPartCharInts = Integer.valueOf(String.valueOf(firstPartChar)); 39.         boolean flag1 = false; 40.         if (flag) { 41.             firstPartCharInts = firstPartCharInts + 1; 42.             if (firstPartCharInts == 10) { 43.                 firstPartCharInts = 1; 44.                 flag1 = true; 45.             } 46.         } 47.         //处理最后部分 48.         int lastPartNumber = length - 1; 49.         if (flag1) { 50.             lastPartNumber = lastPartNumber + 1; 51.         } 52.         String lastPartStr = "E+".concat(String.valueOf(lastPartNumber)); 53.         //打印输出 54.         System.out.print(firstPartCharInts); 55.         System.out.print("."); 56.         for (int i = 0; i < decimalNumber; i++) { 57.             System.out.print(secondPartInts[i]); 58.         } 59.         System.out.println(lastPartStr); 60.     } 61. } 思路:将转换后的科学计数法字符串分为三个部分,以“1.235E+5”为例,“1” 为第一部分,“235”为第二部分,“E+5”为第三部分;由于涉及到四舍五入的进位问题,第二部分可能会影响第一部分,第一部分可能会影响第三部分,所以先处理第二步部分,再处理第一部分,最后处理第三部分。 2.编写程序完成以下功能:输入正整数a的值,若a为偶数,求aa+aaaa+aaaaaa+ 直到a个a的累加和;若a为奇数,求a+aaa+aaaaa+直到a个a的累加和。 输入说明:1至9之间的正整数a。 输出说明:符合规律要求的连加算式(包含加数、运算符号和累加和,详见输出样例) 输入样例1:5 输入样例2:6 输出样例1:5+555+55555=56115 输出样例2:66+6666+666666=673398 源码: 1. import java.util.Scanner; 2. public class SecondProblemPreliminary { 3.     public static void main(String[] args) { 4.         Scanner sc = new Scanner(System.in); 5.         int number = Integer.valueOf(sc.nextLine()); 6.         int finalSum=0; 7.         String finalPattern=""; 8.         if (number%2==0){ 9.             for(int i=2;i<=number;i+=2){ 10.                 int stepNumber=stepNumber(number,i); 11.                 finalSum=finalSum+stepNumber; 12.                 finalPattern=finalPattern.concat(String.valueOf(stepNumber)).concat("+"); 13.             } 14.         } 15.         if (number%2==1){ 16.             for(int i=1;i<=number;i+=2){ 17.                 int stepNumber=stepNumber(number,i); 18.                 finalSum=finalSum+stepNumber; 19.                 finalPattern=finalPattern.concat(String.valueOf(stepNumber)).concat("+"); 20.             } 21.         } 22.         finalPattern=finalPattern.substring(0,finalPattern.length()-1); 23.         finalPattern=finalPattern.concat("=").concat(String.valueOf(finalSum)); 24.         System.out.println(finalPattern); 25.     } 26.     static int  stepNumber(int number,int times){ 27.         int sum=0; 28.         for(int i=0;i
点击显示更多内容>>
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号