7-1 sdut-String-3 字符串字母大小写转换逆序输出
编写程序,实现字符串中的字符大小写转换,并逆序输出。
输入格式:
输入一行字符串。
输出格式:
对字符串中的字母进行大小写转换,其余字符不变化,最后对字符串逆序输出。
输入样例1:
Hello World!
输出样例1:
!DLROw OLLEh
输入样例2:
12312kfakfaskakdsfjSDFDFFSFDSFSF123 afdkadsfk@
输出样例2:
@KFSDAKDFA 321fsfsdfsffdfdsJ
import java.util. *;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int n = s.length();
for(int i = n - 1; i >= 0; i --)
{
char c = s.charAt(i);
if(c >= 'A' && c <= 'Z')
c += 32;
else if(c >= 'a' && c <= 'z')
c -= 32;
System.out.print(c);
}
}
}
7-2 sdut-String-4 去除字符串中数字字符逆序输出
给定一行字符串,去除其中的数字字符,并逆序输出。
输入格式:
输入一行字符串。
输出格式:
去除字符串中的数字字符,并逆序输出。
输入样例1:
He11ll00d323o w1232154304343or8ld!
输出样例1:
!dlrow odlleH
输入样例2:
ABC12D2434EFG hi13jk3242lmn opqr13221st u123vw xy213z
输出样例2:
zyx wvu tsrqpo nmlkjih GFED
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int n = s.length();
for(int i = n - 1; i >= 0; i --)
{
char c = s.charAt(i);
if(c >= '0' && c <= '9')
continue;
System.out.print(c);
}
}
}
7-3 sdut-String-1 识蛟龙号载人深潜,立科技报国志(I)
背景简介:
“蛟龙号”载人深潜器是我国首台自主设计、自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。
中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录。
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一。
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平。
‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。
了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!
请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。
提示 若输入为“2012年2月”,则该行的输出为:7。每个数字字符单独相加。
输入格式:
读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过100个字符。
以"end"结束。
输出格式:
与输入行相对应的各个数字之和。
输入样例1:
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米
6月15日,6671米
6月19日,6965米
6月22日,6963米
6月24日,7020米
6月27日,7062米
下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力
end
输出样例1:
48
32
42
34
21
30
25
输入样例2:
全世界投入使用的各类载人潜水器约90艘,下潜深度超过1000米的仅有12艘,更深的潜水器数量更少
6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯
日本深潜器下潜6527米,蛟龙号在马里亚纳海沟海试成功到达7020米海底,创造了新的世界纪录
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功
下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟
end
输出样例2:
13
6
29
32
7
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
String line = in.nextLine();
if(line.equals("end")) break;
int len = line.length();
long sum = 0;
for(int i = 0; i < len; i ++)
{
char c = line.charAt(i);
if(c >= '0' && c <= '9')
sum += (c - '0');
}
System.out.println(sum);
}
}
}
7-4 sdut-String-5 图书价格汇总(II)
假设图书馆中图书信息的格式为:
Java程序设计: 34;Web程序设计: 56;JSP程序设计:20
按要求输出每本图书的名称及价格,计算所有图书的总价格并输出。
输入格式:
读入一行图书信息。如:
Java程序设计: 34;Web程序设计: 56;JSP程序设计:20
提示:
(1)每本书的价格是整数,价格与下一本书的名字之间有一个中文;价格前可能有空格,可能没有。
(2)题目中的分号”;“和冒号”:“为全角字符。
输出格式:
分别输出每本图书的名称及价格,一本书占一行,形式为:书名--价格;
最后,输出计算的所有图书的总价格,形式为:总价格--总价格
输入样例:
Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20
输出样例:
Java程序设计--34
Web程序设计--56
JSP程序设计--20
总价格--110
import java.util.*;
import java.lang.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String[] t = s.split(";");
int sum = 0;
int i;
for(i = 0; i < t.length; i ++)
{
String now = t[i];
String[] q = now.split(":");
int price=Integer.parseInt(q[1].trim());
String name=q[0].trim();//.trim()用于去掉首尾的空白符
sum=sum+price;
System.out.println(name+"--"+price);
}
System.out.println("总价格--"+sum);
}
}
7-5 sdut-String-2 识蛟龙号载人深潜,立科技报国志(II)(正则表达式)
背景简介:
“蛟龙号”载人深潜器是我国首台自主设计、自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。
中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录。
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一。
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平。
‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。
了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!
请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。
提示 若输入为“2012年2月”,则该行的输出为:2014。若干个连续的数字字符作为一个整体,以十进制形式相加。
输入格式:
读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过80个字符。
以"end"结束。
输出格式:
与输入行相对应的各个整数之和。
输入样例1:
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米
6月15日,6671米
6月19日,6965米
6月22日,6963米
6月24日,7020米
6月27日,7062米
下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力
end
输出样例1:
9165
6692
6990
6991
7050
7095
7099
输入样例2:
全世界投入使用的各类载人潜水器约90艘,下潜深度超过1000米的仅有12艘,更深的潜水器数量更少
6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯
日本深潜器下潜6527米,蛟龙号在马里亚纳海沟海试成功到达7020米海底,创造了新的世界纪录
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功
下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟
end
输出样例2:
1102
6000
13547
20021
7000
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
String line = in.nextLine();
if(line.equals("end")) break;
String[] s = line.split("\\D+");//“\\D+”表示所有非数字字符
long sum = 0;
for(int i = 0; i < s.length; i ++)
{
if(!s[i].equals(""))//避免出现空值,空值无法用parseInt转换
{
int data = Integer.parseInt(s[i]);
sum += data;
}
}
System.out.println(sum);
}
}
}
7-6 sdut-String+array1(Collection-Map)-1 读中国载人航天史,汇航天员数量,向航天员致敬(字符串+数组、LinkedMap )
1986年,中国实施“863”计划,航天技术列入其中。以载人飞船开始起步,最终建成我国的空间站。
1992年9月21日,中国实施载人航天工程,并确定了三步走的发展战略:第一步,发射载人飞船,建成初步配套的试验性载人飞船工程。第二步,突破载人飞船和空间飞行器的交会对接技术,利用载人飞船技术改装、发射一个空间实验室。第三步,建造载人空间站。
在长期的奋斗中,我国航天工作者不仅创造了非凡的业绩,而且铸就了特别能吃苦、特别能战斗、特别能攻关、特别能奉献的载人航天精神。载人航天精神,是“两弹一星”精神在新时期的发扬光大,是我们伟大民族精神的生动体现,永远值得全党、全军和全国人民学习。
截至2021年4月,历任航天英雄名字如下:
杨利伟(神舟五号)
费俊龙、聂海胜(神舟六号)
翟志刚、景海鹏、刘伯明(神舟七号)
景海鹏、刘旺、刘洋(神舟九号)
聂海胜、张晓光、王亚平(神舟十号)
景海鹏、陈东(神舟十一号)
会编程的小伙伴们,请以他们出征太空的先后顺序,统计一下航天英雄们出征太空的次数,以实际行动向航天员们致敬!
输入格式:
每次航天飞船的编号为一行读入数据,分别读入每次飞上太空的航天英雄的姓名,名字中间有一个空格分隔。
最后一行为“end“,表示输入结束。
提示:目前,中国航天员的数量小于20。
输出格式:
以出征太空的先后顺序,统计航天英雄们出征太空的次数。
每位航天员占一行,航天员姓名与出征次数中间有一个空格。
输入样例:
杨利伟
费俊龙 聂海胜
翟志刚 景海鹏 刘伯明
景海鹏 刘旺 刘洋
聂海胜 张晓光 王亚平
景海鹏 陈东
end
输出样例:
杨利伟 1
费俊龙 1
聂海胜 2
翟志刚 1
景海鹏 3
刘伯明 1
刘旺 1
刘洋 1
张晓光 1
王亚平 1
陈东 1
提示:
- 对于Java语言,此题有两种解决方案:
- (1)使用数组来解决;
- (2)使用java.util.Map接口的实现类LinkedMap来解决。
- LinkedHashMap是HashMap的子类,保证在遍历map元素时,可以按照添加的顺序实现遍历,对于频繁的遍历操作,它的执 行效率高于HashMap.
- 对于Python语言,。。。。
- 对于C语言,。。。。。。。
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String name = null;
Map<String, Integer> map = new LinkedHashMap<String, Integer>();//LinkedHashMap:对于元素的插入顺序 or 访问顺序进行排序
//Map是一个双列集合,一个元素包含两个值(一个key,一个value),key不允许重复,value可以重复
while(in.hasNext())
{
name = in.next();
if(name.equals("end")) break;
map.put(name, map.getOrDefault(name, 0) + 1);
//put存放key与value,map.getOrDefault:如果 在Map中存在key,则返回key所对应的的value,如果 在Map中不存在key,则返回默认值。
}
for(String it : map.keySet())//遍历输出
{
System.out.println(it + " " + map.get(it));
}
}
}
7-7 sdut-String-6 Java判断合法标识符
输入若干行字符串,判断每行字符串是否可以作为Java语法的合法标识符。
提示:Java标识符的命名规则——字符串允许包括 字母、数字、下划线_、$符号,但是数字不能作为首字母。
输入格式:
输入有多行,每行一个字符串,可能包含空格字符,字符串长度不超过20个字符。
输出格式:
若该行字符串可以作为Java标识符,则输出“true”;否则,输出“false”。
输入样例:
abc
_test
$test
a 1
a+b+c
a’b
123
变量
输出样例:
在这里给出相应的输出。例如:
true
true
true
false
false
false
false
true
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
//得到输字符串并输出
String s = in.nextLine();
char part;
boolean flag = true; //设立标志位
char first = s.charAt(0);//得到字符串首字符
//若首字符合法,继续判断后续字符
if (Character.isJavaIdentifierStart(first)) {
int len = s.length();//得到字符串长度
int i;
for (i = 1; i < len; i++) {
part = s.charAt(i);
if (!Character.isJavaIdentifierPart(part)) {
flag = false;
break;
}
}
} else {
//首字符不合法,判断结果确定非法
flag = false;
}
if (flag) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
}
7-8 sdut-String--判定Java源文件名称
输入若干行字符串,判断每行字符串是否可以作为Java的源文件名称。其中:
Java源文件的命名规则:合法的 Java标识符+“.java”;
Java标识符的命名规则:可包含字母、数字、下划线、$,但是数字不能作为首字母。
输入格式:
输入有多行,每行一个字符串。
输出格式:
若该行字符串可做为Java的源文件名称,则输出“true”;否则,输出“false”。
输入样例:
abc.java
_test
$test.java
$12.java
a 1.java
a+b+c.java
a’b.java
123.java
变量.java
Main.java.java
ab abc.java
输出样例:
true
false
true
true
false
false
false
false
true
false
false
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String s = in.nextLine();
if(s.endsWith(".java") && judge(s))
{
System.out.println("true");
}
else System.out.println("false");
}
}
public static boolean judge(String str)
{
char part;
boolean flag = true; //设立标志位
char first = str.charAt(0);//得到字符串首字符
if (Character.isJavaIdentifierStart(first)) {
int len = str.length();//得到字符串长度
int i;
for (i = 1; i < len - 5; i++) {
part = str.charAt(i);
if (!Character.isJavaIdentifierPart(part)) {
flag = false;
break;
}
}
} else {
flag = false;
}
return flag;
}
}
7-9 编程题:选修课成绩统计问题
学生选修课成绩统计问题
选修课格次成绩使用字母表示,规则为:A=5,B=4,C=3,D=2,E=1
编写程序统计每个同学两门选修课的分数成绩
输入格式:多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开
数据统计:将每个学生的两门课格次成绩,转换为分数成绩并求和
输出格式:结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入格式:
多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开
输出格式:
结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入样例:
在这里给出一组输入。例如:
zs A B,ls A C,ww B C
输出样例:
在这里给出相应的输出。例如:
zs 9,ls 8,ww 7
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str[]=sc.nextLine().split(",");
String str1[][]=new String [str.length][3];
for(int i=0;i<str.length;i++){
str1[i]=str[i].split(" ");
}
for (int i = 0; i < str.length; i++) {
int grade=0;
for(int j=0;j<3;j++){
if(str1[i][j].equals("A")) {grade+=5;}
else if(str1[i][j].equals("B")) {grade+=4;}
else if(str1[i][j].equals("C")) {grade+=3;}
else if(str1[i][j].equals("D")) {grade+=2;}
else if(str1[i][j].equals("E")) {grade+=1;}
else {grade=grade+0;}
}
if(i==str.length-1)
System.out.println(str1[i][0]+" "+grade);
else
System.out.print(str1[i][0]+" "+grade+",");
}
}
}
7-10 将一整个正整数的所有位重新排序,组成一个最大数
输入一个正整数,将这个数的所有位进行重新排序,得出最大的值。
输入格式:
输入一个正整数
输出格式:
输出排序后最大的值
输入样例:
在这里给出一组输入。例如:
19837
输出样例:
在这里给出相应的输出。例如:
98731
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String a = cin.nextLine();
char b[] = new char[a.length()];
for(int i = 0; i < a.length(); i ++)
{
char c = a.charAt(i);
b[i] = c;
}
Arrays.sort(b);
for(int i = a.length() - 1; i >= 0; i --)
System.out.print(b[i]);
}
}