public static void main(String[] args) {
System.out.println("请输入你的分数:");
Scanner scanner=new Scanner(System.in);
int input=scanner.nextInt();//获取输入
//等级判断
String belong=input>=90?"A":(input>=60?"B":"c");
System.out.println(input+"分属于:"+belong);
scanner.close();
}
}
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
*这里有一个知识点要记住的,最大公约数和最小公倍数的求法
*1、先求最大公约数bigDivisor
*2、就可以很方便获得最小公倍数multiple=input1*input2/bigDIvisor
*这里最重要的就是求最大公约数:求法如下
*(1)用大的数对小的数求余
*(2)把小的数赋值给大的数,把求余获得的结果赋值给小的数,
*(3)循环上一步的操作,直到求余的结果为零
*(4)上一步被求余的数就是我们要的最大公约数,不信的话,你可以动手试试
public class Programme6 {
public static void main(String[] args) {
int bigDivisor=0;//定义最大公约数
int multiple=0;//定义最小公倍数
System.out.println("请输入两个整数:");
Scanner scanner = new Scanner(System.in);
int input1 = scanner.nextInt();//获取第一个数
int input2 = scanner.nextInt();//获取第二个数
multiple=input1*input2;//这个值保存,求公约数后,方便求得最小公倍数
int temp =1;// 交换用的中间数
if (input2 >input1) {//确保第一个数不小于第二个数
temp=input1;
input1=input2;
input2=temp;
}
public class Programme12 {
public static void main(String[] args) {
System.out.println("请输入你创造的利润(单位:万元):");
Scanner scanner=new Scanner(System.in);
while (!scanner.hasNextDouble()) {
System.out.println("请输入金额数字:");
scanner.next();
}
doubleprofit=scanner.nextDouble();
doublebonus=0;
if (profit<=10) {
bonus=profit*0.1;
}else if(profit<=20){
bonus=(profit-10)*0.075+1;
}else if (profit<=40 ) {
bonus=(profit-10)*0.05+1.75;
}else if (profit<=60 ) {
bonus=(profit-10)*0.03+2.75;
}else if (profit<=100 ) {
bonus=(profit-10)*0.015+3.35;
}else {
bonus=(profit-100)*0.01+3.95;
}
System.out.println(profit+"万元利润,可以获得:"+bonus+"万元");
scanner.close();
}
}
【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,
用for循环判断:先将该数加上100后再开方,再将该数加上268后再开方,
如果开方后的结果再平方后分别和i+100,i+268相等,即是结果。
public class Prog13{
public class Programme13 {
public static void main(String[] args) {
for (inti = 0; i <10000;i++) {
intnum1=(int)Math.sqrt(i+100);//开方,值已固定了
intnum2=(int)Math.sqrt(i+268);
if ((num1*num1==(i+100))&&(num2*num2==(i+268))) {//符合条件的打印出来
System.out.println(i+" ");
}
}
}
}
【程序14】
题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来
,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
闰年的条件:year除以400能整除,或者year除以4能整除,但是不能是100的倍数
public class Programme14 {
public static void main(String[] args) {
System.out.println("请输入年月日(用空格隔开):");
Scanner scanner=new Scanner(System.in);
int year=scanner.nextInt();//获取年份
int month=scanner.nextInt();//获取月份
int day=scanner.nextInt();//获取天数
int sum=0;//天数总和
//创建一个包含月份天数的数组,先按小年计算,如果是闰年,并且在三月以后再加1
int[] arr={31,28,31,30,31,30,31,31,30,31,30,31};
sum=day;//输入的天数肯定是要加的
for (inti = 1; i < month; i++) { //加上包含的月份天数
sum+=arr;
}
//最后判断是否是闰年,如果是的话再加1,否则sum就是结果了,条件比较长,我就抽出来写了
booleanisRight=(((year%4==0)&&(year%100!=0))||(year%400==0))&&(month>2);
if (isRight) {
sum+=1;
}
System.out.println(year+"年"+month+"月"+day+"日,是这年的第"+sum+"天");
}
}
public class Programme15 {
public static void main(String[] args) {
System.out.println("三个整数:");
Scanner scanner=new Scanner(System.in);
int num1=scanner.nextInt();//获取整数
int num2=scanner.nextInt();
int num3=scanner.nextInt();
int temp=0;//最为一个交换数
if (num1>num2) {//保证num2>num1
temp=num1;
num1=num2;
num2=temp;
}
if (num1>num3) {//保证num3>num1
temp=num1;
num1=num3;
num3=temp;
}
if (num2>num3) {//保证num3>num2
temp=num2;
num2=num3;
num3=temp;
}
System.out.println("这三个数从小到大排列:"+num1+" "+num2+" "+num3);
scanner.close();
}
}
【程序16】
题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,jC列。
表达式: i+"*"+j+"="+i*j,这里要用两个for循环控制输出和换行
public class Programme16 {
public static void main(String[] args) {
for (inti = 1; i <= 9;i++) {
for (intj = 1; j <=i ;j++) {
System.out.print(i+"*"+j+"="+i*j+" ");//输出结果
}
System.out.println();//换行
}
}
}
public class Programme17 {
public static void main(String[] args) {
int sum=1;//第一天桃子的数量
for (inti =2; i <=10;i++) {//第二天才开始计算
sum=sum*2+2;
}
System.out.println("猴子摘的桃子数为:"+sum);
}
}
public class Programme20 {
public static void main(String[] args) {
float up=2;//分子
float down=1;//分母
float fraction=up/down;//分数
float temp=0;//交换数
float sum=0;//总和
for (inti = 0; i <20;i++) { //前面20项
sum+=fraction; //分数相加
temp=up+down;//先把分子分母的和赋值给一个交换数,不能马上赋值给分子,因为分子的值下面还有用
down=up; //把分子的值赋值给下一下的分母
up=temp; //把交换数的值赋值给下一项分子
fraction=up/down;//下一项的分数值
}
System.out.println(""+sum);
}
}
【程序21】
题目:求1+2!+3!+...+20!的和
程序分析:此程序只是把累加变成了累乘。
1、先求该项阶乘的值
* 2、累加求求
public class Programme21 {
public static void main(String[] args) {
int sum=0;//总和
for (inti = 1; i <= 20;i++) {
sum+=factorial(i);//累加
}
System.out.println(""+sum);
}
//求阶乘的实现
private static int factorial(inti) {
//求阶乘
int mult=1;
for (intj=1 ; j <= i;j++) {
mult*=j;
}
returnmult;//返回阶乘结果
}
}
【程序22】
题目:利用递归方法求5!。
程序分析:递归公式:f(n)=n*f(n-1)
不断的调用方法,直到最小的值确定
public class Programme22 {
public static void main(String[] args) {
System.out.println(Fact(5));//输出结果值
}
//递归方法求阶乘的具体代码
private static int Fact(inti) {
if (i==1) {//1的阶乘为1
return 1;
}
returni*Fact(i-1);//不断回调
}
}
public class Programme23 {
public static void main(String[] args) {
System.out.println("第五个人的岁数:"+GetAge(5,2));
}
//递归方法求第五个人的岁数
private static int GetAge(intnum, intageMore) {
if (num==1) {//第一个人岁数为10
return 10;
}
returnGetAge(num-1, ageMore)+ageMore;//每上一个人岁数加2
}
}
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析:创建一个五位数数的数组,把输入数字的每位数的值赋值到数组里面
* 把输入 数字从个位起获取,并且每获取一次之后/10,这样就能分别获取十位百位千位了
* 把数字打印出来就是题目所求了
public class Programme24 {
public static void main(String[] args) {
System.out.println("请输入一个不大于5位数的数字:");
Scanner scanner=new Scanner(System.in);
int num=scanner.nextInt();//获取输入
int[] arr=new int[5];//创建5位数的数组
int i=0;
//循环取位
do{
arr=num%10;
num=num/10;
i++;
}while (num!=0);//只剩下一位时,说明获取完毕,跳出循环
System.out.println("输入数字串的是"+i+"位数的");
System.out.println("逆序输出:");
//打印出数组
for (intj = 0; j < i;j++) {
System.out.print(arr[j]+" ");
}
scanner.close();
}
}
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
这个程序跟上一个程序类似。
* 创建一个五位数的数组
* 逐次取位
* 组后判断条件就可以了
public class Programme25 {
public static void main(String[] args) {
System.out.println("请输入一个五位数:");
Scanner scanner=new Scanner(System.in);
int input=scanner.nextInt();//获取输入的数字
int arr[]=new int[5];//创建一个大小为5的数组
int i=4;
do {//逐次取位
arr=input%10;
input/=10;
i--;
} while (i>=0);//这里的结束条件写input!=0也是可以的
//System.out.println(Arrays.toString(arr));
if (arr[0]==arr[4]&&arr[1]==arr[3]) {
System.out.println("输入的数是回文数字!");
}else {
System.out.println("输入的数不是回文数字!");
}
scanner.close();
}
}
for(inti=0;i<m;i++){
arrB =arrA;//把数组A不为零的数值赋值给数组B
}
intmax=0;
intmin=arrB[1];//定义数组的最小值
for (inti = 0; i < arrB.length; i++) {
if (arrB>max) {//求数组的最大值
max=arrB;
}
if (arrB<=min) {//求数组的最小值
min=arrB;
}
}
intmax_i=0;//定义数组最大值的下标
intmin_i=0;//定义数组最小值的下标
for (inti = 0; i < arrB.length; i++) {
if (max==arrB) {
max_i=i;
}
}
inttemp=0;//定义一个交换值
//把最大的值和第一个值交换
temp=arrB[0];
arrB[0]=arrB[max_i];
arrB[max_i]=temp;
//求数组最小值的下标
for (inti = 0; i < arrB.length; i++) {
if (min==arrB) {
min_i=i;
}
}
//把最小的值和最后一个值交换
temp=arrB[arrB.length-1];
arrB[arrB.length-1]=arrB[min_i];
arrB[min_i]=temp;
System.out.println(Arrays.toString(arrB));
scan.close();
}
}
【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
程序分析:在原来数组的基础上还要创建一个和原来数组大小一样的数组
* 根据要移动的位数把原来的数组分割成两个部分分别赋值给新的数组
public static void main(String[] args) {
System.out.println("输入一个十个数的组数:");
Scanner scanner=new Scanner(System.in);
int n=10;
int[]arrA=newint[n];
for (inti = 0; i < n; i++) {
arrA=scanner.nextInt();//获取十个数组
}
System.out.println("没移动前的数组:"+Arrays.toString(arrA));
System.out.println("请输入要往后移动的个数:");
int m=scanner.nextInt();//获取输入往后退的个数
m%=n;//十个相当于循环
int[]arrB=newint[n];//创建和数组A大小一样的数组B
int k=m;//创建一个可变的变量
for (inti = m; i < arrA.length;i++) {
arrB=arrA[i-m];
}
for (inti = 0; i <m;i++) {
arrB=arrA[arrA.length-k];
k--;
}
System.out.println("移动后的数组:"+Arrays.toString(arrB));//输出数组B
scanner.close();
}
public class Programme42 {
public static void main(String[] args) {
String result="";
for (inti = 100; i < 1000;i++) {
if (809*i==800*i+9*i+1) {
result=i+" ";
}
}
if (result.equals("")) {
System.out.println("没有合适的数");
}else {
System.out.println("合适的数有:"+result);
}
}
}
【程序43】
题目:求0—7所能组成的奇数个数。
*程序分析:最少也是1位数,最多能组成8位的数字
* 第一位不能为零,最后一位不能是偶数
* 0到7有四个奇数
* 这里用累加求和
public class Programme43 {
public static void main(String[] args) {
int n = 8;//位数
int sum = 0;//总和
// 1位数情况
sum += n / 2;
// 2位数情况
sum += (n-1)*n / 2;
// 3位数情况
sum += (n-1)*n*n / 2;
// 4位数情况
sum += (n-1)*n*n*n / 2;
// 5位数情况
sum += (n-1)*n*n*n*n / 2;
// 6位数情况
sum += (n-1)*n*n*n*n*n / 2;
// 7位数情况
sum += (n-1)*n*n*n*n*n*n / 2;
// 8位数情况
sum += (n-1)*n*n*n*n*n*n*n / 2;
System.out.println("0到7能组成的奇数个数:"+sum);
}
}
【程序44】
题目:一个偶数总能表示为两个素数之和。
程序分析:判断两个加数是不是素数
* 素数的判断前面做过很多了,不说了!
import java.util.Scanner;
public class Programme44 {
public static void main(String[] args) {
System.out.println("请输入一个偶数:");
Scanner scanner =new Scanner(System.in);
int input=scanner.nextInt();
while (input%2!=0) {
System.out.println("你输入的不是偶数,请重新输入:");
input=scanner.nextInt();
}
for (inti = 2; i < input; i++) {
if (isRightNum(i)&&isRightNum(input-i)) {//两个加数同时是素数
System.out.println(input+"="+i+"+"+(input-i));
break;
}
}
scanner.close();
}
//判断这个数是不是素数的具体方法:
private static boolean isRightNum(inti) {
for (intj = 2; j < Math.sqrt(i+1);j++) {
if (i%j==0) {//确定是素数
return false;
}
}
return true;
}
}
【程序45】
题目:判断一个素数能被几个9整除
程序分析:这个题目也不知道是哪个傻瓜想出来的,我只能说垃圾,不知道它想问什么的?
下面是网上下的答案,我不想做!
我猜它是判断输入的数比9 的多少次方大?而且跟素数有毛关系??
import java.util.Scanner;
public class Prog45{
public static void main(String[] args){
System.out.print("请输入一个数:");
Scanner scan = new Scanner(System.in);
long l = scan.nextLong();
long n = l;
scan.close();
int count = 0;
while(n>8){
n /= 9;
count++;
}
System.out.println(l+"能被"+count+"个9整除。");
}
}
【程序46】
题目:两个字符串连接程序
程序分析:考察程序的基本常识吗?
public class Prog46{
public static void main(String[] args){
String str1 = "lao lee";
String str2 = "牛刀";
String str = str1+str2;
System.out.println(str);
}
}
【程序47】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
程序分析:简单方法的调用而已!
import java.util.Scanner;
public class Prog47{
public static void main(String[] args){
System.out.print("请输入7个整数(1-50):");
Scanner scan = new Scanner(System.in);
int n1 = scan.nextInt();
int n2 = scan.nextInt();
int n3 = scan.nextInt();
int n4 = scan.nextInt();
int n5 = scan.nextInt();
int n6 = scan.nextInt();
int n7 = scan.nextInt();
scan.close();
printStar(n1);
printStar(n2);
printStar(n3);
printStar(n4);
printStar(n5);
printStar(n6);
printStar(n7);
}
static void printStar(int m){
System.out.print(m);
for(int i=0;i<m;i++)
System.out.print("*");
System.out.println();
}
}
public class Programme48 {
public static void main(String[] args) {
int[] num=new int[4];//存放四位数的个十百千位
System.out.println("请输入一个四位数:");
Scanner scanner=new Scanner(System.in);
int input=scanner.nextInt();
for (inti = 0; i < 4;i++) {//逐次取位,从个位开始,并按要求替换
num=(input%10+5)%10;
input/=10;
}
//按要求替换,交换1、4位
int temp=0;//交换数
temp=num[0];
num[0]=num[3];
num[3]=temp;
//交换2、3位
temp=num[1];
num[1]=num[2];
num[2]=temp;
System.out.println("加密后的结果:"+num[3]+num[2]+num[1]+num[0]);
scanner.close();
}
}