7-1 Sum of the digits (10 分)
Given a none-negative number, print out the sum of its digits.
Input Format:
A none-negative integer number.
Output Format:
The sum of its all digits.
Sample Input:
123
Sample Output:
6
源代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int sum=0;
while(n>0){
sum+=(n%10);
n=n/10;
}
System.out.println(sum);
}
}
**
7-2 累加器 (10 分)
**
请你实现一个累加器。输入n个非负整数,输出他们的和。 1<n<1000,而每个数则<10000。
输入格式:
输入包括两行。 第一行:包括一个整数n,表示总共有n个数。 第二行:包含n个整数。
输出格式:
输出n个数的和。
输入样例:
4
3 2 1 4
输出样例:
10
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int a[]=new int[n];
int sum = 0;
for(int i = 0;i<n;i++){
a[i]= sc.nextInt();
sum=sum+a[i];
}
System.out.println(sum);
}
}
**
7-3 jmu-java-m02-循环求和 (10 分)
**
输入一组数,将其中的奇数、偶数分别求和并输出
输入格式:
输入n,然后输入n个整数
输出格式:
奇数和=x, 偶数和=y
其中x,y分别代表奇数和与偶数和。逗号(,)后面有一个空格。
输入样例:
10
1 2 1 1 1 2 1 2 2 2
输出样例:
奇数和=5, 偶数和=10
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int a[]=new int[n];
int sum1 = 0;
int sum2 = 0;
for(int i = 0;i<n;i++){
a[i]= sc.nextInt();
if(a[i]%2!=0){
sum1=sum1+a[i];
}
else sum2=sum2+a[i];
}
System.out.println("奇数和="+sum1+", 偶数和="+sum2);
}
}
**
7-4 JAVA-水仙花数 (20 分)
**
水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数。
输入格式:
输入一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
153
370
371
407
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
long num = (int) Math.pow(10,n-1);
if(n==7) {
//不用写
}
else {
for(long i = num;i<10*num;i++){
long sum = 0;
long x= 0;
long t = i;
while (t>0){
x = t%10;
t = t/10;
sum += Math.pow(x,n);
}
if(i == sum){
System.out.println(i);
}
}
}
}
}
**
5 我是升旗手 (10 分)
**
一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因 为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学 一样高,则选任意一位)。你能很快地给老师答案么?
输入格式:
输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。
输出格式:
输出身高最高的同学的身高。
输入样例:
4
130 125 129 140
输出样例:
140
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int a[]=new int[n];
for(int i = 0;i<n;i++){
a[i]= sc.nextInt();
}
int max=a[0];
for(int i = 1;i<n;i++){
if(max<a[i]){
max=a[i];
}
}
System.out.println(max);
}
}
**
7-7 369寝室 (15 分)
**
369寝室是比较特殊的寝室,因为别的寝室都住了四个人,而369寝室只有三个人。也因为这个原因,寝室里的三位同学感情特别好。但是,毕业在即,三位小伙伴马上要分别。为了在未来的某个日子可以见面,三位小伙伴有了一个约定,假设在未来的某一年,三位小伙伴的年龄的末尾正好出现3、6、9三个数,那么他们会再次相聚。
现在问题来了,假设今年三位小伙伴的年龄分别是x,y,z,那么,他们三人最早几年后可以相聚呢?
输入格式:
输入数据包括三个整数x,y,z,分别表示三位伙伴的年龄。
输出格式:
如果小伙伴最早在n年后可以相见(不包括当前这一年),那么请输出这个n;如果100年内都不存在这样的情况,输出:so sad!
输入样例:
25 22 28
输出样例:
1
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int x = sc.nextInt();
int y = sc.nextInt();
int z = sc.nextInt();
int flag = 0;
for(int i = 1;i<=100;i++){
int X = i+x,Y = i+y,Z = i+z;
X%=10;
Y%=10;
Z%=10;
if(X==0||Y==0||Z==0) continue;
if(X%3==0&&Y%3==0&&Z%3==0){
if(X!=Y&&Y!=Z&&Z!=X){
flag=i;
break;
}
}
}
if(flag==0){
System.out.println("so sad!");
}
else System.out.println(flag);
}
}
**
7-8 上三角数字三角形 (10 分)
**
输入一个正整数n,输出具有n层的上三角数字三角形。
输入格式:
只有一个正整数n,1<=n<=100。
输出格式:
一个上三角数字三角形,每个数字占四个字符位置。
输入样例:
5
输出样例:
1 2 3 4 5
6 7 8 9
10 11 12
13 14
15
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int flag = 1;
for(int i = n;i>=1;i--){
for(int j = 1;j<=i;j++){
System.out.printf("%4d",flag);
flag++;
}
System.out.println();
}
}
}
**
7-9 二进制的前导的零 (15 分)
**
计算机内部用二进制来表达所有的值。一个十进制的数字,比如24,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。
现在,你的任务是写一个程序,输入一个整数,输出在32位表达下它前导的零的个数。
输入格式:
一个整数,在32位的整数可以表达的范围内。
输出格式:
一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。
输入样例:
256
输出样例:
23
源代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int i = 1;
if (n == 0) {
System.out.println(32);
}
else if (n > 0 && n <= Math.pow(2, 32)) {
while (n > 1) {
n = n / 2;
i++;
}
System.out.println(32 - i);
}
else {
System.out.println(0);
}
}
}