输入相邻的4个正整数,计算这4个正整数,能组成多少个互不相同且无重复数字的三位数,并将结果输出。
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入四个连续的整数");
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
int num4 = scanner.nextInt();
if (num1+1 != num2){
System.out.println("必须输入四个连续的整数");}
else if (num2 +1 != num3){
System.out.println("必须输入四个连续的整数");}
else if (num3 +1 != num4){
System.out.println("必须输入四个连续的整数");}
else {
int count=0;
for(int i=num1;i<=num4;i++)
{
for(int j=num1;j<=num4;j++)
{
for(int k=num1;k<=num4;k++)
{
if(i!=j && j!=k && k!=i)
{
count++;
}
}
}
}
System.out.println(count);
}
}
public class TestShu1 {
private static int[] a={4, 2, 3, 9};//定义任意四个数字数组
private static int num=0;//一个组成三位数个数
private static int hunNum=0;//组成的三位数
//bai-百位, shi-十位, ge-个位
public static int getHuNum(int bai, int shi, int ge){
return 100*bai+10*shi+1*ge;
}
public static void main(String[] args){
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
for(int m=0; m<4; m++){
if(a[i]!=a[j]&&a[j]!=a[m]&&a[m]!=a[i]){
hunNum=getHuNum(a[i], a[j],a[m]);
num++;
System.out.println(hunNum);
}
}
}
}
System.out.println("一共组成三位数: "+num+"个");
}
输入一个不多于五位的正整数 num
,并输出其位数,每一位的数字,以及逆序排列的每位数字。
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
int sum = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入不多于五位数的正整数:");
int n = input.nextInt();
String s = "" + n;
System.out.println("它是"+s.length()+"位数");
System.out.println(s);
char a[] = s.toCharArray();
char a2[] = new char[a.length];
for(int i = 0;i<a.length;i++){
char b = a[a.length-i-1];
a2[i] = b;
System.out.print(a2[i]);
}
}
}
杨辉三角,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。其中前10
行样式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
编写程序,通过二维数组的方式输出杨辉三角的前9
行。
public class Program {
public static void main(String[] args) {
//定义了一个长度为10,高度为10的二维数组,数组中的值都为0;
int[][] arr=new int[10][10];
for(int i=0;i<arr.length; i++) {
//由于只是给杨辉三角内的位置赋值,所以是j<=i
for(int j=0;j<=i;j++) {
//根据规律,使用if else 赋值
if(j==0||j==i) {
arr[i][j]=1;
}else {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
/*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出
"\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等
*/
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
编程题
假设要在程序中描述一点,可以定义一个点类(Point)。
题目要求
定义点类(Point),内容如下:
属性:点的横坐标 x
和纵坐标 y
,其中 x
和y
都是整数,均为public。
方法:distance()
表示该点到坐标原点的距离,返回类型double。
注:点到坐标原点的距离计算公式为:Math.sqrt(x*x+y*y)
本题考查面向对象相关知识,调试需要自己定义Main方法进行调试,方可运行,判题不做要求
class PointT{
public double x,y;
public PointT(){
}
public PointT(int x,int y){
this.x = x;
this.y = y;
}
public double distance(){
double d = Math.sqrt(x*x+y*y);
return d;
}
}
public class Point{
public static void main(String[] args){
PointT a =new PointT(3,4);
System.out.println(a.distance());
}
}
public class TriangleT{
public double s1,s2,s3;
public Triangle(double s1,double s2,double s3){
this.s1 = s1;
this.s2 = s2;
this.s3 = s3;
}
public double getPerimeter(){
return s1+s2+s3;
}
public String getType(){
if(s1==s2&&s1==s3&&s2==s3)
return equilateral;
else if((s1==s2)||(s1==s3)||(s2==s3)){
return isosceles;
}
else
return scalene;
}
}
public class Triangle{
public static void main(String[] args){
public double s1,s2,s3;
public double v1,v2,v3;
s1 = Point.sideS1(v1,v2);
s2 = sideS2(v1,v3);
s3 = sideS3(v2,v3);
TriangleT b =new TriangleT();
System.out.println();
}
「质数」又称素数,有无限个。素数定义为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数称为素数。
例如17
就是素数,因为它不能被2 - 16
的任一整数整除。
请编写一个程序,输入一个正整数,计算该正整数以内的素数之和
import java.util.Scanner;
public class Program{
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int sum = 0;
int k;
for(int i=2;i<=num;i++){
k=0;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
k++;
}
}
if(k==0){
sum +=i;
}
}
System.out.println(sum);
}
}
输入一个正整数N,通过循环语句,打印一个2*N-1行的三角形
示例
输入
4
输出
*
***
*****
*******
*****
***
*
注意: 左侧始终没有空格
import java.util.*;
public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// 先输出前n行
for(int i=0;i<=N-1;i++){
for(int j=0;j<2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
// 输出余下的n-1行
for(int i=N-1;i>=1;i--){
for(int j=0;j<2*i-1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
编程题
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?
请用程序完成百钱百鸡问题的计算,并将计算结果输出。
输出示例:
公鸡=1 母鸡=1 小鸡=1
public class Program {
public static void main(String[] args) {
for(int cock=0;cock<=20;cock++){
for(int hen=0;hen<=33;hen++){
if(cock*5+hen*3+(100-cock-hen)/3==100&&(100-cock-hen)%3==0)
System.out.println("公鸡="+cock+"母鸡="+hen+"小鸡="+(100-cock-hen));
}
}
}
}
编程题
如果一个数的真因子之和等于其本身, 这个数就称之为"完数". 例如:6
的真因子为1, 2, 3
, 而且1 + 2 + 3 = 6
, 因此6
是"完数".
请用程序实现: 输入一个整数num
,找出2(含) ~ num(含)
中的所有完数,并输出。
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int sum;
for(int i=2;i<=num;i++){
sum=0;
for(int j=1;j<i;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
System.out.println(i);
}
}
}
}
定义一个长度为7的数组;
输入7位含有重复数字的整数作为数组的值;
请将重复元素(包括0)删除,并输出更新后数组中的元素。
例如: 数组{1, 2, 2, 3, 4, 5},更新后为 {1, 2, 3, 4, 5}
import java.util.*;
public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int []num = new int[7];
for(int i=0;i<7;i++){
num[i] = sc.nextInt();
}
for(int i=0;i<7;i++){
for(int j=0;j<7;j++){
if(num[i]==num[j]&&i!=j){
//切记不要让元素比较自身 不然均为0
num[j]=0;
}
}
}
for(int i=0;i<7;i++){
if(num[i]!=0)
{System.out.println(num[i]);}
}
}
}
定义一个长度为9的数组;
输入9个数字,进行冒泡排序, 使其按照从小到大的顺序排列, 并将排列后的结果输出。
import java.util.*;
public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int []num = new int [9];
for(int i=0;i<9;i++){
num[i] = sc.nextInt();
}
for(int i=0;i<num.length;i++){
for(int j=0;j<num.length-1-i;j++){
if(num[j+1]<num[j]){
int t = num[j+1];
num[j+1] = num[j];
num[j] = t;
}
}
}
for(int a:num){
System.out.print(a+" ");
}
}
}
定义圆类Circle,内容如下(需要完成):
属性:
圆心(center) ,Point类型,修饰符public。
半径(radius),double类型,修饰符public。
方法:
getArea(),获取圆的面积,修饰符public,返回值类型double。
point_in_circle(Circle circle,Point point),参数为一个圆类对象和一个点类对象,然后判断该点是否在圆内,在圆内则返回 True ,不在圆内则返回 False,修饰符public,返回值类型Boolean。
Math.abs(x) 链接讲解 https://blog.csdn.net/xmc281141947/article/details/56017147
Circle.java
public class Circle{
public Point center;
public double radius;
public double getArea(){
return radius*radius*Math.PI;
}
public boolean point_in_circle(Circle circle,Point point){
// 根据该点与圆心之间距离与半径的比较来确定该点是否在圆内 Math.abs(x)=|x| 绝对值
double l = Math.sqrt(Math.abs((circle.center.x-point.x)*(circle.center.x-point.x)+(circle.center.y-point.y)*(circle.center.y-point.y)));
if(l<=radius){
return true;
}
else{
return false;
}
}
public static void main(String[] args){
Circle obj = new Circle();
obj.radius = 5;
obj.center = new Point();
obj.center.x = 5;
obj.center.y = 5;
Point point = new Point();
point.x = 1;
point.y = 1;
System.out.println(obj.getArea());
System.out.println(obj.point_in_circle(obj,point));
}
}
Point.java
public class Point {
int x;
int y;
public double distance(){
return Math.sqrt(x*x+y*y);
}
}
如下面类图所示,设计了一个名为 Account 的类,该类为银行帐户建模。
存款:xxx,余额:xxx
,(余额四舍五入到小数点后两位)。取款:xxx,余额:xxx
,(余额四舍五入到小数点后两位)。请编写Account类,及测试驱动程序,以测试所有public方法。
注:练习已预置了Customer类,可以直接使用
String.format()的详细用法 https://blog.csdn.net/anita9999/article/details/82346552
Account.java
public class Account{
int id;
Customer custom = new Customer();
double balance;
//public Account(){}
/*public Account(int id,Customer custom,double balance){
this.id = id;
this.custom = custom;
this.balance = balance;
}*/
public String toString(){
return custom.name+"("+id+")"+",Balance=$"+String.format("%.2f",balance);
}
public String getCustomName(){
return custom.name;
}
public String deposit(double a){
balance += a;
return "存款:"+a+",余额:"+String.format("%2.f",balance);
}
public String withdraw(double b){
balance -= b;
return "取款:"+b+",余额:"+String.format("%2.f",balance);
}
public static void main(String[] args){
Account obj = new Account();
obj.id = 1;
obj.custom.name = "张三";
obj.balance = 500.354;
System.out.println(obj.toString());
System.out.println(obj.getCustomName());
System.out.println(obj.deposit(20.00));
System.out.println(obj.withdraw(10.00));
}
}
Customer.java
public class Customer {
public int id;
public String name;
public char gender;
public String toString(){
return "Customer[id="+id+",name="+name+",gender="+gender+"]";
}
public static void main(String[] args) {
Customer obj = new Customer();
obj.id = 1;
obj.name = "张三";
obj.gender = 'm';
System.out.println(obj.toString());
}
}
编程题
下面类图定义了两个接口: GeometricObject
可以计算几何对象的周长与面积,另一个 Resizable
以指定的百分比修改尺寸重置几何图形的大小。
请编写接口及其两个实现类。
public interface GeometricObject{
public double getPerimeter();
public double getArea();
}
public class Circle implements GeometricObject{
double radius = 1.0;
public Circle(double radius){
this.radius = radius;
}
@Override
public double getPerimeter() {
return radius*Math.PI*2;
}
@Override
public double getArea() {
return radius*radius*Math.PI;
}
}
public interface Resizable {
public double resize(int percent);
}
public class ResizableCircle extends Circle implements Resizable {
public ResizableCircle(double radius) {
super(radius);
}
@Override
public double resize(int percent) {
return (percent*getArea())/100;
}
}
public class Test extends ResizableCircle{
public Test(double radius) {
super(radius);
}
public static void main(String[] args) {
double radius = 3.0;
Test t = new Test(radius);
System.out.println("圆的面积为:"+t.getArea());
System.out.println("圆的周长为:"+t.getPerimeter());
System.out.println("圆修改后的尺寸为:"+t.resize(50));
}
}