浙大Java语言程序设计方案书编程答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1/9实验12-1字符串处理(二)说明:以下题目请采用字符串处理来实现。1.求整数的位数以及各位数之和。40010输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个整数,输出它的位数以及各位数之和。例:括号内是说明输入4(repeat=4)123456-100-199输出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)importjava.util.Scanner;publicclassTest40010{publicstaticvoidmain(String[]args){intri,repeat;intnumber,sum,n;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();/*--------------------*/n=Math.abs(n);Strings=String.valueOf(n);//把正整数n转换成字符串number=s.length();//得到整数的位数sum=0;for(inti=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。2/9例:括号内是说明输入:3(repeat=3)-219022345543输出:count=2(-21902中有2个2)count=1(有1个2)count=0(345543中没有2)importjava.util.Scanner;publicclassTest50003{publicstaticvoidmain(Stringargs[]){intri,repeat;intcount;longn;Scannerin=newScanner(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);}}/*------------*/staticintcountdigit(longnumber,intdigit){//统计正整数number中数字digit的个数intc=0;Strings=String.valueOf(number);//把长整数number转换成字符串//以下循环实现:依次取出number的每个数字与指定数字digit比较,若相等则个数加1for(inti=0;is.length();i++)if(s.charAt(i)-'0'==digit)c++;returnc;}}3.将一个整数逆序输出50009输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。3/9例:括号内是说明输入4(repeat=4)123456-100-299输出654321-1-299importjava.util.Scanner;publicclassTest50009{publicstaticvoidmain(Stringargs[]){intri,repeat;longn,res;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();/*---------*/res=reverse(n);System.out.println(res);}}/*---------*/staticlongreverse(longnumber){//返回number的逆序数longa;intflag=1;//保存符号if(number0){flag=-1;number=-number;//负数变成正数}Strings1=String.valueOf(number);Strings2=;for(inti=0;is1.length();i++)s2=s1.charAt(i)+s2;//字符串逆序a=Long.parseLong(s2);//转换成数值returnflag*a;//加上符号}}4.十六进制转换十进制600254/9输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例:括号内是说明输入:3(输入3行字符串)10Pf4+1-+A输出:16390510importjava.util.Scanner;publicclassTest60025{publicstaticvoidmain(String[]args){intri,repeat,i,number;charch;Stringstr;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){str=in.next();/*---------*/number=0;for(i=0;istr.length();i++){//从左往右依次取出字符ch=str.charAt(i);if(ch='0'&&ch='9')//合法字符转换成相应数值后计算十进制数number=number*16+(ch-'0');elseif(ch='A'&&ch='F')number=number*16+(ch-'A'+10);elseif(ch='a'&&ch='f')number=number*16+(ch-'a'+10);}//说明:要滤去所有的非十六进制字符,实际上只要对这些字符不进行任何操作就行了(当它不存在!)。System.out.println(number);}}}或:number=0;5/9str=str.toLowerCase();//所有字母转换成小写字母for(i=0;istr.length();i++){//从左往右依次取出字符ch=str.charAt(i);if(ch='0'&&ch='9')//合法字符转换成相应数值后计算十进制数number=number*16+(ch-'0');elseif(ch='a'&&ch='f')number=number*16+(ch-'a'+10);}或:number=0;str=str.toUpperCase();//所有字母转换成大写字母for(i=0;istr.length();i++){//从左往右依次取出字符ch=str.charAt(i);if(ch='0'&&ch='9')//合法字符转换成相应数值后计算十进制数number=number*16+(ch-'0');elseif(ch='A'&&ch='F')number=number*16+(ch-'A'+10);}或:使用java提供的方法直接转换,最方便Strings=;//保存原字符串中滤去非十六进制字符后形成的新字符串(十六进制形式)for(i=0;istr.length();i++){//滤去非十六进制字符ch=str.charAt(i);if((ch='0'&&ch='9')||(ch='A'&&ch='F')||(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)451763123554321输出1567123123456/9importjava.util.Scanner;publicclassTest60030{publicstaticvoidmain(String[]args){intri,repeat;inti,n,a[];Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();a=newint[n];for(i=0;in;i++)a[i]=in.nextInt();sort(a);for(i=0;in;i++)System.out.print(a[i]+);System.out.println();}}/*---------*///说明:数组作参数时,传递的是地址,形参数组和实参数组共用同一块内存,//方法sort()中对形参数组b排序,实际上就是对实参数组a排序,//所以不需要返回值。staticvoidsort(intb[]){inti,j,k,temp;for(i=0;ib.length-1;i++){//选择法递增排序k=i;for(j=i+1;jb.length;j++)if(b[k]b[j])k=j;if(i!=k){temp=b[i];b[i]=b[k];b[k]=temp;}}}}6.编写矩阵加法和输出函数(方法)60031输入一个正整数repeat(0repeat10),做repeat次下列运算:读入1个正整数n(1≤n≤6),再读入2个n阶方阵a和b,计算矩阵的和。要求:(1)编写计算矩阵和的函数(方法)add()。(2)编写输出矩阵的方法prt()。矩阵元素输出使用:System.out.print(a[i][j]+);例:括号内是说明输入:7/91(repeat=1)3(n=3)123456789(a矩阵)111111111(b矩阵)输出:A矩阵123456789B矩阵111111111A+B矩阵2345678910importjava.util.Scanner;publicclassTest60031{publicstaticvoidmain(String[]args){intri,repeat;inta[][],b[][],c[][],i,j,n;Scannerin=newScanner(System.in);repeat=in.nextInt();for(ri=1;ri=repeat;ri++){n=in.nextInt();a=newint[n][n];b=newint[n][n];c=newint[n][n];for(i=0;in;i++)for(j=0;jn;j++)a[i][j]=in.nextInt();for(i=0;in;i++)for(j=0;jn;j++)b[i][j]=in.nextInt();ad

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功