1. 程式人生 > >零基礎學Java語言(第三週程式設計題)

零基礎學Java語言(第三週程式設計題)

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(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int odd = 0;//奇數
        int even = 0;//偶數
        while(num != -1)
        {
        	if(num % 2 == 0)
        	{
        		even++;
        	}
        	else
        	{
        		odd++;
        	}
        	num = in.nextInt();
        }
        System.out.println(odd + " " +even);
       
	}

}

2數字特徵值(5分)

題目內容:

對數字求特徵值是常用的編碼演算法,奇偶特徵是一種簡單的特徵值。對於一個整數,從個位開始對每一位數字編號,個位是1號,十位是2號,以此類推。這個整數在第n位上的數字記作x,如果x和n的奇偶性相同,則記下一個1,否則記下一個0。按照整數的順序把對應位的表示奇偶性的0和1都記錄下來,就形成了一個二進位制數字。比如,對於342315,這個二進位制數字就是001101。

這裡的計算可以用下面的表格來表示:

數字

3

4

2

3

1

5

數位

6

5

4

3

2

1

數字奇偶

數位奇偶

奇偶一致

0

0

1

1

0

1

二進位制位值

32

16

8

4

2

1

按照二進位制位值將1的位的位值加起來就得到了結果13。

你的程式要讀入一個非負整數,整數的範圍是[0,100000],然後按照上述演算法計算出表示奇偶性的那個二進位制數字,輸出它對應的十進位制值。

提示:將整數從右向左分解,數位每次加1,而二進位制值每次乘2。

輸入格式:

一個非負整數,整數的範圍是[0,1000000]。

輸出格式:

一個整數,表示計算結果。

輸入樣例:

342315

輸出樣例:

13

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int n = 1;              //n位數
        int add = 0;            //累加的變數
        int i = 0;              //2^i
        while(num != 0)         //題目中的x即num % 10
        {
        	if((num % 10) % 2 !=0 && n % 2 !=0)         //若x與n均為奇數
        	{
        		add += (int)(Math.pow(2, i));       //add=add+x^i,這一句不知道你們能不能理解呢
        	}
        	else if((num % 10) % 2 % 10 ==0 && n % 2 ==0)
        	{
        		add += (int)(Math.pow(2, i));
        	}
        	i++;
        	n++;
        	num /= 10;
        }
        System.out.println(add);
	}

}