A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【程序1】   
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   
1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....   
【程序2】   
题目:判断101-200之间有多少个素数,并输出所有素数。   
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,   
则表明此数不是素数,反之是素数。   
【程序3】   
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。   
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。   
【程序4】   
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。   
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。   
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。   
【程序5】   
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。   
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。   
【程序6】   
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   
1.程序分析:利用辗除法。   
【程序7】   
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。   
1.程序分析:利用while语句,条件为输入的字符不为 '\n '.   
【程序8】   
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   
1.程序分析:关键是计算出每一项的值。   
【程序9】   
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程   找出1000以内的所有完数。   
【程序10】   
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?   
【程序11】   
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?   
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去   掉不满足条件的排列。   
【程序12】   
题目:企业发放的奖金根据利润提成。利润(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%提成,从键盘输入当月利润I,求应发放奖金总数?   
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。   
【程序13】   
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?   
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:   
【程序14】   
题目:输入某年某月某日,判断这一天是这一年的第几天?   
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。   
【程序15】   
题目:输入三个整数x,y,z,请把这三个数由小到大输出。   
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则将x与z的值进行交换,这样能使x最小。   
【程序16】   
题目:输出9*9口诀。   
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。   
【程序17】   
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。   
1.程序分析:采取逆向思维的方法,从后往前推断。   
【程序18】   
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。   
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,   则表明此数不是素数,反之是素数。   
【程序19】   
题目:打印出如下图案(菱形)   
*   
***   
******   
********   
******   
***   
*   
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重   for循环,第一层控制行,第二层控制列。   
【程序20】   
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。   
1.程序分析:请抓住分子与分母的变化规律。

评分

参与人数 2黑马币 +26 收起 理由
黄奕豪 + 20 收到~~~~
袁錦泰 + 6

查看全部评分

27 个回复

倒序浏览
第一题 斐波那契数列:用递归函数
public class Test
{
       
        public static long sum(int index){
         long f1=1L;
         long f2=1L;
         long f=0;
         for (int x=0;x<index-2 ;x++ )
         {
                 f=f1+f2;
                 f1=f2;
                 f2=f;
         }
         return f;
       
        }
        public static void main(String []args){
                System.out.println("一年下来共有兔子:"+sum(12));
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 很给力!

查看全部评分

回复 使用道具 举报
第二题
/*
需求:找出101-200之间所有的素数
分析:素数就是只能被1和自己整除的数,首先从1遍历到200然后,判断哪个是素数,是就输出,否则就跳过
需要两层循环来解决,外循环遍历101-200,内循环判断是否为素数,在判断的过程中,根据素数的定义,需要使用循环让这个数
对2,3,4...做除法运算,一旦能整除,说明这个数不是素数,就不需要再拿这个数对后面的数运算,所有用break跳过
*/
public class SuShu
{
        public static void main(String []args)
        {
                int i=0,j=0;
                //外循环遍历所有的数
                for(i=101;i<=200;i++)
                {
                        //内循环判断是否为素数
                   for(j=2;j<i;j++)
                        {
                      if(i%j==0)
                                {
                                        break;
                                }
                        }
                        if(i==j)
                        {
                                System.out.println("找到素数"+i);
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 很给力!

查看全部评分

回复 使用道具 举报
第二题
/*
需求:找出101-200之间所有的素数
分析:素数就是只能被1和自己整除的数,首先从1遍历到200然后,判断哪个是素数,是就输出,否则就跳过
需要两层循环来解决,外循环遍历101-200,内循环判断是否为素数,在判断的过程中,根据素数的定义,需要使用循环让这个数
对2,3,4...做除法运算,一旦能整除,说明这个数不是素数,就不需要再拿这个数对后面的数运算,所有用break跳过
*/
public class SuShu
{
        public static void main(String []args)
        {
                int i=0,j=0;
                //外循环遍历所有的数
                for(i=101;i<=200;i++)
                {
                        //内循环判断是否为素数
                   for(j=2;j<i;j++)
                        {
                      if(i%j==0)
                                {
                                        break;
                                }
                        }
                        if(i==j)
                        {
                                System.out.println("找到素数"+i);
                        }
                }
        }
}
回复 使用道具 举报
楼主圣明{:soso_e113:} 拿来练练手
回复 使用道具 举报
谭威 发表于 2012-6-6 16:16
第一题 斐波那契数列:用递归函数
public class Test
{

现在看起来这个问题还是挺简单的嘛 呵呵
回复 使用道具 举报
顶起  想找这种将理论运用到实际的题很久了
回复 使用道具 举报
第三题
public class test1 {
     public static void main(String[] args) {
             for(int i=100;i<=999;i++){
                     int j = (int) (Math.pow(i/100,3)+Math.pow(i/10%10,3)+Math.pow(i%100%10,3));
                     if(i==j){
                             System.out.println(i);
                     }
                     else
                             continue;
             }
     }
}
回复 使用道具 举报
第十题
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?  
public class Test10 {
public static void main(String[] args) {
      double h = 100,s = 100;
      for(int i=1; i<10; i++) {
      s = s + h;
      h = h / 2;
     }
     System.out.println("第10次落地时经过路程:" + s);
     System.out.println("第10次反弹高度:" + h / 2);
}
}

点评

有些小细节需要注意。  发表于 2012-6-6 23:42
回复 使用道具 举报
第四题
import java.util.Scanner;

public class zhishu{
        static boolean odd(int n){//判断是不是奇数
                if(n==2||n==3) return true;
                if(n%2==0) return false;
                int i;
                for(i=3;i<=n/2;i+=2)
                        if(n%i==0) return false;
                return true;
    }

        public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                System.out.println("输入数值");
                int n=in.nextInt();
                int i;
                System.out.print(n+"=");
                for(i=2;i<=n;i++){
                        if(!odd(i)) continue;//因为求得是质数的乘积,所以取出小于等于n的质数来
                        if(n%i==0){//能被 i 整除
                                while(true){
                                        System.out.print(i);
                                        n=n/i;
                                        if(n!=1) System.out.print("*");
                                        if(n%i!=0) break;
                                }
                        }
                }
                System.out.println();
                  }
}
回复 使用道具 举报
第五题
import java.util.Scanner;

public class chengji {
        public static void main(String[] args) {
                Scanner in=new Scanner(System.in);
                System.out.println("输入乘成绩");
                float n=in.nextFloat();
                String s = (n>=90.0)?"A":((n>=60)?"B":"C");
                System.out.println(s);
        }
}
回复 使用道具 举报
???
String s = (n>=90.0)?"A":((n>=60)?"B":"C");
回复 使用道具 举报
我汗了
{:soso_e115:}  ==》“一个冒号一个左括号”
回复 使用道具 举报
第6题:输入两个正整数m和n,求其最大公约数和最小公倍数。   
1.程序分析:利用辗除法
import java.util.*;
public class Test6{
        public static void main(String[] args) {
                int m,n,p;
                Scanner scanner = new Scanner(System.in);
                System.out.print( "请输入两个整数: ");
                m = scanner.nextInt();
                n = scanner.nextInt();
                      p = fun(m,n);
                      int q = m * n / p;//最小公倍数为两数之积除以最大公约数
                      System.out.println("最大公约数: " + p);
                      System.out.println("最小公倍数: " + q);
        }

        public static int fun(int x, int y) {//单独定义一个求最大公约数的方法
                     int t;
                     if(x < y) {
                              t = x;
                              x = y;
                              y = t;
                     }  
                     while(y != 0) {                        //辗除法
                              if(x == y) return x;
                              else {
                                       int k = x % y;
                                       x = y;
                                       y = k;
                              }
                     }
                     return x;
        }
}
回复 使用道具 举报
第六题
import java.util.Scanner;

public class chengji {
        public static void main(String[] args) {
                Scanner sc= new Scanner(System.in);
                int a,b;
                System.out.print("请输入a:");
                a= sc.nextInt();
                System.out.print("请输入b:");
                b= sc.nextInt();
                System.out.println(Max(a, b));
                System.out.println(Min(a, b));
        }


        public static int Max(int a, int b) { // a与b的最大公约数
                while(b%a!=0){      //运用递归调用将求余之后的值作为a
                        int temp=b%a;   //将之前的a作为b,直到b%a值为0为止结束循环
                        b=a;
                        a=temp;
                }
                return a;
        }


        public static int Min(int a, int b) {// a与b的最小公倍数
                return a*b/Max(a,b);   //公倍数就是将两的积除以最大公约数
        }
}
回复 使用道具 举报
java需要很多的数学问题吗? 我数学很烂啊~ 我一看到这么数学问题就怵
回复 使用道具 举报
第七题
import java.util.*;
//
public class test2 {
        public static void main(String[] args){
               
                System.out.println("输入");
                Scanner in=new Scanner(System.in);
                String s = in.nextLine();
                int zimu=0,shuzi=0,kongge=0,qita=0;

               
                char[] ch = s.toCharArray();
                for(char c:ch){
                        if(c<='z'&&c>='A'){
                                zimu++;
                        }
                        else if(c>='0'&&c<='9'){
                                shuzi++;
                        }
                        else if(c==' '){
                                kongge++;
                        }
                        else qita++;
                        }
                System.out.println("zimu="+zimu);
                System.out.println("shuzi="+shuzi);
                System.out.println("kongge="+kongge);
                System.out.println("qita="+qita);
       
}
}


至于利用while语句,条件为输入的字符不为 '\n '. 没搞出来  求助
回复 使用道具 举报
第八题
import java.util.Scanner;


public class test3 {
        public static void main(String[] args){
                Scanner sc= new Scanner(System.in);
                int s,a;
                System.out.print("请输入s:");
                s= sc.nextInt();
                System.out.print("请输入a:");
                a= sc.nextInt();
                add(s,a);               
        }
        public static void add(int s,int a){
                String s1 = a+"";
                int s2=a;
                System.out.print("s="+a);
                for(int i=1;i<s;i++){
                        s1=s1+a;//这地方s1是字符串
                        s2=s2+Integer.parseInt(s1);//这地方s2是int型
                        System.out.print("+"+s1);
                       
                }
                System.out.println("="+s2);
        }
}
回复 使用道具 举报
第八题
import java.util.Scanner;


public class test3 {
        public static void main(String[] args){
                Scanner sc= new Scanner(System.in);
                int s,a;
                System.out.print("请输入s:");
                s= sc.nextInt();
                System.out.print("请输入a:");
                a= sc.nextInt();
                add(s,a);               
        }
        public static void add(int s,int a){
                String s1 = a+"";
                int s2=a;
                System.out.print("s="+a);
                for(int i=1;i<s;i++){
                        s1=s1+a;//这地方s1是字符串
                        s2=s2+Integer.parseInt(s1);//这地方s2是int型
                        System.out.print("+"+s1);
                       
                }
                System.out.println("="+s2);
        }
}
回复 使用道具 举报
第九题

public class ceshi {
        public static void main(String[] args){
                       
                int sum;
                  for(int i=1; i<1000; i++)
                   {
                             sum=0;
                             for(int j=1; j<=i/2; j++){
                                     if(i%j==0) sum+=j;
                             }
                             if(sum==i){
                                     System.out.println(i);
                             }
                 }
}
}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马