XTU-JAVA课后练习答案一

《面向对象程序设计(Java)》
实验报告

实验1: Java开发环境的部署和运行、Java运算符与控制结构

一、实验类型
验证性实验
二、实验目的
1、掌握jdk的安装和卸载;
2、学会配置j2sdk的运行环境;
3、熟练掌握Java小程序的运行过程

三、实验内容及步骤
一、j2sdk的安装和卸载
1、Java可以安装在多种不同的操作系统中,我们在学习过程中以windows为对象。
软硬件配置:
硬件:2G内存或者以上,50G硬盘空间或者以上软件:WindowsXP/7/8/10,或者以上2、免费的安装文件可以从Sun公司的主页上下载:Http:/Java.sun.com/
安装过程略
3、卸载JDK可以通过控制面板来实现
二、配置运行环境(假设安装目录为cAj2sdk1.8.3_01\bin)
在桌面“我的电脑”上右击,选择“属性”菜单,在高级选项卡中,配置“环境变量:
path为c:Aj2sdk1.8.3_01bin classpath为c:j2sdk1.8.3_01\bin进入DOS命令提示符状态,键入:Java、Javac回车,若出现帮助信息提示即为安装成功

第1题JDK和Eclipse的主要安装步骤
JDK和Eelipse安装成功,下图是Eelipse启动后的界面。

第2题(上机练习系统第3题 )
第3题 代码填空. 键盘输入Scanner(10分)

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

下列Java应用程序是用户从键盘输入个人信息,然后程序将个人信息输出。
请按程序实现要求,将下面程序的【代码】替换为Java程序代码。
文件Main.java
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner reader=new Scanner(System.in);
System.out.println(“输入姓名(回车确认):”);
String name=【代码1】 //从键盘为name赋值
System.out.println(“输入年龄(回车确认):”);
byte age=【代码2】 //从键盘为age赋值
System.out.println(“输入身高(回车确认):”);
float height=【代码3】 //从键盘为height赋值
System.out.println(“–基本信息–”);
System.out.println(“姓名:”+name);
System.out.println(“年龄:”+age);
System.out.println(“身高:”+height);
}

解答:
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner reader=new Scanner(System.in);
System.out.println(“输入姓名(回车确认):”);
String name=reader.nextLine(); //从键盘为name赋值
System.out.println(“输入年龄(回车确认):”);
byte age=reader.nextByte(); //从键盘为age赋值
System.out.println(“输入身高(回车确认):”);
float height=reader.nextFloat(); //从键盘为height赋值
System.out.println(“–基本信息–”);
System.out.println(“姓名:”+name);
System.out.println(“年龄:”+age);
System.out.println(“身高:”+height);
}
}
该题的运行结果界面如下:

第3题(上机练习系统第4题 )
第4题 编写程序,判断是否被3和8整除(10分)
编写程序实现,输入[100,2000]之间的整数,判断是否被3和8整除,如果能,则输出yes,否则输出no。
在输出时,你的程序必须满足要求,不能少任何内容,也不能多任何内容。如果你的内容和输出要求不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、标点符号、计时或者统计的信息等。

样例1:
输入
480
输出
yes

样例2:
输入
900
输出
no
解答:

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
		int a = scan.nextInt();
		if (a % 3 == 0 && a % 8 == 0)
		{
    
    
			System.out.println("yes");
		}
		else
		{
    
    
			System.out.println("no");
		}
	}

}

该题的运行结果界面如下:

第4题(上机练习系统第5题 )
第5题 输入程序:从键盘输入半径经判断后求圆的面积(10分)

Time Limit : 1.0 s Memory Limit : 32 MB

请输入如下程序:

该程序是从键盘输入圆的半径r,如果输入的r>0就计算圆的面积并输出;否则输出提示信息"圆的半径要大于0!"。

程序输入后,运行该程序,从键盘输入下面的“样例”数据检验程序的正确性。

样例1
从键盘输入圆的半径r为:
0.1
输出为:
0.031400000000000004
这里的最后一位数据是计算误差。

样例2
从键盘输入圆的半径r为:
2.1
输出为:
13.8474

样例3
从键盘输入圆的半径r为:
-9.1
输出为:
圆的半径要大于0!

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入代码;
  4. 提交代码,注意题号要一致。
    解答:

第5题(上机练习系统第8题 )
第8题 代码填空. 求四位回文数之和(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

下面程序是求四位回文数之和。例如1221是一个回文数,它从左边读和从右边读是一样的,下面求所有这样的四位十进制数之和。
请将下面程序的【代码】替换为Java程序代码,使程序运行正确。
文件Main.java
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=【代码1】;
for (int i = 1000; i【代码2】10000; i++) {
int k=i/1000;
int m=【代码3】;
int n=(i/10)%10;
int l=i%10;
if (kl&&mn) {
sum+=【代码4】;
}
}
【代码5】.out.println(sum);
}
}
解答:

public class Main {
    
    
	public static void main(String[] args) {
    
    
// TODO Auto-generated method stub
		int sum = 0; 
		for (int i = 1000; i < 10000; i++) {
    
     
			int k = i / 1000;
			int m = (i % 1000) / 100;
			int n = (i / 10) % 10;
			int l = i % 10;
			if (k == l && m == n) {
    
    
				sum += i; 
			}
		}
		System.out.println(sum);
	}
}
 

第6题(上机练习系统第9题 )
第9题 C语言程序修改为Java应用程序,Fibonacci数列前n+1项的积(10分)
下面是C语言程序,请修改为Java应用程序。运行时从键盘输入数据并输出结果进行检验。
功能:用函数求Fibonacci数列前n+1项的积。
说明:Fibonacci数列为数列的第一项值为1,第二项值也
为1,从第三项开始,每一项均为其前面相邻两项
的和。
输入格式
输入包括一个整数n,代表Fibonacci数列前n+1项。
输出格式
输出一行,包括一个整数,表示Fibonacci数列前n+1项之积。
样例输入
8
样例输出
131040

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 将上述代码改写为JAVA代码,并运行;
  4. 提交代码,注意题号要一致。

C代码如下:
#include <stdio.h>

long sum(int num, long f1,long f2)
{
long f,k=f1+f2;
int i;
for(i=3;i<=num;i++)
{f=f1+f2;
k=k*f;
f1=f2;
f2=f;
}
return(k);
}

main()
{
long int f1=1,f2=1;
int n;
scanf(“%d”,&n);
printf(“%ld\n”,sum(n,f1,f2));
}
解答:

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n = in.nextInt();
int i = 0;
int f1 =1;
int  f2 = 1;
int f;
int k=f1+f2;
for(i=3;i<=n;i++)
{
    
    
f=f1+f2;
k=k*f;
f1=f2;
f2=f;
}
System.out.println(k);
}
}

第7题(上机练习系统第11题 )
第11题 编程:从键盘输入n后求n/2+(n+1)/2+(n+2)/2+…+n*n/2(10分)
Time Limit : 1.0 s Memory Limit : 32 MB

下面程序是求1+2+…+100的值:
在这里插入图片描述

请在此程序的基础上,编写程序求n/2+(n+1)/2+(n+2)/2+…+n*n/2的和值,其中整数n从键盘输入,而且除法是整除。
说明:如果n=10,就是求10/2+11/2+12/2+…+100/2. 如果n=20,就是求20/2+21/2+22/2+…+400/2.
重要说明:按题目“从键盘输入n”的要求和下面的样例要求进行其它修改。
提示:(1) 注意修改1+2+…+100程序中的sum+=cnt,本题每次加的不是cnt,而是cnt/2。
(2) 注意修改1+2+…+100程序中的cnt=1,本题从n开始,就是说初值=n。

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入书上代码,并按上面要求修改;
  4. 运行程序, 从键盘输入下面的样例数据检验程序的正确性;
  5. 提交代码,注意题号要一致。s

样例1
从键盘输入1个整数:
10
输出为:
sum=2480

样例2
从键盘输入1个整数:
20
输出为:
sum=39910
解答:

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int sum  = 0;
		int cnt = in.nextInt();
		int k = cnt*cnt;
for(;cnt<=k;cnt++)
{
    
    
	sum+=cnt/2;
}

System.out.println(sum);
	}

}

第8题(上机练习系统第15题 )
第15题 编程:从键盘输入k和n后求k*(k+1)*…*n(10分)
Time Limit : 1.0 s Memory Limit : 32 MB

下面程序是求1+2+…+100的值:
public class Main {
public static void main(String[] args) {
int product=0;
for(int cnt=1;cnt<=100;cnt++)
{
sum+=cnt;
}
System.out.println(“sum=”+sum);
}
}

请在此程序的基础上,编写程序求k*(k+1)n的和值(n<=20),其中整数k和n从键盘输入(0<k<n)。
说明:如果k=10,n=15,就是求10
11
15. 如果k=2,n=5,就是求23*…*5.
重要说明:按题目“从键盘输入n”的要求和下面的样例要求进行其它修改。
提示:(1) 注意修改1+2+…+100程序中的cnt=1,本题从k开始,就是说初值=k。
(2) 注意从键盘输入k的语句是int k=in.nextInt();

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入代码,并按上面要求修改;
  4. 运行程序, 从键盘输入下面的样例数据检验程序的正确性;
  5. 提交代码,注意题号要一致。

输入格式
输入2个整数(k和n)。
输出格式
输出“product=”和一个整数。

样例1输入:
1
10
样例1输出:
product=3628800

样例2输入:
10
15
样例2输出:
product=3603600
解答:

import java.util.Scanner;

public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int sum  =1;
		int k= in.nextInt();
		int n = in.nextInt();
for(;k<=n;k++)
{
    
    
	sum*=k;
}

System.out.println(sum);
	}

}

第9题(上机练习系统第18题 )

第18题 编程序求[200,M]上的所有闰年之和(10分)

请编程序求[200,M]中的所有闰年之和。
其中200<M<1000。
由历法可知,4年设一闰,但每100年少一个闰年,即能被4整除但不能被100整除的年份为闰年;每400年又增加一个闰年,即能被400整除的年份也为闰年。

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入代码并运行;
  4. 提交代码,注意题号要一致。

输入格式
输入1个整数M。
输出格式
[200,M]中的所有闰年之和。

样例1输入:
208
样例1输出:
412

import java.util.Scanner;
public class di18ti {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt();
	int sum = 0;
	for(int i = 200;i<=n;i++)
	{
    
    
	if((i%100!=0&&i%4==0)||i%400==0)
	{
    
    
			sum+=i;
	}
	}
	System.out.println(sum);
	}

}

第10题(上机练习系统第19题 )
第19题 编程:求n个实数中的最大数(10分)

请编写程序:输入n个实数(double型),求这n个实数中的最大数,然后输出该数.

输入格式
n
n个用空格分隔开的实数。
输出格式
输出一个实数。

样例输入
4
2.9 20 8.1 9.4
样例输出
20.0

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入代码并运行;
  4. 提交代码,注意题号要一致。
    解答:
import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);

int n = scan.nextInt();
double l = scan.nextDouble();
for(int i = 1;i<n;i++)
{
    
    
	l = Math.max(l, scan.nextDouble());
}
	System.out.println(l);
}

}

第11题(上机练习系统第21题 )
第21题 C语言程序改为Java程序,判断一个三位数是否"次水仙花数"(10分)
下面是C语言程序,请修改为Java应用程序。运行时输出一些数据检验,并将结果写入结果文件。
/*------------------------------------------------
功能:调用函数fun判断一个三位数是否"次水仙花数"。
在main函数中从键盘输入一个三位数,并输
出判断结果。请编写fun函数。
说明:所谓"次水仙花数"是指一3位数,其各位数字立方和,
加上各位数字之和,等于该数本身。
例如:870是一个次水仙花数,因为870=83+73+0^3+8+7+0。

------------------------------------------------*/

int fun(int n)
{

int bw,sw,gw;
bw=n/100;sw=(n-bw100)/10;gw=n%10;
if(n==+(bw+sw+gw)+bw
bwbw+swswsw+gwgw*gw) return 1;
else return 0;

}

main()
{
int n,flag;
scanf(“%d”,&n);
flag=fun(n);
if(flag)
printf(“yes\n”);
else
printf(“no\n”);
}

样例1:
输入
870
输出
yes

样例2:
输入
110
输出
no
解答:

import java.util.Scanner;
// TODO Auto-generated method stub
public class di21ti {
    
    
	public static int fun(int n)
	 {
    
     
	   int a=n/100,b=(n-a*100)/10,c=n%10;
	   int sum = (a+b+c)+a*a*a+b*b*b+c*c*c;
	  if(n==sum) 
		  return 1;
	  else 
		  return 0;
	 }
	  
public static void main(String[] args) {
    
    
	// TODO Auto-generated method stub
{
    
    
	   Scanner scan=new Scanner(System.in);
	   int n,flag;
	   n=scan.nextInt();
	   flag=fun(n);
	   if(flag!=0)
	System.out.println("yes");
	   else
	System.out.println("no");
	 }
 }
}

第12题(上机练习系统第22题 )
第22题 编写程序:斐波那契图形(10分)
编写一个求斐波那契数列的递归函数,输入n值,使用该递归函数,输出如样例输出的斐波那契数列。
输入:
一个整型数n
输出:
题目可能有多组不同的测试数据,对于每组输入数据,
按题目的要求输出相应的斐波那契图形。
注意输出换行前不能有多余的空格。
样例输入:

6

样例输出:

0
0 1 1
0 1 1 2 3
0 1 1 2 3 5 8
0 1 1 2 3 5 8 13 21
0 1 1 2 3 5 8 13 21 34 55
解答:

import java.util.Scanner;
public class Main{
    
    
//递归方法求斐波那契数列
	public static int fun(int n)
	{
    
    
	  if(n==1) 
		  return 0;
	  if(n==2)
		  return 1;
	  else
		  return fun(n-2)+fun(n-1);
	}
	public static void main(String[] args) {
    
    
		  Scanner s=new Scanner(System.in);
		  while(s.hasNext()) {
    
    
			  int n=s.nextInt();
			  for(int i=1;i<=n;i++){
    
    
				  for(int j=1;j<=2*i-1;j++){
    
    
					  if(j!=2*i-1)
						  System.out.print(fun(j)+" ");
					  if(j==2*i-1)
						  System.out.println(fun(j));
				  }
			  }
		  }
	}
}
 

第13题(上机练习系统第23题 )
问题描述:
编写程序求1/1+1/3+…+1/(2n+1)的和值,其中整数n从键盘输入(0=<n<1000)。

输入格式
整数n
输出格式
1/1+1/3+…+1/(2n+1)的和值

样例输入
1
2
样例输出
Sum is 1.3333333333333333
Sum is 1.5333333333333332

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 输入代码并运行;
  4. 提交代码,注意题号要一致。
    解答:
import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		  Scanner s=new Scanner(System.in);
		  while(s.hasNext()) {
    
    
			  int n=s.nextInt();
			  double sum=0;
			  for(int i=1;i<=2*n+1;i=i+2){
    
    
				  sum+=1.0/i;
			  }
			  System.out.println("Sum is "+sum);
		  }
		 
	}
}
 

第14题(上机练习系统第24题 )
第24题 编写部分程序,求平方和立方(10分)
下面编写程序实现求一个数的平方和立方,已经有部分代码,将补充示完成的代码。

import java.util.*;
public class Main {
    
    
  public static void main(String[] args) {
    
    
    Scanner in=new Scanner(System.in);
    int t=in.nextInt();
    int z=f(t);//类内调用方法f
    System.out.println(z);
    double w=f1(t);
    System.out.println(w);
  }
//y=f(x)=x*x 整数x(叫形参)
  private static int f(int x){
    
    
//========此处添加代码=========



//========添加代码结束=========
    return y;
  }
//y=f1(x)=x*x*x 整数x
  public static double f1(double x){
    
    
    return x*x*x; //返回表达式的值
  }
}

注意,已经有的代码不能修改或者删除。在输出时,你的程序必须满足要求,不能少任何内容,也不能多任何内容。如果你的内容和输出要求不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、标点符号、计时或者统计的信息等。

样例1:
输入
3
输出
9
27.0
解答:

import java.util.*;
public class Main {
    
    
  public static void main(String[] args) {
    
    
    Scanner in=new Scanner(System.in);
    int t=in.nextInt();
    int z=f(t);//类内调用方法f
    System.out.println(z);
    double w=f1(t);
    System.out.println(w);
  }
//y=f(x)=x*x 整数x(叫形参)
  private static int f(int x){
    
    
//========此处添加代码=========
int y=x*x;


//========添加代码结束=========
    return y; 
  }
//y=f1(x)=x*x*x 整数x
  public static double f1(double x){
    
    
    return x*x*x; //返回表达式的值
  }
}

第15题(上机练习系统第25题 )

第25题 编写部分程序,求球的体积(10分)
下面编写程序实现求半径为r的球体积,已经有部分代码,将补充未完成的代码。

import java.util.*;
public class Main {
    
    
  public static void main(String[] args) {
    
    
    Scanner in=new Scanner(System.in);
    double t=in.nextDouble();
    double z=f(t);//类内调用方法f
    System.out.println(z);
  }
//球体积y=f(r) 实数r(叫形参)
  private static double f(double r){
    
    
//========此处添加代码=========



//========添加代码结束=========
    return y;
  }
}

注意,已经有的代码不能修改或者删除。在输出时,你的程序必须满足要求,不能少任何内容,也不能多任何内容。如果你的内容和输出要求不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、标点符号、计时或者统计的信息等。
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 复制上述代码,并输入未完成的部分代码,然后运行;
  4. 提交代码,注意题号要一致。

样例1:
输入
2.2
输出
44.57962666666668
解答:

import java.util.*;
public class di25ti {
    
    
  public static void main(String[] args) {
    
    
    Scanner in=new Scanner(System.in);
    double t=in.nextDouble();
    double z=f(t);//类内调用方法f
    System.out.println(z);
  }
//球体积y=f(r) 实数r(叫形参)
  private static double f(double r){
    
    
//========此处添加代码=========
double y=4/3.0*r*r*r*3.14;


//========添加代码结束=========
    return y; 
  }
}

 

第16题(上机练习系统第26题 )
第26题 程序改错题,500以内最大的10个能被3整除的自然数之和(10分)
问题描述:
题目:计算并输出500以内最大的10个能被3整除的自然数之和
下列程序无法正确运行,请修改错误的代码,错误代码在FOUND标注的下一行,使其能得到正确结果。
请只修改错误代码,不要修改程序逻辑,否则记为0分。
注意:修改的字符个数要求最少,例如变量n增加1 ,则n++为正确答案,而n=n+1则不给分。

public class Main
{
    
    
  public static void main(String args[])
   {
    
    
     int k,s=0,mc=0;
    /***********FOUND***********/
     for (k=500;k>0;k++)
      {
    
    
       if (k%3 == 0)
        {
    
    
   /***********FOUND***********/
          s=k;
          mc++;
        }
    /***********FOUND***********/
       if (mc=10)
         break;
     }
   System.out.println("Sum is "+s);
  }
}
public class Main
{
    
    
  public static void di26ti(String args[])
   {
    
    
     int k,s=0,mc=0;
    /***********FOUND***********/
     for (k=500;k>0;k--) 
      {
    
    
       if (k%3 == 0)
        {
    
     
   /***********FOUND***********/
          s+=k;
          mc++; 
        }
    /***********FOUND***********/
       if (mc==10)
         break; 
     }
   System.out.println("Sum is "+s);
  }
}
 

第17题(上机练习系统第29题 )

第29题 编写程序输出对称平方数(10分)

题目描述:
打印所有不超过n(0<=n<256)的,其平方具有对称性质的数。
如11*11=121
输入:
无任何输入数据
输出:
输出具有题目要求的性质的数。如果输出数据不止一个,各个数据之间以回车隔开。

public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		int n = 0,m = 0;
		int[] cc = new int[200];
		for (int i = 0;i<4;i++)
		{
    
    
			cc[m]=i;
			m++;
		}
		for(int i = 4;i<=256;i++)
		{
    
    
			String s = String.valueOf(i*i);
			char [] c = s.toCharArray();
			int x,y;
			for(x = 0,y = c.length-1;x<c.length/2;x++,y--)
			{
    
    
				if(c[x]!=c[y])
					break;
			}
			if(x>=c.length/2)
			{
    
    
				cc[m]=i;
				m++;
			}
		}
		for(int i = 0;i<m-1;i++)
		{
    
    
			System.out.println(cc[i]);
		}
		System.out.print(cc[m-1]);
	}

}

第18题(上机练习系统第30题 )

第30题 编写程序:递推数列(10分)

题目描述:
给定a0,a1,以及an=pa(n-1) + qa(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。
本题是多样例数据。
输入:
每组输入包括5个整数:a0、a1、p、q、k。
输出:
第k个数a(k)对10000的模。
样例输入:
20 1 1 14 5
样例输出:
8359

解答:

import java.util.Scanner;

public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner in = new Scanner(System.in);
		while(in.hasNext())
		{
    
    
			int a[] = new int [100000];
			a[0] = in.nextInt();
			a[1] = in.nextInt();
			int p = in.nextInt();
			int q = in.nextInt();
			int k = in.nextInt();
			for(int i = 2;i<=k;i++)
			{
    
    
				a[i] = a[i-1]*p+a[i-2]*q;
				a[i]%=10000;
			}
			System.out.println(a[k]);
		 }	
		in.close();
	}
}
 

第19题(上机练习系统第31题 )
第31题 编写程序求各位数字之和(10分)
题目描述:
对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和。
输入:
每行输入数据包括一个正整数n(0<n<40000),如果n=0 表示输入结束,并不用计算。
输出:
对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和,输出在一行中,之间用一个空格分隔,但行末不要有空格。
样例输入:
4
12
97
39999
0
样例输出:
4 7
3 9
16 22
39 36
解答:

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
	
		Scanner scan=new Scanner(System.in);//创建一个键盘扫描类对象
		while(scan.hasNext()) {
    
    
		int n=scan.nextInt();
		if(n==0)
			break;
		int m=n*n;int sum = 0;int sun= 0;
		
		while(n>10)
		{
    
    
			sum+=(n%10);
			n/=10;
		}
		sum+=n;
		while(m>10)
		{
    
    
			sun+=(m%10);
			
			m/=10;
		}
		sun+=m;
		System.out.print(sum);
		System.out.print(" ");
		System.out.println(sun);
	}
	}
}
 

第20题(上机练习系统第34题 )

第34题 编程题:求n个整数的平均值(10分)

给出n个整数,找出这n个数的平均值。

将有多组数据,组数预先未知。

输入格式
每组数据第一行为整数n,表示数的个数。
每组数据第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式
每组数据输出一行,表示n个整数的平均值(有小数)
样例输入
5
1 3 -2 4 5
3
1 2 4
样例输出
2.2
2.3333333333333335

数据规模与约定
1 <= n <= 10000。

说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。
在输出时,你的程序必须满足要求,不能少任何内容,也不能多任何内容。如果你的内容和输出要求不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、标点符号、计时或者统计的信息等。
所有这些样例都测试通过,也不代表你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。

此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 编写代码并运行;
  4. 提交代码,注意题号要一致。
import java.util.Scanner;

public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

			Scanner scan=new Scanner(System.in);//创建一个键盘扫描类对象
			while(scan.hasNext()) {
    
    
			int n = scan.nextInt();int i;
			double sum=0.0;
			for(i=1;i<=n;i++) {
    
    
				sum+=scan.nextInt();
			}
			sum/=n;
			System.out.println(sum);
			}
		
	}

}

猜你喜欢

转载自blog.csdn.net/xuanyulevel6/article/details/126068092