浙大 Java语言程序设计编程答案11.doc_第1页
浙大 Java语言程序设计编程答案11.doc_第2页
浙大 Java语言程序设计编程答案11.doc_第3页
浙大 Java语言程序设计编程答案11.doc_第4页
浙大 Java语言程序设计编程答案11.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验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 (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转换成字符串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的个数。例如,countdigit(10090,0)的返回值是3。例:括号内是说明输入:3 (repeat=3)-219022345543输出:count=2 (-21902中有2个2)count=1 (有1个2)count=0 (345543中没有2)import java.util.Scanner;public class Test50003 public static 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); /*-*/ static int countdigit(long number,int digit)/统计正整数number中数字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),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。例:括号内是说明输入4 (repeat=4) 123456 -100 -2 99输出654321-1-299import java.util.Scanner;public class Test50009 public static void main(String args) int ri,repeat; 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); /*-*/static long reverse(long number)/返回number的逆序数long a;int flag=1; /保存符号if(number0) flag=-1;number=-number; /负数变成正数String s1=String.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输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例:括号内是说明输入:3 (输入3行字符串)10Pf4+1-+A 输出:16390510import 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=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; 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=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 63 1 2 35 5 4 3 2 1 输出1 5 6 7 1 2 3 1 2 3 4 5 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=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排序,/所以不需要返回值。 static void sort(int b) int i,j,k,temp; for(i=0;ib.length-1;i+) /选择法递增排序 k=i; for(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+);例:括号内是说明输入: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矩阵123456789B矩阵111111111A+B矩阵2345678910import java.util.Scanner;public class Test60031 public static void main(String args) int ri, repeat; 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+B矩阵,c); /*-加法-*/ static void add(int x,int y,int z) for(int i=0;ix.length;i+) for(int j=0;jxi.length;j+) zij=xij+yij; /*-输出-*/ static void prt(String s,int a) System.out.println(s); for(int 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个 mn 阶矩阵 a , 计算该矩阵元素的最大值。要求:编写max(),返回矩阵元素的最大值。例:括号内是说明输入:1 (repeat=1)3 2 (m=3,n=2)23 465567 7889 4输出: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()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论