您的位置:首页 > 编程语言 > Java开发

javaSE 循环练习题2

2019-05-28 20:59 134 查看

   1、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
   假如兔子都不死,问每个月的兔子总数为多少? 
   规律 1 1 2 3 5 8 13 21 ......(递归)

[code]	public static void main(String[] args) {
int month=20;//月份
for(int i=1;i<=month;i++) {
System.out.println(ruub(i));
}
}
public static int ruub(int month) {
int num=1;
if(month==1||month==2) {
num=1;
}else {
num=ruub(month-1)+ruub(month-2);
}

return num;
}

2、输入两个正整数m和n,求其最大公约数和最小公倍数。 利用辗除法

[code]		int m=86;
int n=78;

m=Math.abs(m);
n=Math.abs(n);

int max=m>n?m:n;
int min=m<n?m:n;
int y=0;
while(min!=0&&max%min>0){
y=max%min;
max=min;
min=y;
};

System.out.println("最大公约数:"+min);
System.out.println("最小公倍数:"+min*(m<n?m:n));

3、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

[code]		int shuzi=0;
int zimu=0;
int kge=0;
int other=0;
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] ch=s.toCharArray();
for(char c:ch) {
if(c>='0'&&c<='9') {
shuzi++;
}else if(c>='a'&&c<='z'||c>='A'&&c<='Z'){
zimu++;
}else if(c==' ') {
kge++;
}else {
other++;
}
}
System.out.println("数字个数:"+shuzi );
System.out.println("字母个数:"+zimu );
System.out.println("空格个数:"+kge );
System.out.println("其他个数:"+other );

4、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

[code]		int shu=123454321;
length=String.valueOf(shu).length();
int[] arr_shu=new int[length];
int l=0;
while(shu>0) {
int yu=shu%10;
shu=shu/10;
l++;
arr_shu[length-l]=yu;
//			System.out.print(yu);
}
boolean b=true;
for(int e=0;e<length/2;e++) {
if(arr_shu[e]!=arr_shu[length-1-e]) {
b=false;
}
}

if(b) {
System.out.println("是回文数");
}else {
System.out.println("不是回文数");
}

5 、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制

[code]int a=2;
int length=3;
int sum=a;
int item=a;//代表每一项的值
for(int i = 1; i < length; i++) {
for(int j = 1;j <= i; j++) {
item += a * Math.pow(10,j);
}
sum += item;
//System.out.println(item);
item=a;
}
System.out.println("求和:"+sum);

 

6、 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

[code]double height=100;
int times=0;//次数
int endTimes=10;
double total=height;
while(height>0) {
times++;
height = height/2;
System.out.println("第"+times+"次高度:"+height);
total += height*2;
if(times==endTimes) {//第十次终止
break;
}
}
System.out.println("总高度:"+total);
System.out.println("第"+endTimes+"次反弹高度为:"+height);

 

7 、 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
   1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列

[code]int[] arr= {1,2,3,4};
arr= new int[]{1,5,6,4};
int num=0;
for(int i=0;i<4;i++) {//百
for(int j=0;j<arr.length;j++) {
if(arr[i]!=arr[j]) {
for(int k=0;k<arr.length;k++) {
if(arr[i]!=arr[j]&&arr[i]!=arr[k]&&arr[j]!=arr[k]) {
num++;
}
System.out.println(""+arr[i]+arr[j]+arr[k]);
}
}
}
}
System.out.println("个数:"+num);

 

8 、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 
    1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

[code]int end=10000;
for(int i=1;i<=end;i++) {
if(Math.pow((int)Math.sqrt(i+100), 2)==i+100&&Math.pow((int)Math.sqrt(i+268), 2)==i+268) {
System.out.println(i);
}
}

 

9 、输入某年某月某日,判断这一天是这一年的第几天? 
       1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

[code]int year=46000;
int month=2;
int day=16;

//判断闰年
boolean run=false;
if(year%400==0) {
run=true;
}else if(year%4==0&&year%100!=0) {
run=true;
}
for(int i=1;i<=month;i++) {
switch(i) {
case 2:day+=run?29:28;break;
case 1:
case 3:
case 5:
case 7:
case 10:
case 8:
case 12:day+=31;break;

case 4:
case 6:
case 9:
case 11:day+=30;break;
}
}
System.out.println(day);

 

10 、 给一个正整数,要求:一、求它是几位数,二、逆序打印出各位数字

[code]		int u=34567;
int i=0;
while(u>0) {
int yu=u%10;
u=u/10;
i++;
System.out.print(yu);
}
System.out.println("\nu是"+i+"位数");

 

11 、 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

[code]		int shu=123454321;
length=String.valueOf(shu).length();
int[] arr_shu=new int[length];
int l=0;
while(shu>0) {
int yu=shu%10;
shu=shu/10;
l++;
arr_shu[length-l]=yu;
//			System.out.print(yu);
}
boolean b=true;
for(int e=0;e<length/2;e++) {
if(arr_shu[e]!=arr_shu[length-1-e]) {
b=false;
}
}

if(b) {
System.out.println("是回文数");
}else {
System.out.println("不是回文数");
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: