2022年第四届全国高校计算机能力挑战赛区域赛java编程题第一套试卷
2022年第四届全国高校计算机能力挑战赛区域赛(java)第一套试卷编程的个人解答源码及思路1.编写程序完成以下功能:输入正整数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. importjava.util.Scanner;2. publicclassFirstProblemPreliminary3. publicstaticvoidmain(Stringargs)4. Scannersc=newScanner(System.in);5. intnumber=Integer.valueOf(sc.nextLine();6. intfinalSum=0;7. StringfinalPattern=;8. if(number%2=0)9. for(inti=2;i=number;i+=2)10. intstepNumber=stepNumber(number,i);11. finalSum=finalSum+stepNumber;12. finalPattern=finalPattern.concat(String.valueOf(stepNumber).concat(+);13. 14. 15. if(number%2=1)16. for(inti=1;i=number;i+=2)17. intstepNumber=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. staticintstepNumber(intnumber,inttimes)27. intsum=0;28. for(inti=0;iKQJT9876543。比如:6大于5,但是不比4大,6和4不能比较。单牌2属于特殊牌,可以和其他所有普通单牌比较,并且是最大的。b)对子:即两张牌的点数相同,规则和单牌相似,两个2是特殊对子,可以大于所有的其他对子。注意:对子和单牌不能进行比较。c)炸弹:3个点数相同的牌。炸弹可以大于任何单张和对子,炸弹之间的比较与单牌和对子不同,只要满足:222AAAKKKQQQJJJTTT.333的规则的即可。即222是最大的,AAA可以大于KKK,也可以大于333。编写一个方法实现两手牌的比较:int compareCards (String firstCards, String secondCards)参数:firstCards是需要比较的第一手牌,secondCards是需要比较的第二手牌返回:int型数据,如果firstCards和secondCards一样大,返回0;如果firstCards大于secondCards,返回1;如果firstCards小于secondCards;返回-1;如果firstCards和secondCards无法比较,返回2。输入说明:要比较的两手牌,中间以空格隔开。每一手牌可能是任何大小的单牌、对子或炸弹。不符合规则的输入情况不需考虑。输出说明:两手牌的比较结果输入时两手牌之间用空格隔开。输入样例1:J T 输入样例2:J 8输出样例1:1输出样例2:2源码:1. importjava.util.HashMap;2. importjava.util.Scanner;3. publicclassSecondProblemPreliminary4. publicstaticvoidmain(Stringargs)5. Scannersc=newScanner(System.in);6. StringstrArray=sc.nextLine().split(s+);7. StringfirstCards=strArray0;8. StringsecondCards=strArray1;9. System.out.println(compareCards(firstCards,secondCards);10. 11.12. staticintcompareCards(StringfirstCards,StringsecondCards)13. /12=221=213=-131=123=-132=114. intlengthFirstCards=firstCards.length();15. intlengthSecondCards=secondCards.length();16. if(lengthFirstCards+lengthSecondCards=3)17. /不能比较(单牌和对子)18. /122119. return2;20. 21. if(lengthFirstCards=3)&(lengthSecondCards3)22. /大于(第一手牌是炸弹,第二手牌是单牌或者对子)23. /313224. return1;25. 26. if(lengthFirstCards3)&(lengthSecondCards=3)27. /小于(第二手牌是炸弹,第一手牌是单牌或者对子)28. /132329. return-1;30. 31. /同级比较32. HashMapcompareRules=newHashMap();33. StringsingleCardString=3,4,5,6,7,8,9,T,J,Q,K,A,2;34. intnumberSingleCards=singleCardString.length;35. for(inti=0;iindex2)return1;44. /小于45. if(index1index2)return-1;46. /等于47. return0;48. else49. /同级比较-单牌或者对子50. intindex1=compareRules.get(firstCards.substring(0,1);51. intindex2=compareRules.get(secondCards.substring(0,1);52. intdiff=index1-index2;53. if(diff=0)54. return0;55. if(firstCards.substring(0,1).equalsIgnoreCase(2)56. return1;57. 58.
收藏
编号:347451576
类型:共享资源
大小:31.80KB
格式:DOCX
上传时间:2023-03-15
10
金贝
- 关 键 词:
-
2022年
第四届
计算机能力挑战赛
区域赛
java
- 资源描述:
-
2022年第四届全国高校计算机能力挑战赛区域赛(java)
第一套试卷
编程的个人解答源码及思路
1.编写程序完成以下功能:输入正整数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 FirstProblemPreliminary {
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;iK>Q>J>T>9>8>7>6>5>4>3。比如:6大于5,但是不比4大,6和4不能比较。单牌2属于特殊牌,可以和其他所有普通单牌比较,并且是最大的。
b)对子:即两张牌的点数相同,规则和单牌相似,两个2是特殊对子,可以大于所有的其他对子。注意:对子和单牌不能进行比较。
c)炸弹:3个点数相同的牌。炸弹可以大于任何单张和对子,炸弹之间的比较与单牌和对子不同,只要满足:222>AAA>KKK>QQQ>JJJ>TTT>.…>333的规则的即可。即222是最大的,AAA可以大于KKK,也可以大于333。
编写一个方法实现两手牌的比较:
int compareCards (String firstCards, String secondCards)
参数:firstCards是需要比较的第一手牌,secondCards是需要比较的第二手牌
返回:int型数据,如果firstCards和secondCards一样大,返回0;如果firstCards大于secondCards,返回1;如果firstCards小于secondCards;返回-1;如果firstCards和secondCards无法比较,返回2。
输入说明:要比较的两手牌,中间以空格隔开。每一手牌可能是任何大小的单牌、对子或炸弹。不符合规则的输入情况不需考虑。
输出说明:两手牌的比较结果
输入时两手牌之间用空格隔开。
输入样例1:J T
输入样例2:J 8
输出样例1:1
输出样例2:2
源码:
1. import java.util.HashMap;
2. import java.util.Scanner;
3. public class SecondProblemPreliminary {
4. public static void main(String[] args) {
5. Scanner sc = new Scanner(System.in);
6. String[] strArray = sc.nextLine().split("\\s+");
7. String firstCards = strArray[0];
8. String secondCards = strArray[1];
9. System.out.println(compareCards(firstCards,secondCards));
10. }
11.
12. static int compareCards(String firstCards, String secondCards) {
13. //12=2 21=2 13=-1 31=1 23=-1 32=1
14. int lengthFirstCards = firstCards.length();
15. int lengthSecondCards = secondCards.length();
16. if (lengthFirstCards + lengthSecondCards == 3) {
17. //不能比较(单牌和对子)
18. //12 21
19. return 2;
20. }
21. if ((lengthFirstCards == 3) && (lengthSecondCards < 3)) {
22. //大于(第一手牌是炸弹,第二手牌是单牌或者对子)
23. //31 32
24. return 1;
25. }
26. if ((lengthFirstCards < 3) && (lengthSecondCards == 3)) {
27. //小于(第二手牌是炸弹,第一手牌是单牌或者对子)
28. //13 23
29. return -1;
30. }
31. //同级比较
32. HashMap compareRules = new HashMap<>();
33. String[] singleCardString = {"3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A", "2"};
34. int numberSingleCards = singleCardString.length;
35. for (int i = 0; i < numberSingleCards; i++) {
36. compareRules.put(singleCardString[i], i);
37. }
38. //同级比较-炸弹
39. if (lengthFirstCards == 3) {
40. int index1 = compareRules.get(firstCards.substring(0, 1));
41. int index2 = compareRules.get(secondCards.substring(0, 1));
42. //大于
43. if (index1 > index2) return 1;
44. //小于
45. if (index1 < index2) return -1;
46. //等于
47. return 0;
48. } else {
49. //同级比较-单牌或者对子
50. int index1 = compareRules.get(firstCards.substring(0, 1));
51. int index2 = compareRules.get(secondCards.substring(0, 1));
52. int diff = index1 - index2;
53. if (diff == 0)
54. return 0;
55. if (firstCards.substring(0, 1).equalsIgnoreCase("2")) {
56. return 1;
57. }
58.
展开阅读全文

金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。