寒假07:字符串变换、P1102、P1101
来源:互联网 发布:respawn linux 编辑:程序博客网 时间:2024/06/09 22:52
算法训练 字符串变换
时间限制:1.0s 内存限制:256.0MB
问题描述
相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了1,2,3,4,5这5个参数分别指代不同的5种字符串操作,你需要根据传入的参数,按照徐老师的规定,对输入字符串进行格式转化。
徐老师指定的操作如下:
1 表示全部转化为大写字母输出,如abC 变成 ABC
2 表示全部转换为小写字母输出,如abC变成abc
3 表示将字符串整个逆序输出,如 abc 变成 cba
4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc
5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。
徐老师指定的操作如下:
1 表示全部转化为大写字母输出,如abC 变成 ABC
2 表示全部转换为小写字母输出,如abC变成abc
3 表示将字符串整个逆序输出,如 abc 变成 cba
4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc
5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。
输入格式
一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成
输出格式
输出根据上述规则转换后对应的字符串
样例输入
5 ABcdEE
样例输出
a-ee
数据规模和约定
输入字符串长度最长为200。
代码:
import java.util.Scanner;public class 字符串变换 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=Integer.parseInt(sc.next());String s=sc.next();switch (n) {case 1:System.out.println(s.toUpperCase());break;case 2:System.out.println(s.toLowerCase());break;case 3:for (int i = s.length()-1; i >= 0; i--) {System.out.print(s.charAt(i));}break;case 4:for (int i = 0; i < s.length(); i++) {if(s.charAt(i)>=97&&s.charAt(i)<=122){System.out.print((char)(s.charAt(i)-32));}else if(s.charAt(i)>=65&&s.charAt(i)<=90){System.out.print((char)(s.charAt(i)+32));}}break;case 5:s=s.toLowerCase();String re=s.charAt(0)+"";char a=s.charAt(0);int count=0;if(s.length()==2){System.out.println(s);return;}for (int i = 1; i < s.length(); i++) {if(s.charAt(i)-a==1){count++;}else{if(count>1){re+="-";re+=s.charAt(i-1);}re+=s.charAt(i);count=0;}a=s.charAt(i);}if(count>1){re+="-";re+=s.charAt(s.length()-1);}if(count==1){re+=s.charAt(s.length()-1);}System.out.println(re);break;}}}}
算法训练 P1102
时间限制:1.0s 内存限制:256.0MB
定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。
输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出格式:按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
输入:
3
Alice female 18 98
Bob male 19 90
Miller male 17 92
输出:
Bob male 19 90
Miller male 17 92
Alice female 18 98
输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出格式:按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
输入:
3
Alice female 18 98
Bob male 19 90
Miller male 17 92
输出:
Bob male 19 90
Miller male 17 92
Alice female 18 98
代码:
import java.util.Scanner;public class P1102 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=Integer.parseInt(sc.nextLine());String[] data=new String[n];int[][] arr=new int[n][2];String s;for (int i = 0; i < data.length; i++) {s=sc.nextLine();String[] ch=s.split(" ");data[i]=s;arr[i][0]=i;arr[i][1]=Integer.parseInt(ch[3]);}for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length; j++) {if(arr[i][1]<arr[j][1]){int t1=arr[i][1];arr[i][1]=arr[j][1];arr[j][1]=t1;int t2=arr[i][0];arr[i][0]=arr[j][0];arr[j][0]=t2;}}}for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length; j++) {if(arr[i][1]==arr[j][1]){if(arr[i][0]<arr[j][0]){int k=arr[i][0];arr[i][0]=arr[j][0];arr[j][0]=k;}}}}for (int i = 0; i < arr.length; i++) {System.out.println(data[arr[i][0]]);}}}}
算法训练 P1101
时间限制:1.0s 内存限制:256.0MB
有一份提货单,其数据项目有:商品名(MC)、单价(DJ)、数量(SL)。定义一个结构体prut,其成员是上面的三项数据。在主函数中定义一个prut类型的结构体数组,输入每个元素的值,计算并输出提货单的总金额。
输入格式:第一行是数据项个数N(N<100),接下来每一行是一个数据项。商品名是长度不超过100的字符串,单价为double类型,数量为整型。
输出格式:double类型的总金额。
输入:
4
book 12.5 3
pen 2.5 10
computer 3200 1
flower 47 5
输出:
3497.500000
有一份提货单,其数据项目有:商品名(MC)、单价(DJ)、数量(SL)。定义一个结构体prut,其成员是上面的三项数据。在主函数中定义一个prut类型的结构体数组,输入每个元素的值,计算并输出提货单的总金额。
输入格式:第一行是数据项个数N(N<100),接下来每一行是一个数据项。商品名是长度不超过100的字符串,单价为double类型,数量为整型。
输出格式:double类型的总金额。
输入:
4
book 12.5 3
pen 2.5 10
computer 3200 1
flower 47 5
输出:
3497.500000
代码:
import java.util.Scanner;import java.math.BigDecimal;public class P1101 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=Integer.parseInt(sc.nextLine());double sum=0;String s;for (int i = 0; i < n; i++) {s=sc.nextLine();String[] strarr=s.split(" ");double x=Double.parseDouble(strarr[1])*Double.parseDouble(strarr[2]);sum+=x;}BigDecimal bd=BigDecimal.valueOf(sum);String str=bd.setScale(6, BigDecimal.ROUND_HALF_UP).toString();System.out.println(str);}}}ps:这几天做的题都比较简单,明天开始做历届试题吧。一天搞懂两题。
0 0
- 寒假07:字符串变换、P1102、P1101
- P1101
- 寒假训练--字符串--字符串函数
- 寒假训练--字符串--字符串扩展
- 字符串变换
- 字符串变换
- 寒假训练--字符串--子串
- 字符串首字母大小写变换
- 字符串变换最小费用
- 字符串变换最小问题
- 算法训练 字符串变换
- 算法训练 字符串变换
- 算法训练 字符串变换
- 算法训练 字符串变换
- 寒假
- 寒假
- 寒假
- 寒假
- 10个有用的Sudoers配置在Linux中设置’sudo’
- 一个非常简单的react native计时器demo
- C ++ 银行家算法
- 单条/批量增加信息,Spring MVC, Mybatis, MySQL
- Move Zeroes
- 寒假07:字符串变换、P1102、P1101
- 第十三章 异步和数据驱动编程
- Go指南练习之《错误》
- LeetCode-Hash-409. Longest Palindrome
- day03--for应用
- D3入门学习
- android!!蓝!!牙
- CSS学习笔记1:初识CSS及其常见属性
- system 将参数传递给bat批处理文件