《2022年浙大Java语言程序设计编程答案 5.pdf》由会员分享,可在线阅读,更多相关《2022年浙大Java语言程序设计编程答案 5.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验 12-1 字符串处理(二)说明:以下题目请采用字符串处理来实现。1. 求整数的位数以及各位数之和。40010输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入一个整数,输出它的位数以及各位数之和。例:括号内是说明输入4 (repeat=4) 123456 -100 -1 99 输出number=6, sum=21 (123456 的位数是 6, 各位数之和是 21) number=3, sum=1 (-100的位数是 3, 各位数之和是 1) number=1, sum=1 (-1的位数是 1, 各位数之和是 1) number=2, sum=18
2、(99 的位数是 2, 各位数之和是 18) import java.util.Scanner; public class Test40010 public static void main(String args) int ri, repeat; int number, sum,n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); /*-*/ n=Math.abs (n); String s=String.valueOf(n); / 把正整数 n
3、转换成字符串number=s.length(); / 得到整数的位数sum=0; for( int i=0;inumber;i+) sum+=(s.charAt(i)-0); / 求各位数字和 System.out.println(number=+number+, sum=+sum); 2. 统计一个整数中数字的个数。 50003输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:读入 1 个整数,统计并输出该数中2 的个数。要求定义并调用函数countdigit(number,digit), 它的功能是统计整数number中数字 digit的个数。例如,cou
4、ntdigit(10090,0)的返回值是 3。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 例:括号内是说明输入:3 (repeat=3) -21902 2 345543 输出:count=2 (-21902中有 2 个 2) count=1 (有 1 个 2) count=0 (345543中没有 2) import java.util.Scanner; public class Test50003 public stat
5、ic void main(String args) int ri, repeat; int count; long n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); /*-*/ n=Math.abs (n); count=countdigit(n,2); System.out.println(count=+count); /*-*/ staticint countdigit(long number,int digit)/统计正整数 number
6、 中数字 digit的个数int c=0; String s=String.valueOf(number); / 把长整数 number 转换成字符串/以下循环实现:依次取出number 的每个数字与指定数字digit比较,若相等则个数加1 for( int i=0;is.length();i+) if(s.charAt(i)-0=digit)c+; return c; 3. 将一个整数逆序输出 50009输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number) ,它的功能是返回 numbe
7、r的逆序数。例如 reverse(12345) 的返回值是 54321。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 例:括号内是说明输入4 (repeat=4) 123456 -100 -2 99 输出654321 -1 -2 99 import java.util.Scanner; public class Test50009 public static void main(String args) int ri,repe
8、at; long n, res; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1;ri=repeat;ri+) n=in.nextInt(); /*-*/ res= reverse(n); System.out.println(res); /*-*/ staticlong reverse(long number)/ 返回number 的逆序数long a; int flag=1; / 保存符号if(number0) flag=-1; number=-number; / 负数变成正数 String s1=Strin
9、g.valueOf(number); String s2= ; for( int i=0;is1.length();i+) s2=s1.charAt(i)+s2; / 字符串逆序a=Long.parseLong(s2); / 转换成数值return flag*a; /加上符号 4. 十六进制转换十进制 60025 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 输入一个正整数 repeat (0repeat10),做 repea
10、t 次下列运算:输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例:括号内是说明输入:3 (输入 3 行字符串 ) 10 Pf4+1 -+A 输出:16 3905 10 import java.util.Scanner; public class Test60025 public static void main(String args) int ri, repeat, i,number; char ch; String str; Scanner in=new Scanner(System.in); repeat=
11、in.nextInt(); for(ri=1; ri=repeat; ri+) str=in.next(); /*-*/ number=0; for (i=0;i= 0&ch= A&ch= a&ch= f) number=number*16+(ch-a+10); / 说明:要滤去所有的非十六进制字符,实际上只要对这些字符不进行任何操作就行了(当它不存在!)。 System.out.println(number); 或: number=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
12、第 4 页,共 9 页 - - - - - - - - - str=str.toLowerCase(); / 所有字母转换成小写字母for (i=0;i=0&ch= a&ch= f) number=number*16+(ch-a+10); 或: number=0; str=str.toUpperCase(); / 所有字母转换成大写字母for (i=0;i= 0&ch=A&ch= F) number=number*16+(ch-A+10); 或:使用 java 提供的方法直接转换,最方便String s= ; /保存原字符串中滤去非十六进制字符后形成的新字符串(十六进制形式)for(i=0;i
13、=0&ch=A&ch=a&ch= f) s=s+ch; number=Integer.parseInt(s, 16); / 把十六进制形式的字符串转换成十进制整数实验 12-2 数组作为方法的参数5. 编写排序函数 ( 方法) 60030 输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入一个正整数 n,再输入 n 个整数,将它们从小到大排序后输出。 要求将排序编写为一个sort()方法。例:括号内是说明输入3 (repeat=3) 4 5 1 7 6 3 1 2 3 5 5 4 3 2 1 输出1 5 6 7 1 2 3 1 2 3 4 5 名师资料总结
14、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - import java.util.Scanner; public class Test60030 public static void main(String args) int ri, repeat; int i, n, a; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n
15、=in.nextInt(); a=new intn; for(i=0; in; i+) ai=in.nextInt(); sort(a); for(i=0; in; i+) System.out.print(ai+ ); System.out.println(); /*-*/ / 说明:数组作参数时,传递的是地址,形参数组和实参数组共用同一块内存,/ 方法sort()中对形参数组 b排序,实际上就是对实参数组a排序,/ 所以不需要返回值。staticvoid sort(int b) int i,j,k,temp; for(i=0;ib.length-1;i+) / 选择法递增排序 k=i; f
16、or(j=i+1;jbj) k=j; if(i!=k) temp=bi;bi=bk; bk=temp; 6. 编写矩阵加法和输出函数 ( 方法) 60031输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:读入 1 个正整数n(1n6), 再读入 2 个 n 阶方阵 a 和 b , 计算矩阵的和。要求:( 1)编写计算矩阵和的函数(方法)add() 。(2)编写输出矩阵的方法prt()。矩阵元素输出使用: System.out.print(aij+ ); 例:括号内是说明输入:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
17、 - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 1 (repeat=1) 3 (n=3) 1 2 3 4 5 6 7 8 9 (a 矩阵)1 1 1 1 1 1 1 1 1 (b 矩阵)输出:A矩阵1 2 3 4 5 6 7 8 9 B矩阵1 1 1 1 1 1 1 1 1 A+B矩阵2 3 4 5 6 7 8 9 10 import java.util.Scanner; public class Test60031 public static void main(String args) int ri, re
18、peat; int a,b,c,i,j,n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); a=new intnn; b=new intnn;c=new intnn; for(i=0; in; i+) for(j=0;jn;j+) aij=in.nextInt(); for(i=0; in; i+) for(j=0;jn;j+) bij=in.nextInt(); add(a,b,c); prt(A矩阵,a); prt(B矩阵,b); prt(A
19、+B矩阵,c); /*-加法 -*/ staticvoid add(int x,int y,int z) for ( int i=0;ix.length;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - for( int j=0;jxi.length;j+) zij=xij+yij; /*-输出 -*/staticvoid prt(String s,int a) System.out .println(s); for( i
20、nt i=0; ia.length; i+) for( int j=0;jai.length;j+) System.out .print(aij+ ); System.out .println(); 7. 编写函数求矩阵最大值 60032输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:读入 2 个正整数 m 和 n(1m,n6), 再读入 1 个 m n 阶矩阵 a , 计算该矩阵元素的最大值。要求:编写 max(),返回矩阵元素的最大值。例:括号内是说明输入:1 (repeat=1) 3 2 (m=3,n=2) 23 465 567 78 89 4 输出:
21、max=567 import java.util.Scanner; public class Test60032 public static void main(String args) int ri, repeat; int a,i,j,m,n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); n=in.nextInt(); a=new intmn; for(i=0; im; i+) for(j=0;jn;j+) aij=in.nextInt()
22、; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - System.out.println(max=+max(a); /*-*/ staticint max(int b) int max=b00; for( int i=0;ib.length;i+) for( int j=0;jbi.length;j+) if(maxbij) max=bij; return max; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -