【程序1】 题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
int sum=0;
for(int a=101;a<=200;a++){
for(int b=2;b<=a;b++){
if(a%b==0&&a!=b){
break;
}
if(a==b&&a%b==0){
System.out.println(a);
sum++;
}
}
}
System.out.println("素数的个数一共是:"+sum);
【程序2】:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
1.程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n > i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。
public staticvoidmain(String[] args){
System.out.println("输入一个数值");
Scannera=new Scanner(System.in);
int x=a.nextInt();
for (int i = 2; i <=x; i++) {
if (x%i==0) {
System.out.print(i+"*");
x=x/i;
i=2;
}
}
a.close();
【程序3】:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
public staticvoidmain(String[] args){
System.out.println("请输入您的成绩:");
Scannera=new Scanner(System.in);
int b=a.nextInt();
if(b<0||b>100){
System.out.println("您输入的成绩不正确。");
}else if (b>=90&&b<=100) {
System.out.println("您的等级是A。");
}else if (b<90&&b>=60) {
System.out.println("您的等级是B。");
}else {
System.out.println("您的等级是C。");
}
a.close();
【程序4】:输入两个正整数m和n,求其最大公约数和最小公倍数。
public staticvoidgetb(intx,int y){
int big=x>y?x:y;
int small=x>y?y:x;
for(int d=1;d<=small;d++){
if((big*d)%small==0){
System.out.println("最小公倍数是"+big*d);
break;
}
}
}
public static void gety(int x,int y){
int big=x>y?x:y;
int small=x>y?y:x;
for(int d=1;d<=small;d++){
if(small%d==0&&big%(small/d)==0){
System.out.println("最大公约数是:"+small/d);
break;
}
}
}
public static void main(String[] args) {
System.out.println("请输入一个数字");
Scannera=new Scanner(System.in);
int b=a.nextInt();
System.out.println("请再输入一个数字");
int c=a.nextInt();
getb(b,c);
gety(b, c);
【程序5】:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用for循环语句,if条件语句
public staticvoidmain(String[] args){
System.out.println("请输入一串字符");
Scannera=new Scanner(System.in);
Stringb=a.nextLine();
int zimu = 0,shuzi = 0,kongge = 0,qita = 0;
for (int i = 0; i <b.length(); i++) {
char c=b.charAt(i);
if ((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
zimu++;
}else if(c>='0'&&c<'9'){
shuzi++;
}else if (c==' ') {
kongge++;
}else {
qita++;
}
}
System.out.println("字母有"+zimu+"个");
System.out.println("数字有"+shuzi+"个");
System.out.println("空格有"+kongge+"个");
System.out.println("其它有"+qita+"个");
a.close();
【程序6】:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数。
public staticvoidmain(String[] args){
for(int i=1;i<1001;i++)
{
int sum=0;
for(int j=1;j<i;j++){
if(i%j==0) {
sum=sum+j;
}
}
if(sum==i) {
System.out.println(i);
}
}
【程序7】:一球从n (注:n>=100)米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
public staticvoidmain(String[] args){
System.out.print("请输入一个数字:");
Scannera=new Scanner(System.in);
double b=a.nextDouble();
double e=b;
if(b<100){
System.out.println("您输入的数字不正确");
}else {
for(int c=0;c<10;c++){
b=b/2;
e=e+2*b;
System.out.println(b);
}
System.out.println("十次一共跳:"+(e-b)+"米。");
}
a.close();
【程序8】:题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
int con=0;
for(int a=1;a<=4;a++){
for(int b=1;b<=4;b++){
for(int c=1;c<=4;c++){
if(a!=b&&b!=c&&a!=c){
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.println();
con++;
}
}
}
}
System.out.println("一共有:"+con);
【程序9】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润lirun,求应发放奖金总数sum?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
System.out.print("请输入您的工资:");
Scannera=new Scanner(System.in);
double b=a.nextDouble();
if(b<=100000){
b=b*0.1;
}else if (b>100000&&b<=200000) {
b=100000*0.1+(b-100000)*0.075;
}else if (b>200000&&b<=400000) {
b=(b-200000)*0.05;
}else if (b>400000&&b<=600000) {
b=(b-400000)*0.03;
}else if (b>600000&&b<=1000000) {
b=(b-600000)*0.015;
}else {
b=(b-1000000)*0.01;
}
System.out.println(b);
a.close();
【程序10】 题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上168后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
public staticvoidmain(String[] args){
for(int a=0;a<100000;a++){
int b=(int)Math.sqrt(a+100);
int c=(int)Math.sqrt(a+168);
if(b*b==a+100&&c*c==a+168){
System.out.println(a);
}
}
【程序11】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少
public staticvoidmain(String[] args){
int b=1;
for(int a=0;a<9;a++){
b=(b+1)*2;
System.out.println(b);
}
【程序12】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
public staticvoidmain(String[] args){
double a=1,b=1,c;
double e,f=0;
for(int d=0;d<20;d++){
c=b;
b=a;
a=c+a;
System.out.println("a的值是"+a);
System.out.println("b的值是"+b);
e=a/b;
f=e+f;
System.out.println("e的值是:"+e);
}
System.out.println("f的值是:"+f);
【程序13】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两
岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
public staticvoidmain(String[] args){
int a=10;
for(int b=0;b<4;b++){
a=a+2;
System.out.println(a);
}
【程序14】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public staticvoidmain(String[] args){
System.out.print("请输入一个数字");
Scannera=new Scanner(System.in);
int b=a.nextInt();
String c=String.valueOf(b);
char f []=c.toCharArray();
int d=c.length()-1;
System.out.println("这是一个"+d+"位数。");
for(int e=d;e>=0;e--){
System.out.println(f[e]);
d--;
}
a.close();
【程序15】 题目:求100之内的素数
public staticvoidmain(String[] args){
for(int a=0;a<=100;a++){
for(intb=2;b<=a;b++){
if(a%b==0&&a!=b){
break;
}
if(a%b==0&&a==b){
System.out.println(a);
}
}
}