2022年mooc零基础学习java语言习题答案.pdf
温度转换( 5 分)题目内容:写一个将华氏温度转换成摄氏温度的程序,转换的公式是:F = (9/5)*C + 32其中 C表示摄氏温度,F 表示华氏温度。程序的输入是一个整数,表示华氏温度。输出对应的摄氏温度,也是一个整数。提示,为了把计算结果的浮点数转换成整数,需要使用下面的表达式:(int)x;其中 x 是要转换的那个浮点数。注意:除了题目要求的输出,不能输出任何其他内容,比如输入时的提示,输出时的说明等等都不能。这道题目要求转换后的数字,程序就只能输出这个数字,除此之外任何内容都不能输出。输入格式 :一个整数。输出格式:一个整数。输入样例:100输出样例:37程序代码import class Main public static void main(String args) S(Strength) 信号强度即大小.其中 R位于报告第一位,共分5 级,用 15 数字表示 .1-Unreadable2-Barely readable, occasional words distinguishable3-Readable with considerable difficulty4-Readable with practically no difficulty5-Perfectly readable报告第二位是S,共分九个级别,用1 9 中的一位数字表示1-Faint signals, barely perceptible2-Very weak signals精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 14 页 - - - - - - - - - - 3-Weak signals4-Fair signals5-Fairly good signals6-Good signals7-Moderately strong signals8-Strong signals9-Extremely strong signals现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:Extremely strong signals, perfectly readable.输入格式 :一个整数,信号报告。整数的十位部分表示可辨度,个位部分表示强度。输入的整数范围是11,59内有效的数字,这个范围外的数字不可能出现在测试数据中。输出格式:一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个字母是小写的。注意这里的标点符号都是英文的。输入样例:33输出样例:Weak signals, readable with considerable difficulty.程序代码import class Main public static void main(String args) ;break;case 2:barely readable, occasional words distinguishable.);break;case 3:readable with considerable difficulty.);break;case 4:readable with practically no difficulty.);break;case 5:perfectly readable.);break;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 14 页 - - - - - - - - - - ();第三周1 奇偶个数( 5 分)题目内容:你的程序要读入一系列正整数数据,输入 -1 表示输入结束, -1 本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。输入格式 :一系列正整数,整数的范围是(0,100000 )。如果输入 -1 则表示输入结束。输出格式:两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。输入样例:9 3 4 2 5 7 1 输出样例:4 2程序代码import class Main public static void main(String args) 结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“its”算一个单词,长度为4。注意,行中可能出现连续的空格。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 14 页 - - - - - - - - - - 输入格式 :输入在一行中给出一行文本,以.结束,结尾的句号不能计算在最后一个单词的长度内。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。输入样例:Its great to see you here.输出样例:4 5 2 3 3 4程序代码import class Main private static Scanner in;public static void main(String args) in = new Scanner; String text=new String(); dotext=(); if (.)=()-1) if()1) else ); while(true); 2GPS数据处理( 5 分)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - 题目内容: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,A,N,E,150706,A*50这里整条语句是一个文本行,行中以逗号“,”隔开各个字段,每个字段的大小(长度)不一,这里的示例只是一种可能,并不能认为字段的大小就如上述例句一样。字段 0:$GPRMC,语句 ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data (RMC )推荐最小定位信息字段 1:UTC时间,格式字段 2:状态, A=定位, V=未定位字段 3:纬度,度分格式(前导位数不足则补0)字段 4:纬度 N(北纬)或S(南纬)字段 5:经度,度分格式(前导位数不足则补0)字段 6:经度 E(东经)或W (西经)字段 7:速度,节, Knots字段 8:方位角,度字段 9:UTC日期, DDMMYY格式字段 10:磁偏角,( 000 - 180)度(前导位数不足则补0)字段 11:磁偏角方向,E=东 W= 西字段 16:校验值这里,“ *”为校验和识别符,其后面的两位数为校验和,代表了“$”和“*”之间所有字符(不包括这两个字符)的异或值的十六进制值。上面这条例句的校验和是十六进制的50,也就是十进制的80。提示: 运算符的作用是异或。将$和*之间所有的字符做运算 ( 第一个字符和第二个字符异或,结果再和第三个字符异或,依此类推) 之后的值对65536 取余后的结果,应该和* 后面的两个十六进制数字的值相等,否则的话说明这条语句在传输中发生了错误。注意这个十六进制值中是会出现A-F 的大写字母的。另外,如果你需要的话,可以用(s) 从 String变量 s 中得到其所表达的整数数字;而(s, 16)从 String变量 s 中得到其所表达的十六进制数字精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 14 页 - - - - - - - - - - 现在,你的程序要读入一系列GPS输出,其中包含$GPRMC,也包含其他语句。在数据的最后,有一行单独的END表示数据的结束。你的程序要从中找出$GPRMC 语句,计算校验和,找出其中校验正确,并且字段2 表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条$GPRMC 语句,以最后一条语句得到的北京时间作为结果输出。你的程序一定会读到一条有效的$GPRMC 语句。输入格式 :多条 GPS语句,每条均以回车换行结束。最后一行是END三个大写字母。输出格式:6 位数时间,表达为:hh:mm:ss其中, hh 是两位数的小时,不足两位时前面补0;mm 是两位数的分钟,不足两位时前面补0;ss 是两位数的秒,不足两位时前面补0。输入样例:$GPRMC,A,N,E,150706,A*50END输出样例:10:48:13程序代码import class Main static String time; public static void Input() Scanner in=new Scanner; String s; do s=();精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 14 页 - - - - - - - - - - if($GPRMC)&(,A,) if(Check(s) time=s; while(!(END); (); private static boolean Check(String s) int i; int xor=(1); for(i=2;(i)!=(int)*;i+) xor=(i); String p=(i+1); int w=(p,16); return(w=xor); public static int m(int a,int b) int c; c=(a,b); return c; public static void main(String args) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 14 页 - - - - - - - - - - Input(); int hh=0,mm=0,ss=0; int j=(,); hh=m(j+1,j+3)+8; mm=m(j+3,j+5); ss=m(j+5,j+7); hh%=24; if(hh=10) else if(hh=0) 00); else 0+hh); if(mm=10) :+mm); else if(mm=0) :00); else :0+mm); if(ss=10) :+ss); else if(ss=0) :00); else :0+ss); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 14 页 - - - - - - - - - - 第七周1 分解质因数( 5 分)题目内容:每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如, 6 可以被分解为2x3,而 24 可以被分解为2x2x2x3。现在,你的程序要读入一个2,100000范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。输入格式 :一个整数,范围在2,100000内。输出格式:形如:n=axbxcxd或n=n所有的符号之间都没有空格,x 是小写字母x。输入样例:18输出样例:18=2x3x3程序代码import public class Main public static void main(String args) Scanner in=new Scanner; int m=(); =); fenjie(m);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 - - - - - - - - - - public static int primeFactor(int m) int pf=2; while(m%pf0&pf=(m) pf=nextPrime(pf); return pf; public static void fenjie(int m) if(isPrime(m)=true) return; else if(m2) do prime+=2;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - - - - - - - - - while(isPrime(prime)=false); else prime=3; return prime; public static boolean isPrime(int num) boolean isPrime=true; if(num2) if(num 参数太大 ); return false; int max=(int)(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;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - - - return isPrime; 2 完数( 5 分)题目内容:一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=123(6 的因子是 1,2,3)。现在,你要写一个程序,读入两个正整数n 和 m (1=nm1000 ),输出 n,m 范围内所有的完数。提示:可以写一个函数来判断某个数是否是完数。输入格式 :两个正整数,以空格分隔。输出格式:其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行输入样例:1 10输出样例:6程序代码import class Main public static void main(String args) / TODO Auto-generated method stubScanner in=new Scanner;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 14 页 - - - - - - - - - - int n=();int m=();Search(n,m);();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) ); public static int wanshu(int n,int have) int sum=0; for(int i=1;in;i+)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - if(n%i=0) sum+=i; if(sum=n)if(have!=0) );have+;return have;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -