mooc零基础学习java语言习题答案

上传人:go****ng 文档编号:158138354 上传时间:2022-10-03 格式:DOC 页数:38 大小:80.01KB
返回 下载 相关 举报
mooc零基础学习java语言习题答案_第1页
第1页 / 共38页
mooc零基础学习java语言习题答案_第2页
第2页 / 共38页
mooc零基础学习java语言习题答案_第3页
第3页 / 共38页
点击查看更多>>
资源描述
第一周温度转换(5分)题目内容:写一个将华氏温度转换成摄氏温度的程序,转换的公式是:F = (9/5)*C + 32其中C表示摄氏温度,F表示华氏温度。程序的输入是一个整数,表示华氏温度。输出对应的摄氏温度,也是一个整数。提示,为了把计算结果的浮点数转换成整数,需要使用下面的表达式:(int)x;其中x是要转换的那个浮点数。注意:除了题目要求的输出,不能输出任何其他内容,比如输入时的提示,输出时的说明等等都不能。这道题目要求转换后的数字,程序就只能输出这个数字,除此之外任何内容都不能输出。输入格式:一个整数。输出格式:一个整数。输入样例:100输出样例:37程序代码import java.util.Scanner;public class Main public static void main(String args) / TODO Auto-generated method stubint F;int C;Scanner in=new Scanner(System.in);F =in.nextInt();C =(F-32)*5/9;System.out.println(C);in.close();第二周1时间换算(5分)题目内容:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。提醒:要小心跨日的换算。输入格式:一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而且分小于10分,需要保留十位上的0。输出格式:一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而且分小于10分,需要保留十位上的0。输入样例:933输出样例:133程序代码import java.util.Scanner;public class Main public static void main(String args) / TODO Auto-generated method stubint UTC;int BJT;int m,h;Scanner in=new Scanner(System.in);BJT =in.nextInt();m =BJT%100;h =BJT/100-8;if(BJT=0&h24&m60)if(h=11&RS=0&m=1000000)while(m!=0)int p;n=m%10;if(n%2=s%2)p=1;elsep=0;s=s+1;/sum=sum+1;f=(int) (f+p*Math.pow(10, s-2);m=m/10;while(f!=0)int p;p=f%10;sum=(int) (sum+p*Math.pow(2, t);t=t+1;f=f/10;System.out.println(sum);in.close();第四周1素数和(5分)题目内容:我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。现在,给定两个整数n和m,0n=m=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。输入格式:两个整数,第一个表示n,第二个表示m。输出格式:一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。输入样例:2 4输出样例:15程序代码import java.util.Scanner;public class Main public int IsOrNotprime(int x)int j;int n;n= x/2;for(j=2;j0&n=m&m=200)for(i=2;i=n&j=-100000&n=100000) if(n0;count-) int mid=1; for(int j=1;jcount;j+) mid*=10; if(isZero=1) System.out.print( ); v=n/mid; n%=mid; if(v=0&count=1) v=n; isPut=0; isZero=1; switch(v) case 0: System.out.print(ling); continue; case 1: System.out.print(yi); continue; case 2: System.out.print(er); continue; case 3: System.out.print(san); continue; case 4: System.out.print(si); continue; case 5: System.out.print(wu); continue; case 6: System.out.print(liu); continue; case 7: System.out.print(qi); continue; case 8: System.out.print(ba); continue; case 9: System.out.print(jiu); continue; 第五周1多项式加法(5分)题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。输出格式:从最高幂开始依次降到0幂,如:2x6+3x5+12x3-6x+20注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。输入样例:6 25 33 121 60 206 25 32 121 60 20输出样例:4x6+6x5+12x3+12x2+12x+40程序代码import java.util.Scanner;public class Main public static void main (String args) Scanner in = new Scanner(System.in); int array = new int101; int max = 0; int times = 0; while(in.hasNext() int x = in.nextInt(); int num = in.nextInt(); arrayx += num; if(x = 0) times+; if(times = 2) break; for(int j = 0;j max) max = j; for(int i = max;i 0; i-) if(arrayi 0) if(i != max) System.out.print(+); if(arrayi != 1) System.out.print(arrayi); System.out.print(x); /幂次为1时不用输出幂次 if(i != 1) System.out.print(i); else if(arrayi 0,正系数先输出+ if(array0 0) System.out.print(+); System.out.print(array0); 第六周1单词长度(5分)题目内容:你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“its”算一个单词,长度为4。注意,行中可能出现连续的空格。输入格式:输入在一行中给出一行文本,以.结束,结尾的句号不能计算在最后一个单词的长度内。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。输入样例:Its great to see you here.输出样例:4 5 2 3 3 4程序代码import java.util.Scanner;public class Main private static Scanner in;public static void main(String args) in = new Scanner(System.in); String text=new String(); dotext=in.next(); if (text.lastIndexOf(.)=(text.length()-1) if(text.length()1)System.out.print(text.length()-1); else System.out.print(text.length()+ ); while(true); 2GPS数据处理(5分)题目内容:NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。其中$GPRMC语句的格式如下:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50这里整条语句是一个文本行,行中以逗号“,”隔开各个字段,每个字段的大小(长度)不一,这里的示例只是一种可能,并不能认为字段的大小就如上述例句一样。字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息字段1:UTC时间,hhmmss.sss格式字段2:状态,A=定位,V=未定位字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)字段4:纬度N(北纬)或S(南纬)字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)字段6:经度E(东经)或W(西经)字段7:速度,节,Knots字段8:方位角,度字段9:UTC日期,DDMMYY格式字段10:磁偏角,(000 - 180)度(前导位数不足则补0)字段11:磁偏角方向,E=东W=西字段16:校验值这里,“*”为校验和识别符,其后面的两位数为校验和,代表了“$”和“*”之间所有字符(不包括这两个字符)的异或值的十六进制值。上面这条例句的校验和是十六进制的50,也就是十进制的80。提示:运算符的作用是异或。将$和*之间所有的字符做运算(第一个字符和第二个字符异或,结果再和第三个字符异或,依此类推)之后的值对65536取余后的结果,应该和*后面的两个十六进制数字的值相等,否则的话说明这条语句在传输中发生了错误。注意这个十六进制值中是会出现A-F的大写字母的。另外,如果你需要的话,可以用Integer.parseInt(s)从String变量s中得到其所表达的整数数字;而Integer.parseInt(s, 16)从String变量s中得到其所表达的十六进制数字现在,你的程序要读入一系列GPS输出,其中包含$GPRMC,也包含其他语句。在数据的最后,有一行单独的END表示数据的结束。你的程序要从中找出$GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条$GPRMC语句,以最后一条语句得到的北京时间作为结果输出。你的程序一定会读到一条有效的$GPRMC语句。输入格式:多条GPS语句,每条均以回车换行结束。最后一行是END三个大写字母。输出格式:6位数时间,表达为:hh:mm:ss其中,hh是两位数的小时,不足两位时前面补0;mm是两位数的分钟,不足两位时前面补0;ss是两位数的秒,不足两位时前面补0。输入样例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50END输出样例:10:48:13程序代码import java.util.Scanner;public class Main static String time; public static void Input() Scanner in=new Scanner(System.in); String s; do s=in.nextLine(); if(s.contains($GPRMC)&s.contains(,A,) if(Check(s) time=s; while(!s.equals(END); in.close(); private static boolean Check(String s) int i; int xor=s.charAt(1); for(i=2;s.charAt(i)!=(int)*;i+) xor=s.charAt(i); String p=s.substring(i+1); int w=Integer.valueOf(p,16); return(w=xor); public static int m(int a,int b) int c; c=Integer.parseInt(time.substring(a,b); return c; public static void main(String args) Input(); int hh=0,mm=0,ss=0; int j=time.indexOf(,); hh=m(j+1,j+3)+8; mm=m(j+3,j+5); ss=m(j+5,j+7); hh%=24; if(hh=10) System.out.print(hh); else if(hh=0) System.out.print(00); else System.out.print(0+hh); if(mm=10) System.out.print(:+mm); else if(mm=0) System.out.print(:00); else System.out.print(:0+mm); if(ss=10) System.out.print(:+ss); else if(ss=0) System.out.print(:00); else System.out.print(:0+ss); 第七周1分解质因数(5分)题目内容:每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。现在,你的程序要读入一个2,100000范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。输入格式:一个整数,范围在2,100000内。输出格式:形如:n=axbxcxd或n=n所有的符号之间都没有空格,x是小写字母x。输入样例:18输出样例:18=2x3x3程序代码import java.util.Scanner; public class Main public static void main(String args) Scanner in=new Scanner(System.in); int m=in.nextInt(); System.out.print(m+=); fenjie(m); public static int primeFactor(int m) int pf=2; while(m%pf0&pf=Math.sqrt(m) pf=nextPrime(pf); return pf; public static void fenjie(int m) if(isPrime(m)=true) System.out.print(m); return; else if(m2) do prime+=2; while(isPrime(prime)=false); else prime=3; return prime; public static boolean isPrime(int num) boolean isPrime=true; if(num2) if(numInteger.MAX_VALUE) System.out.print(参数太大); return false; int max=(int)Math.sqrt(num); if(num%2=0) isPrime=false; else for(int i=3;i=max;i+=2) if(num%i=0) isPrime=false; break; else if(num2)isPrime=false; return isPrime; 2完数(5分)题目内容:一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=123(6的因子是1,2,3)。现在,你要写一个程序,读入两个正整数n和m(1=nm1000),输出n,m范围内所有的完数。提示:可以写一个函数来判断某个数是否是完数。输入格式:两个正整数,以空格分隔。输出格式:其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行输入样例:1 10输出样例:6程序代码import java.util.Scanner;public class Main public static void main(String args) / TODO Auto-generated method stubScanner in=new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();Search(n,m);in.close();public static void Search(int n,int m)int have=0;for (int i=n;i=m;i+)have =wanshu(i,have);if( have = 0)System.out.println( ); public static int wanshu(int n,int have) int sum=0; for(int i=1;in;i+)if(n%i=0) sum+=i; if(sum=n)if(have!=0)System.out.print( );System.out.print(n);have+;return have;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!