mooc零基礎學習java語言習題答案_第1頁
mooc零基礎學習java語言習題答案_第2頁
mooc零基礎學習java語言習題答案_第3頁
mooc零基礎學習java語言習題答案_第4頁
mooc零基礎學習java語言習題答案_第5頁
免費預覽已結束,剩余21頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一周溫度轉換(5分)題目內容:寫一個將華氏溫度轉換成攝氏溫度的程序,轉換的公式是:F = (9/5)* C + 32其中C表示攝氏溫度,F表示華氏溫度。程序的輸入是一個整數,表示華氏溫度。輸岀對應的攝氏溫度, 也是一個整數。提示,為了把計算結果的浮點數轉換成整數,需要使用下面的表達式:(int)x;其中x是要轉換的那個浮點數。注意:除了題目要求的輸岀,不能輸岀任何其他內容,比如輸入時的提示,輸岀時的說明等等都不能。 這道題目要求轉換后的數字,程序就只能輸岀這個數字,除此之外任何內容都不能輸岀。輸入格式:一個整數。輸出格式: 一個整數。輸入樣例:100輸出樣例:37程序代碼import jav

2、a.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.nextlnt();C =(F-32)*5/9;System.out.println(C);in.close();第二周1 時間換算( 5 分)題目內容:UTC 是世界協調時, BJT 是北京時間, UTC 時間相當于 BJT 減去 8 ?,F在,你的程序要讀入一個整數, 表示 BJT 的時

3、和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小于 10 ,則沒有千位部 分;如果小時是 0,則沒有百位部分;如果分小于 10 分,需要保留十位上的 0。如 1124 表示 11 點 24 分,而 905 表示 9點5分,36表示0點36分,7表示 0點7分。有效的輸入范圍是 0 到 2359 ,即你的程序不可能從測試服務器讀到0 到 2359 以外的輸入數據。你的程序要輸出這個時間對應的 UTC 時間,輸出的格式和輸入的相同,即輸出一個整數,表示 UTC 的時 和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小于 10 ,則沒有千位部分;如果小時 是 0 ,則沒有百位部

4、分;如果分小于 10 分,需要保留十位上的 0 。提醒:要小心跨日的換算。輸入格式 :一個整數,表示 BJT 的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小于10 ,則沒有千位部分;如果小時是 0,則沒有百位部分;如果小時不是 0而且分小于 10 分,需要保留十位上的 0。輸出格式:一個整數,表示 UTC 的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小于10 ,則沒有千位部分;如果小時是 0,則沒有百位部分;如果小時不是 0而且分小于 10 分,需要保留十位上的 0。輸入樣例:933輸出樣例:133程序代碼import java.util.Scanner;p

5、ublic 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&&h<24&&m<60) if(h<0)UTC=(24+h)*100+m;elseUTC =h*100+m;System.out.println(U

6、TC); in.close();2 信號報告( 5 分)題目內容:無線電臺的 RS 制信號報告是由三兩個部分組成的: R(Readability) 信號可辨度即清晰度 .S(Strength) 信號強度即大小 .其中 R 位于報告第一位,共分 5 級,用 1 5 數字表示 .1- -Unreadable2- -Barely readable, occasional words distinguishable3- -Readable with considerable difficulty4- -Readable with practically no difficulty5- -Perfect

7、ly readable報告第二位是S,共分九個級別,用19中的一位數字表示1- -Faint signals, barely perceptible2- -Very weak signals3- -Weak signals4- -Fair signals5- -Fairly good signals6- -Good signals7- -Moderately strong signals8- -Strong signals9- -Extremely strong signals現在,你的程序要讀入一個信號報告的數字,然后輸出對應的含義。如讀到59 ,則輸出:Extremely strong s

8、ignals, perfectly readable.輸入格式 :一個整數,信號報告。整數的十位部分表示可辨度,個位部分表示強度。輸入的整數范圍是 11,59 內有效 的數字,這個范圍外的數字不可能出現在測試數據中。輸出格式: 一句話,表示這個信號報告的意義。按照題目中的文字,先輸出表示強度的文字,跟上逗號和空格,然后 是表示可辨度的文字,跟上句號。注意可辨度的句子的第一個字母是小寫的。注意這里的標點符號都是英 文的。輸入樣例:33輸出樣例:Weak signals, readable with considerable difficulty.程序代碼import java.util.Scan

9、ner;public class Main public static void main(String args) / TODO Auto-generated method stubint RS;int S,R;Scanner in=new Scanner(System.in);RS =in.nextInt();if(RS>=11&&RS<=59)S = RS/10;R = RS%10;switch(R)case 1:System.out.print("Faint signals, barely perceptible, ");break;ca

10、se 2:System.out.print("Very weak signals, ");break;case 3:System.out.print("Weak signals, ");break; case 4:System.out.print("Fair signals, ");break; case 5:System.out.print("Fairly good signals, ");break; case 6:System.out.print("Good signals, ");bre

11、ak; case 7:System.out.print("Moderately strong signals, ");break; case 8:System.out.print("Strong signals, ");break; case 9:System.out.print("Extremely strong signals, ");break;switch(S) case 1:System.out.print("unreadable.");break;case 2:System.out.print(&quo

12、t;barely readable, occasional words distinguishable.");break; case 3:System.out.print("readable with considerable difficulty.");break; case 4:System.out.print("readable with practically no difficulty.");break; case 5:System.out.print("perfectly readable.");break;in

13、.close();第三周1 奇偶個數( 5 分)題目內容:你的程序要讀入一系列正整數數據,輸入 -1 表示輸入結束, -1 本身不是輸入的數據。程序輸出讀到的數 據中的奇數和偶數的個數。輸入格式 :一系列正整數,整數的范圍是( 0,100000 )。如果輸入 -1 則表示輸入結束。輸出格式: 兩個整數,第一個整數表示讀入數據中的奇數的個數,第二個整數表示讀入數據中的偶數的個數。兩個整 數之間以空格分隔。輸入樣例:9 3 4 2 5 7 1輸出樣例:4 2程序代碼import java.util.Scanner;public class Main public static void main(

14、String args) / TODO Auto-generated method stubint m;int n=0;int t=0;Scanner in=new Scanner(System.in);m =in.nextInt();while(m!=-1)if(m%2=1)n =n+1;elset=t+1;m =in.n ext In t();System.out.pri ntln(n+" "+t);in .close();2數字特征值(5分)題目內容:對數字求特征值是常用的編碼算法,奇偶特征是一種簡單的特征值。對于一個整數,從個位開始對每一位數字編號,個位是1號,十位

15、是2號,以此類推。這個整數在第 n位上的數字記作x,如果x和n的奇偶 性相同,則記下一個1,否則記下一個0。按照整數的順序把對應位的表示奇偶性的0和1都記錄下來,就形成了一個二進制數字。比如,對于342315,這個二進制數字就是 001101。這里的計算可以用下面的表格來表示:數字342315數位54321數字奇偶1 奇偶偶奇1 奇奇數位奇偶偶奇偶奇偶奇奇偶一致001101二進制位值32168421按照二進制位值將1的位的位值加起來就得到了結果 13。你的程序要讀入一個非負整數,整數的范圍是0,100000,然后按照上述算法計算岀表示奇偶性的那個二進制數字,輸岀它對應的十進制值。提示:將整數從

16、右向左分解,數位每次加1,而二進制值每次乘2。輸入格式:一個非負整數,整數的范圍是0,1000000。輸出格式:一個整數,表示計算結果。輸入樣例:342315輸出樣例:13程序代碼import java.util.Scanner;public class Main public static void main(String args) int m;int n;int t=0;int s=1;int sum=0;int f=0;Scanner in=new Scanner(System.in);m =in.nextInt();if(m>=0&&m<=1000000)

17、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 是第三個素數,依次類推?,F在,給定兩個整數 n 和 m ,0<n<=m<

18、=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;

19、for(j=2;j<=n;j+)if(x%j=0)return 0;return 1;public static void main(String args) int n;int m;int i;int sum=0;int j=0;Scanner in=new Scanner(System.in); n =in.nextInt();m =in.nextInt();Main s= new Main(); if(n>0&&n<=m&&m<=200) for(i=2;i<=1000000;i+) if(s.IsOrNotprime(i)=

20、1)j=j+1;if(j>=n&&j<=m)sum=sum+i;if(j=m)break;System.out.println(sum);in.close();2 念整數( 5 分)題目內容:你的程序要讀入一個整數,范圍是 -100000,100000 。然后,用漢語拼音將這個整數的每一位輸出出來。 如輸入 1234 ,則輸出:yi er san si注意,每個字的拼音之間有一個空格,但是最后的字后面沒有空格。當遇到負數時,在輸出的開頭加上“ fu”如-2341輸出為:fu er san si yi 輸入格式 : 一個整數,范圍是 -100000,100000 。輸

21、出格式:表示這個整數的每一位數字的漢語拼音,每一位數字的拼音之間以空格分隔,末尾沒有空格。 輸入樣例:-30輸出樣例:fu san ling程序代碼import java.util.Scanner;public class Main public static void main(String args) Scanner in=new Scanner(System.in);int n=in.nextInt();int count=0;int isZheng=0;int v=0;int total=n;int isZero=0;int isPut=1; if(n>=-100000&

22、&n<=100000)if(n<0)isZheng=1;n=-n;else if(n=0)System.out.print("ling");if(isZheng=1)System.out.print("fu"+" ");while(total!=0)total/=10;count+;for(int i=count;count>0;count-)int mid=1;for(int j=1;j<count;j+)mid*=10;if(isZero=1)System.out.print(" &quo

23、t;);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(&qu

24、ot;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 分)題目內容:一個多項

25、式可以表達為 x 的各次冪與系數乘積的和,比如:2x6+3x5+12x3+6x+20 現在,你的程序要讀入兩個多項式,然后輸出這兩個多項式的和,也就是把對應的冪上的系數相加然后輸 出。程序要處理的冪最大為 100 。輸入格式 :總共要輸入兩個多項式,每個多項式的輸入格式如下: 每行輸入兩個數字,第一個表示冪次,第二個表示該冪次的系數,所有的系數都是整數。第一行一定是最 高冪,最后一行一定是 0 次冪。注意第一行和最后一行之間不一定按照冪次降低順序排列;如果某個冪次的系數為0 ,就不出現在輸入數據中了; 0 次冪的系數為 0 時還是會出現在輸入數據中。輸出格式:從最高冪開始依次降到 0 冪,如:

26、0 則不需要有那項。2x6+3x5+12x3-6x+20注意其中的 x 是小寫字母 x ,而且所有的符號之間都沒有空格,如果某個冪的系數為 輸入樣例:6 25 33 121 60 206 25 32 121 60 20輸出樣例:4x6+6x5+12x3+12x2+12x+40程序代碼import java.util.Scanner;public class Mainpublic static void main (String args)Scanner in = new Scanner(System.in); int array = new int101;int max = 0;int tim

27、es = 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 < array.length;j+)if(arrayj != 0 )if(j > max)max = j;for(int i = max;i > 0; i-)if(arrayi > 0)if(i != max)System.out.print("+");if(arrayi != 1)S

28、ystem.out.print(arrayi);System.out.print("x");/ 冪次為 1 時不用輸出冪次if(i != 1)System.out.print(i);else if(arrayi < 0)if(arrayi != -1)System.out.print(arrayi);elseSystem.out.print("-");System.out.print("x");if(i != 1)System.out.print(i);if(max = 0)System.out.print(array0);el

29、se/ 最高冪 >0, 正系數先輸出 +if(array0 > 0)System.out.print("+");System.out.print(array0);第六周1 單詞長度( 5 分)題目內容:你的程序要讀入一行文本,其中以空格分隔為若干個單詞,以結. '束。你要輸出這行文本中每個單詞的長度。這里的單詞與語言無關,可以包括各種符號,比如“it's算一個單詞,長度為 4。注意,行中可能出現連續的空格。輸入格式 :輸入在一行中給出一行文本,以結.'束,結尾的句號不能計算在最后一個單詞的長度內。輸出格式: 在一行中輸出這行文本對應的單詞

30、的長度,每個長度之間以空格隔開,行末沒有最后的空格。輸入樣例:It's 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.

31、length()-1) if(text.length()>1)System.out.print(text.length()-1);elseSystem.out.print(text.length()+" ");while(true);2GPS 數據處理( 5 分)題目內容:NMEA-0183 協議是為了在不同的 GPS (全球定位系統)導航設備中建立統一的 BTCM (海事無線電技術 委員會)標準,由美國國家海洋電子協會(NMEA-The National Marine Electronics Associa-tion)制定的一套通訊協議。 GPS 接收機根據 NME

32、A-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

33、,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.

34、mmmm ,度分格式(前導位數不足則補 0)字段6 :經度E (東經)或 W (西經)字段 7:速度,節, Knots字段 8:方位角,度字段 9: UTC 日期, DDMMYY 格式字段 10:磁偏角, ( 000 - 180 )度(前導位數不足則補 0)字段11 :磁偏角方向,E=東W=西字段 16:校驗值這里, “*為”校驗和識別符,其后面的兩位數為校驗和,代表了“$和”“*之”間所有字符(不包括這兩個字符)的異或值的十六進制值。上面這條例句的校驗和是十六進制的50,也就是十進制的 80 。提示:A運算符的作用是異或。將 $和*之間所有的字符做人運算(第一個字符和第二個字符異或,結果再和

35、 第三個字符異或,依此類推 )之后的值對 65536 取余后的結果,應該和 *后面的兩個十六進制數字的值相 等,否則的話說明這條語句在傳輸中發生了錯誤。注意這個十六進制值中是會出現A-F 的大寫字母的。另外,如果你需要的話,可以用 Integer.parseInt(s) 從 String 變量 s 中得到其所表達的整數數字;而 Integer.parseInt(s, 16) 從 String 變量 s 中得到其所表達的十六進制數字 現在,你的程序要讀入一系列 GPS 輸出,其中包含 $GPRMC ,也包含其他語句。在數據的最后,有一行 單獨的END 表示數據的結束。你的程序要從中找出 $GPR

36、MC 語句,計算校驗和,找出其中校驗正確,并且字段 2 表示已定位的語句, 從中計算出時間,換算成北京時間。一次數據中會包含多條 $GPRMC 語句,以最后一條語句得到的北京 時間作為結果輸出。你的程序一定會讀到一條有效的 $GPRMC 語句。 輸入格式 :多條 GPS 語句,每條均以回車換行結束。最后一行是 END 三個大寫字母。 輸出格式:6 位數時間,表達為:hh:mm:ss其中, hh 是兩位數的小時,不足兩位時前面補0;mm 是兩位數的分鐘,不足兩位時前面補0;ss 是兩位數的秒,不足兩位時前面補 0。輸入樣例: $GPRMC,024813.640,A,3158.4608,N,118

37、48.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

38、(!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+) xoA=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(

39、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");elseSystem.out.print("0"+hh);if(mm>=10)

40、System.out.print(":"+mm);else if(mm=0)System.out.print(":00");elseSystem.out.print(":0"+mm);if(ss>=10)System.out.print(":"+ss);else if(ss=0)System.out.print(":00");elseSystem.out.print(":0"+ss);第七周1 分解質因數( 5 分)題目內容:每個非素數(合數)都可以寫成幾個素數(也可稱

41、為質數)相乘的形式,這幾個素數就都叫做這個合數的 質因數。比如, 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%pf>0&&pf<=Math.sqrt(m) pf=nextPrime(pf);return pf;public static void fenjie(int m) i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論