6.【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * @date:2016年5月20日 * @description:[程序6]输入两个正整数m和n,求其最大公约数和最小公倍数。 */ public class CommonFactor { /** * @param numMin最小公倍数 * @param numMax最大公因数 */ public static void main(String[] args) { Scanner reader = new Scanner(System.in); String ans = null; do{ System.out.println("请输入两个数:number1,number2(number1>=number2)"); int number1 = reader.nextInt(); int number2 =reader.nextInt(); if(number1 < number2){ System.out.println("输入的顺序错误,是否重新输入:(y/n)"); ans = reader.next(); }else{ int numMax = printCommon(number1,number2); int numMin = number1*number2/numMax; System.out.println("最大公因数是:"+numMax+"\n最小公倍数是:"+numMin); return; } }while("y".equals(ans)); } /** * @param number1 除数 * @param number2 被除数(之后有作为被除数) * @param number3作为余数 * @param number4作为商(之后作为除数) */ public static int printCommon(int number1, int number2) { int number3,number4; do{ number3 = number1%number2; number4 = number1/number2; number1 = number2; number2 = number4; }while(number3!=0); return number4; } }
7.【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
package com.niit.homework1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author: Annie * @date:2016年5月23日 * @description:【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 */ public class CalculateNum { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一行文本:"); String str = br.readLine(); int countNum = 0;//统计数字的个数 int countChar = 0;//统计英文字母的个数 int countSpace = 0;//统计空格的个数 int countOthers = 0;//统计其它字符的个数 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i);//返回i索引下的字符 if (c >= '0' && (int) c <= '9') { countNum++; } else if ((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z')) { countChar++; } else if (c == ' ') { countSpace++; } else{ countOthers++; } } System.out.println("数字个数:"+countNum); System.out.println("英文字母个数:"+countChar); System.out.println("空格个数:"+countSpace); System.out.println("其他字符个数:"+countOthers); } }
8.【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * @date:2016年5月20日 * @description:【程序8】求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), * 几个数相加有键盘控制。 */ public class Sum { /** * @param args */ public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.println("请输入要先加的数和相加的次数(number1,number2)"); int number1 = reader.nextInt(); int number2 = reader.nextInt(); Sum s = new Sum(); System.out.println(s.printSum(number1,number2)); } /** * @param number1代表相加的数 * @param number2代表先加的个数 */ private int printSum(int number1, int number2) { int[] arr = new int [number2]; int sum =0; if(number2 ==1 ){ return sum = number1; }else{ for (int i = 1; i < number2; i++) { arr[0]=number1; arr[i]=arr[i-1]*10+arr[0]; System.out.println(arr[i]); sum +=arr[i]; } return sum+number1; } } }
9.【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完
数。
10.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
少米?第10次反弹多高?
package com.niit.homework1; /** * @author: Annie * @date:2016年5月20日 * @description:【10】.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多 少米?第10次反弹多高? */ public class FallBall { public static void main(String[] args) { FallBall fb = new FallBall(); fb.printcount(100); } /** * @param i代表100米高空 * @param count代表每次反弹后的高度是原来的一半 * @param sum 代表总体经过的路程 */ private void printcount(double i) { double count=i,sum = 0; for (int j = 0; j <10; j++) { count = count/2; sum = sum +count; } sum = sum +i; System.out.println("球经过10次的反弹后,共经过了"+sum+"米的路程\n"+"第十次反弹的高度是:"+count); } }