云课堂javaweb微专业Java基础测试题3

第3章编程题

1、奇偶个数(5分)

题目内容:

你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

 

输入格式:

一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。

 

输出格式:

两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。

 

输入样例:

9 3 4 2 5 7 -1 

 

输出样例:

4 2

时间限制:500ms内存限制:32000kb

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Scanner in = new Scanner(System.in);
 8         int inNum = in.nextInt();
 9         int oddNum=0;
10         int evenNum=0;
11         while(inNum != -1){
12             if(inNum%2==0){
13                 evenNum++;
14             }else{
15                 oddNum++;
16                 
17             }
18             inNum = in.nextInt();
19         }
20         System.out.println(oddNum+" "+evenNum);
21     }
22 }
奇偶个数
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,100000]。

 

输出格式:

一个整数,表示计算结果。

 

输入样例:

342315

 

输出样例:

13

时间限制:500ms内存限制:32000kb

/**
* 当不为0和1时,先算出该整数位数,之后从右到左依次对比每一位与其上的数字的奇偶,若相同则加2的(位数-1)次方
* */

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6         Scanner in = new Scanner(System.in);
 7         int inNum = in.nextInt();
 8         
 9         int tmpNum = 6;
10         int zNum=0;
11         int s = (int) Math.pow(10,tmpNum);
12         if(inNum==0){
13             System.out.println(0);
14         }else if(inNum==1){
15             System.out.println(1);
16         }else{
17             int tmpInNum = inNum;
18             while(tmpNum>0){
19                 if((inNum%s)!=inNum){
20                     break;
21                 }
22                 tmpNum--;
23                 s = (int) Math.pow(10,tmpNum);
24             }
25             int tmpNum2 =tmpNum+1;
26             int heightNum =0;
27             while(tmpNum>=0){
28                 s = (int) Math.pow(10,tmpNum);
29                 heightNum = tmpInNum/s;//最高位
30                 if( (heightNum%2==0 && tmpNum2%2==0) || (heightNum%2!=0 && tmpNum2%2 !=0) ){
31                     zNum += (int) Math.pow(2,tmpNum);
32                     
33                 }
34                 tmpInNum = tmpInNum-heightNum*s;
35                 tmpNum--;
36                 tmpNum2 =tmpNum+1;
37             }
38             System.out.println(zNum);
39         }
40     }
41     
42 }
数字特征值

 

 
3、素数和(5分)

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入格式:

两个整数,第一个表示n,第二个表示m。

 

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入样例:

2 4

 

输出样例:

15

时间限制:500ms内存限制:32000kb

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         int n,m=0;
 6         Scanner in = new Scanner(System.in);
 7         int []tmp={1,2};
 8         int inum=0;
 9     
10         while(inum<2){
11             tmp[inum] = in.nextInt();
12             inum++;
13         }
14         n = tmp[0];
15         m = tmp[1];
16         
17         int flag = 1;
18         int snum=0;
19 
20         int isYes = 0;
21         
22         for(int i=2;;i++){
23             isYes=1;
24             if(flag>m)break;
25             for(int j=2;j<i;j++){
26                 if( (i%j==0) &&(i!=2)){
27                     isYes=0;
28                     break;
29                 }
30             }
31             if(isYes==1){
32                 if(flag>=n){
33                     snum+=i;
34                 }
35                 flag++;
36             }
37                 
38         }
39         System.out.println(snum);
40         in.close();
41     }
42 }
素数和

 

 
4念整数(5分)

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

yi er san si

 

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi

 

输入格式:

一个整数,范围是[-100000,100000]。

 

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

 

输入样例:

-30

 

输出样例:

fu san ling

时间限制:500ms内存限制:32000kb

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner in = new Scanner(System.in);
 6         int num = in.nextInt();
 7         in.close();
 8         boolean isZheng = true;
 9         if(num<0){
10             isZheng = false;
11             num = 0 - num;
12         }
13 
14         int lowNum = 0;
15         int tmpNum = num;
16         StringBuffer str = new StringBuffer();
17         while((tmpNum/10)>=0){
18             lowNum = tmpNum%10;
19             tmpNum = tmpNum/10;
20 
21             switch (lowNum){
22                 case 0:
23                     str.insert(0, "ling ");
24                     break;
25                 case 1:
26                     str.insert(0, "yi ");
27                     break;
28                 case 2:
29                     str.insert(0, "er ");
30                     break;
31                 case 3:
32                     str.insert(0, "san ");
33                     break;
34                 case 4:
35                     str.insert(0, "si ");
36                     break;
37                 case 5:
38                     str.insert(0, "wu ");
39                     break;
40                 case 6:
41                     str.insert(0, "liu ");
42                     break;
43                 case 7:
44                     str.insert(0, "qi ");
45                     break;
46                 case 8:
47                     str.insert(0, "ba ");
48                     break;
49                 case 9:
50                     str.insert(0, "jiu ");
51                     break;
52                 
53             }
54             if(tmpNum==0){
55                 break;
56             }
57             
58         }
59         if(isZheng==false){
60             str.insert(0, "fu ");
61         }
62         System.out.println(str.toString().trim());
63         
64         
65     }
66 }
念整数

 

 

 

 
posted @ 2016-04-09 00:14  windcoder  阅读(1284)  评论(0编辑  收藏  举报