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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

眼看100楼快没了,急啊,我先把第一题贴上,搞了一天了。。困难啊。。。
  1. /**
  2. * 质数又称素数。
  3. * 指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
  4. * @author 姚飞
  5. *
  6. */
  7. public class SuSHu {
  8.         public static void main(String[] args) {
  9.                 System.out.println("100以内的素数有:");
  10.                 int i = 2, j = 0, m;
  11.                 int k = 0;
  12.                 label1: for (i = 2; i < 100; i++)//遍历100以内的数字,从2开始
  13.                         {
  14.                         for (m = 2; m <= (int) (Math.ceil(Math.sqrt(i))); m++)//ceil() 方法执行的是向上取整计算,

  15. 它返回的是大于或等于函数参数,并且与之最接近的整数。Math.sqrt(i)开方

  16.                          {
  17.                                 if (i % m == 0) //说明i不是素数
  18.                                 {
  19.                                         continue label1;
  20.                                 }
  21.                         }
  22.                         System.out.print(i + "\t");//打印出素数来
  23.                        
  24.                         k += i;//素数累加 k += i;
  25.                        
  26.                         j++;
  27.                         if (j % 5 == 0)
  28.                                 System.out.println();
  29.                        
  30.                 }
  31.                 System.out.println("100以内的素数和:"+k);
  32.         }
  33. }
复制代码
结果:

D:\11>javac SuSHu.java

D:\11>java SuSHu
100以内的素数有:
3       5       7       11      13
17      19      23      29      31
37      41      43      47      53
59      61      67      71      73
79      83      89      97      100以内的素数和:1058
回复 使用道具 举报
  1. package test;

  2. import java.util.Arrays;


  3. public class Demo {
  4.        

  5.         /**
  6.          * @param args
  7.          * @throws IOException
  8.          */
  9.         public static void main(String[] args) {
  10.                
  11.                 int[] arr = new int[]{2,5,9,10,48,95,154,31,59,69};
  12.                 System.out.println("第一题结果:"+getPrime(100));//
  13.                 sort(arr);
  14.                 for(int i=0;i<arr.length;i++){
  15.                         for(int y=0;y<i;y++)
  16.                                 System.out.print("  ");
  17.                         System.out.println(arr[i]);
  18.                 }
  19.                
  20.                 System.out.println("第三题结果:");
  21.                 show(9);
  22.         }
  23.        
  24.         public static int getPrime(int num){//要计算的数,此处为100;
  25.                 int sum = 0;
  26.                 a:for(;num>1;num--){//遍历num 以内的数
  27.                         b:for(int i=2;i<num;i++){//遍历num以内整除的数
  28.                                 if(num%i==0)
  29.                                         continue a;//整除就回到 a;
  30.                         }
  31.                         sum+= num;
  32.                 }
  33.                 return sum;
  34.         }
  35.        
  36.         public static int[] sort(int[] arr){
  37.                 Arrays.sort(arr);//排序
  38.                 a:for(int x=0;x<arr.length;x++){//替换质数
  39.                         for(int y=2;y<arr[x];y++){
  40.                                 if(arr[x]%y==0)
  41.                                         continue a;}
  42.                         arr[x] = 0;
  43.                 }
  44.                 return arr;
  45.         }
  46.        
  47.         public static void show(int num){//倒序打印

  48.                 for(int x=num;x>0;x--){
  49.                         for(int y=x;y<num;y++)
  50.                                 System.out.print("\t");//每一行的开头的空格数
  51.                         for(int i : get(x))
  52.                                 System.out.print(i+"\t\t");//每一行的2个数之间空2个 tab
  53.                         System.out.println();
  54.                 }
  55.         }
  56.        
  57.         public static int[] get(int num){//获取每一行的数组
  58.                 int[] arr0 = new int[]{1,1};
  59.                 int[] arr1 = new int[]{1};
  60.                 if(num == 1)
  61.                         return  arr1;
  62.                 else if(num == 2)
  63.                         return arr0;
  64.                 for(int i=3;i<=num;i++){
  65.                         arr1 = new int[i];
  66.                         arr1[0] = 1;
  67.                         arr1[i-1] = 1;
  68.                         for(int x=1;x<i-1;x++){
  69.                                 arr1[x] = arr0[x-1] + arr0[x];
  70.                         }
  71.                         arr0 = arr1;
  72.                 }
  73.                 return arr1;
  74.         }
  75. }



  76. /*
  77. 第一题结果:1060
  78. 0
  79.   0
  80.     9
  81.       10
  82.         0
  83.           48
  84.             0
  85.               69
  86.                 95
  87.                   154
  88. 第三题结果:
  89. 1                8                28                56                70                56                28                8                1               
  90.         1                7                21                35                35                21                7                1               
  91.                 1                6                15                20                15                6                1               
  92.                         1                5                10                10                5                1               
  93.                                 1                4                6                4                1               
  94.                                         1                3                3                1               
  95.                                                 1                2                1               
  96.                                                         1                1               
  97.                                                                 1               

  98. */
复制代码

评分

参与人数 1技术分 +5 收起 理由
夜默 + 5

查看全部评分

回复 使用道具 举报
  1. package cn.itcast.ios;
  2. /*
  3. *第一题:打印输出一百以内的素数的累加和...
  4. */
  5. public class PrimeNum {
  6.         //利用main函数方法调用,jvm虚拟机识别,保证程序的独立操作
  7.         public static void main(String args[])
  8.         {
  9.                 int n,k;//定义二个变量n和k
  10.                 int sum=0;//定义一个和sum,初始化为0
  11.                  //由于1既不是素数也不是合数,所以1不考虑,我们从2开始。
  12.                 for(n=2;n<=100;n++)
  13.                 {
  14.                         //定义一个boolean类型的flag,如果是素数的返回true
  15.                         boolean flag = true;
  16.                         //利用一个for循环进行判断,直到n/2
  17.                         for(k=2;k<=n/2;k++)
  18.                         {
  19.                                 if(n%k==0)//n模于k判断是否为0,是的话返回false
  20.                                 {
  21.                                         flag = false;
  22.                                         break;
  23.                                 }
  24.                         }
  25.                         if(flag){//判断是素数的话,进行一次sum的一次累加求和
  26.                                 sum+=n;       
  27.                         }               
  28.                 }
  29.                 System.out.println("sum="+sum);//输出打印一下素数的和,即sum的值
  30.         }
  31. }
复制代码
运行结果:
sum=1060

评分

参与人数 1技术分 +2 收起 理由
夜默 + 2

查看全部评分

回复 使用道具 举报
第二题
file:///C:/Users/Administrator.PC--20130621GXC/AppData/Roaming/Tencent/Users/1009761314/QQ/WinTemp/RichOle/LJV@Q(2_Y6D7K35~R4A$B5O.jpg
运行结果
[img]file:///C:/Users/Administrator.PC--20130621GXC/AppData/Roaming/Tencent/Users/1009761314/QQ/WinTemp/RichOle/$W[$1%60%7DMGVE(%7D~CV]SVH0XL.jpg[/img]

回复 使用道具 举报
第二题发错了,从新发
file:///C:/Users/Administrator.PC--20130621GXC/AppData/Roaming/Tencent/Users/1009761314/QQ/WinTemp/RichOle/G6]KUC2ZQO%60PDY0~)(F]EJX.jpg
运行结果
[img]file:///C:/Users/Administrator.PC--20130621GXC/AppData/Roaming/Tencent/Users/1009761314/QQ/WinTemp/RichOle/JMN%7DY7[]7G$3QH01QUIYLN5.jpg[/img]

回复 使用道具 举报
第二个提只做出了一半,格式打印没做出来。。搞不定了,但是这个技术分是硬伤,一天没多少时间泡论坛,准备辞职之后估计就更更加没时间了,版主你看我这个值几分。
顺便吐槽一下抢我100楼的那个家伙。
杨辉三角我就直接放弃了,那货我还没搞懂。
下面代码和结果:
  1. public class Panduan {

  2.         public static void main(String args[]) {
  3.                 int[] ar = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };
  4.                 int su = 0;
  5.                 int nusu = 0;
  6.                 System.out.print("原数组是:");
  7.                 for(int i = 0; i < ar.length; i++) {
  8.                         System.out.print(ar[i]+" ");
  9.                 }
  10.                 System.out.println();
  11.                 System.out.print("现在的数组: ");
  12.                 for(int i = 0; i < ar.length; i++) {
  13.                         if (IsPrime(ar[i])) {
  14. //                                System.out.println(ar[i]);
  15.                                 su = ar[i];
  16.                         }else {
  17.                                 ar[i]= 0;
  18.                                 su = ar[i];
  19.                         }
  20.                        
  21.                         System.out.print(su+ " ");
  22.                 }
  23.         }

  24.         public static boolean IsPrime(int n) {
  25.                 int i;
  26.                 if (n == 2)
  27.                         return true;
  28.                 if (n % 2 == 0) // 排除n为偶数
  29.                         return false;
  30.                 for (i = 3; i <= n / 2 + 1; i += 2)
  31.                         // n/2+1可以换为sqrt(n)+1;
  32.                         if (n % i == 0) // 所有的偶数都不是质数(排除了2),每循环一次i加2,比如4,6就不用考虑整除n了
  33.                                 return false;
  34.                 return true;
  35.         }
  36. }
复制代码
结果:

D:\11>javac Panduan.java

D:\11>java Panduan
原数组是:2 5 9 10 48 95 154 31 59 69
现在的数组: 2 5 0 0 0 0 0 31 59 0

点评

又一个没看清题的,素数赋值为零...  发表于 2013-6-23 01:03

评分

参与人数 1技术分 +5 收起 理由
夜默 + 5

查看全部评分

回复 使用道具 举报
楼主你好!我将二道题一起发吧!之前发了第一道,还没给分,就看这个吧,不好意思啊!
package cn.itcast.ios;
public class PrimeNum {
        //利用main函数方法调用,jvm虚拟机识别,保证程序的独立操作
        public static void main(String args[])
        {
                int n,k;//定义二个变量n和k
                int sum=0;//定义一个和sum,初始化为0
                 //由于1既不是素数也不是合数,所以1不考虑,我们从2开始。
                for(n=2;n<=100;n++)
                {
                        //定义一个boolean类型的flag,如果是素数的返回true
                        boolean flag = true;
                        //利用一个for循环进行判断,直到n/2
                        for(k=2;k<=n/2;k++)
                        {
                                if(n%k==0)//n模于k判断是否为0,是的话返回false
                                {
                                        flag = false;
                                        break;
                                }
                        }
                        if(flag){//判断是素数的话,进行一次sum的一次累加求和
                                sum+=n;       
                        }               
                }
                System.out.println("sum="+sum);//输出打印一下素数的和,即sum的值
        }
}
运行结果:
sum=1060

package cn.itcast.thread;
/*
* 第二题:将该数组由小到大进行排列,数组中的素数全部赋值为零
* , 并 按阶梯状输出。
* 数组:  2   5    9    10   48     95   154     31  59    69
*/
public class PrimeDemo {
        //调用一个main方法,jvm虚拟机来实现,保证程序的独立运行
public static void main(String[] args) {
        int[] arr = {2,5,9,10,48,95,154,31,59,69} ;
        selectSort(arr);//调用一个选择排序方法
        for (int x=0;x<arr.length ;x++ )
        {
                //定义一个boolean类型的flag,如果是素数的返回true
                boolean flag = true;
                //利用一个for循环进行判断,直到n/2
                int k;
                for(k=2;k<=arr[x]/2;k++)
                {
                        if(arr[x]%k==0)//n模于k判断是否为0,是的话返回false
                        {
                                flag = false;
                                break;
                        }
                }
                if(flag){//判断是素数的话,进行一次赋值为0的运算
                        arr[x]=0;       
                }               
        }
        //因为是9个数字,所以进行输出排列,达到相应的效果
        for(int x = 1;x<=9;x++){
                for(int y = 1;y<=x;y++){
                        if(x==y)//不难发现,当行和列相等情况下,打印出数字
                        System.out.print(arr[x]);
                        else
                                System.out.print(" ");//否则为空
                }
                System.out.println(" ");//实现换行功能
        }
        }
//以下为一个数组的选择排序
public static void selectSort(int arr[])
        {
        for (int x=0;x<arr.length ;x++ )
        {
                for (int y=x+1;y<arr.length ;y++ )
                {
                        if (arr[x]>arr[y])
                        {
                                //实现调换位置
                                int temp=arr[x];
                                arr[x]=arr[y];
                                arr[y]=temp;
                        }
                }
        }
        }
}
运行结果:
0
9
  10
   0
    48
     0
      69
       95
        154

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3

查看全部评分

回复 使用道具 举报
第一题

运行结果


第二题

运行结果

评分

参与人数 1技术分 +5 收起 理由
夜默 + 5

查看全部评分

回复 使用道具 举报
  1. static void Main(string[] args)
  2.         {
  3.             int[] S = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };
  4.             int min = 0; //中间变量
  5.             Console.Write("数组改变前");
  6.             for (int b = 0; b < S.Length; b++)
  7.             {
  8.                 Console.Write("{0}\0", S[b]);
  9.             }
  10.             Console.Write("\n");
  11.                 for (int i = 0; i <= S.Length - 1; i++) //比较S.Length-1次排序
  12.                 {
  13.                     for (int j = 0; j < S.Length - 1; j++)
  14.                     {
  15.                         if (S[j] > S[j + 1])
  16.                         {
  17.                             min = S[j]; //交换变量,由小到大排列
  18.                             S[j] = S[j + 1];
  19.                             S[j + 1] = min;
  20.                         }
  21.                     }
  22.                 }
  23.                Console.Write("数组改变后");
  24.             int m;
  25.             for (int a = 0; a < S.Length; a++)
  26.             {
  27.                 for (m = 2; m <= S[a]; m++)
  28.                 {
  29.                     if (S[a] % m == 0)
  30.                         break;
  31.                 }
  32.                 if (S[a] == m)  //为素数,则赋值0
  33.                     S[a] = 0;
  34.                 Console.Write("{0}\0", S[a]);
  35.                
  36.             }
  37.             Console.Write("\n");
  38.             Console.Write("输出数组");
  39.             Console.Write("\n");
  40.             for (int a = 0; a < S.Length; a++)
  41.             {
  42.                 for (m = 2; m <= S[a]; m++)
  43.                 {
  44.                     if (S[a] % m == 0 )
  45.                         break;
  46.                 }
  47.                 if (S[a] == m)  //为素数,则赋值0
  48.                     S[a] = 0;
  49.                 Console.Write("{0}", S[a]);
  50.                 Console.Write("\n");
  51.                 for (int b = 0; b <= a; b++)  //输出空格
  52.                 {
  53.                     Console.Write("\0");
  54.                 }
  55.             }
  56.             Console.ReadKey();
  57.         }
  58.         //数组改变前2 5 9 10 48 95 154 31 59 69
  59.         //数组改编后0 0 9 10 0 48 0 69 95 154
  60.         //输出数组:0 0 9 10 0 48 0 69 95 154
复制代码

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3

查看全部评分

回复 使用道具 举报

第二题怎么不给分呢也
回复 使用道具 举报
1、public static void main(String[] args) {
                int sum=0;
                for(int x=1;x<100;x++){
                        if(x==2){
                                System.out.print(x+" ");
                                sum+=x;       
                        }
                       
                        for (int i = 2; i <x; i++) {
                                if (x%i==0) {
                                        break;
                                }
                                if(i==x-1){
                                        System.out.print(x+" ");
                                       
                                        sum+=x;
                                }
                        }
                }
               
                System.out.println("\n"+sum);
        }

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
1060

2、public static void yangHui(int num){
                int[][] a = new int[num][num];
                for (int i = 0; i < num; i++){
                        for (int j = 0; j < num; j++) {
                                if (j < i) {
                                        a[i][j] = 1;
                                        if (j == 0) {
                                                a[i][j] = 1;
                                        } else {
                                                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
                                        }
                                } else {
                                        a[i][j] = 1;
                                }
                        }
                }
                for (int i = num-1; i >= 0; i--) {
                        for (int k = num - i; k >= 1; k--)
                                System.out.printf(" ");

                        for (int j = 0; j <= i; j++) {
                                System.out.printf("%3d ", a[i][j]);
                        }
                        System.out.printf("\n");
                }       
        }

        /**
         *
         */
        public static void main(String[] args) {
                System.out.println("请输入一个杨辉三角的行数:");
                Scanner input=new Scanner(System.in);
                int num=input.nextInt();
                yangHui(num);
        }
请输入一个杨辉三角的行数:
4
   1   3   3   1
    1   2   1
     1   1
      1
3、public static void main(String[] args) {
                int[] arr={2,5,9,10,48,95,154,31,59,69};
                for (int x = 0; x < arr.length; x++) {
                        if(arr[x]==2)
                                arr[x]=0;
                        for (int i = 2; i <arr[x]; i++) {
                                if (arr[x]%i==0){
                                       
                                     //b=false;
                                        break;
                                }
                                if(i==arr[x]-1){
                                        arr[x]=0;
                                }
                        }
                }
                String string="";
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(string);
                        System.out.println(arr[i]);
                        string+="  ";
                       
                }
        }
0
  0
    9
      10
        48
          95
            154
              0
                0
                  69
回复 使用道具 举报
{:soso_e113:}版主给力,一下加五分了,我都不好意思了。我把第二题的打印补上。第一题我漏了2了。已修正,并优化了一下。。。这次应该可以在混一提的分了。。{:soso_e113:}
第一题修正后:
  1. public class myss {
  2.         public static void main(String[] args) {
  3.                 System.out.println("100以内的素数有:");
  4.                 int i = 2, j = 0, m=2;
  5.                 int k = 0;
  6.                 label1: for (i = 2; i < 100; i++)//遍历100以内的数字,从2开始
  7.                         {
  8.                         for (m = 2;m<i;m++)//上一个这边有点复杂,这边我优化了一下,这边没有那么强的逻辑,全部整数来的。

  9.                          {
  10.                                 if (i % m == 0) //说明i不是素数
  11.                                 {
  12.                                         continue label1;
  13.                                 }
  14.                         }
  15.                         System.out.print(i + "\t");//打印出素数来
  16.                        
  17.                         k += i;//素数累加 k += i;
  18.                        
  19.                         j++;
  20.                         if (j % 5 == 0)
  21.                                 System.out.println();
  22.                        
  23.                 }
  24.                 System.out.println("100以内的素数和:"+k);
  25.         }
  26. }
复制代码
结果:

D:\11>java myss
100以内的素数有:
2       3       5       7       11
13      17      19      23      29
31      37      41      43      47
53      59      61      67      71
73      79      83      89      97
100以内的素数和:1060
第二题补充了了打印(全代码):
  1. public class Panduan2 {

  2.         public static void main(String args[]) {
  3.                 int[] ar = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };
  4.                 int[] asr = new int[ar.length];
  5.                 int su = 0;
  6.                 System.out.print("原数组是:");
  7.                 //跟据需要,先原数组输出
  8.                 for(int i = 0; i < ar.length; i++) {
  9.                         System.out.print(ar[i]+" ");
  10.                 }
  11.                 System.out.println();
  12.                 System.out.print("现在的数组: ");
  13.                 //改变过后的数组输出
  14.                 for(int i = 0; i < ar.length; i++) {
  15.                         if (IsPrime(ar[i])) {
  16.                                 //是素数,把这个素数直接给su
  17.                                 su = ar[i];
  18.                                
  19.                         }else {
  20.                                 //不是素数,就把这个数变为0,再给su
  21.                                 ar[i]= 0;
  22.                                 su = ar[i];
  23.                         }
  24.                         asr[i] =  ar[i];
  25.                         System.out.print(su+ " ");
  26.                        
  27.                 }
  28.                 System.out.println();
  29.                 for(int i = 0; i < asr.length ; i ++) {
  30.                         for(int j = 0; j<i ; j++) {
  31.                                 System.out.print(" ");
  32.                         }
  33.                         System.out.println(asr[i]);
  34.                 }
  35.         }
  36.         /*
  37.          * 判断一个数是不是素数
  38.         */
  39.         public static boolean IsPrime(int n) {
  40.                 int i;
  41.                 if (n == 2)
  42.                         return true;
  43.                 if (n % 2 == 0) // 排除n为偶数
  44.                         return false;
  45.                 //for循环 素数判断方法
  46.                 for (i = 3; i <= n / 2 + 1; i += 2)
  47.                         // n/2+1可以换为sqrt(n)+1;
  48.                         if (n % i == 0) // 所有的偶数都不是质数(排除了2),每循环一次i加2,比如4,6就不用考虑整除n了
  49.                                 return false;
  50.                 return true;
  51.         }
  52. }
复制代码
结果:

D:\11>java Panduan2
原数组是:2 5 9 10 48 95 154 31 59 69
现在的数组: 2 5 0 0 0 0 0 31 59 0
2
5
  0
   0
    0
     0
      0
       31
        59
         0

D:\11>


版主要去24期啊?我也在考虑去那期,有个考虑点就是,培训完之后要赶上找工作的高峰(至少也不该是低估),不然到年底正好人家公司都准备过年奖金啊,总结啥的,我们刚好培训完去面试就2B了。。

点评

封顶五分.... 加我QQ吧...一起为24期做准备  发表于 2013-6-23 12:31
回复 使用道具 举报
  1. /*
  2. * 需求:打印输出100以内的素数的累加和。
  3. *
  4. * 思路:
  5. * 采用双循环,外循环i从2-100;
  6. * 内循环 j从2-(i-1),写一个判断语句,如果能够被2-(i-1)中的任意一个数整除,将标记p改为1,跳出内循环;
  7. *
  8. * 如果标记p没变为0,是素数,累加;
  9. * */
  10. public class exercise {
  11.        
  12.         public static int ss()
  13.         {
  14.                 int p,sum=0;
  15.                 for(int i=2;i<=100;i++)
  16.                 {
  17.                         p=0;  //定义一个标志
  18.                         for(int j=2;j<i;j++)
  19.                         {
  20.                                 if(i%j==0) //如果能够被2-(i-1)中的任意一个数整除,将标记改为1,跳出内循环。
  21.                                 {
  22.                                         p=1;
  23.                                         break;
  24.                                 }               
  25.                         }
  26.                         if(p==0) //标志没变,是素数!
  27.                                 sum=sum+i;
  28.                 }
  29.                 return sum;
  30.         }
  31.        
  32.         public static void main(String[]args)
  33.         {
  34.                 int he=ss();//调用素数函数
  35.                 System.out.println("100以内的素数和:"+he);
  36.         }

  37. }
复制代码
  1. /*
  2. *2、 需求: 将该数组由小到大进行排列,数组中的素数全部赋值为零,并按阶梯状输出。*
  3. *
  4. *思路:
  5. * 1.用选择法排序,将数组从小到大排序;
  6. * 2.找素数
  7. *                 采用双循环,外循环i从0-arr.length;
  8. *                 内循环 j从2-arr[i],写一个判断语句,如果能够被2-arr[i]中的任意一个数整除,将标记p改为1,跳出内循环;
  9. *
  10. *                 如果标记p没变为0,是素数,将数组的值改为0 arr[i]=0;
  11. * 3.将数组打印成阶梯状
  12. *                 采用双循环,外循环i从0-arr.length,打印数组;
  13. *                 内循环j从0-i,打印空格。
  14. */
  15. class Operate{
  16.        
  17.         //选择法排序
  18.         public void sort(int[] arr)
  19.         {
  20.                 for(int i=0;i<arr.length;i++)
  21.                 {
  22.                         for(int j=i+1;j<arr.length;j++)
  23.                         {
  24.                                 if(arr[i]>arr[j])
  25.                                 {
  26.                                         int temp=arr[i];
  27.                                         arr[i]=arr[j];
  28.                                         arr[j]=temp;
  29.                                 }
  30.                         }
  31.                 }
  32.         }
  33.        
  34.         //打印输出数组
  35.         public void printArrary(int[]arr)
  36.         {
  37.                  for(int i=0;i<arr.length;i++)
  38.              {
  39.                      if(i!=arr.length-1)
  40.                              System.out.print(arr[i]+",");
  41.                      else
  42.                              System.out.print(arr[i]);
  43.              }
  44.         }
  45.        
  46.         //找出数组中的素数,并将素数所在的位置赋0
  47.         public void suShu(int[]arr)
  48.         {
  49.                 int p;
  50.                 for(int i=0;i<arr.length;i++)
  51.                 {
  52.                         p=0;
  53.                         for(int j=2;j<arr[i];j++)
  54.                         {
  55.                                 if(arr[i]%j==0)
  56.                                 {
  57.                                         p=1;
  58.                                         break;
  59.                                 }
  60.                         }
  61.                         if(p==0)
  62.                                 arr[i]=0;
  63.                 }
  64.         }
  65.        
  66.         //打印梯形
  67.         public void printTiXing(int[]arr)
  68.         {
  69.                 for(int i=0;i<arr.length;i++)
  70.                 {
  71.                         for(int k=0;k<i;k++)
  72.                         {
  73.                                 System.out.print("  ");
  74.                         }
  75.                         System.out.println(arr[i]);
  76.                 }       
  77.                
  78.                
  79.                
  80.         }
  81. }

  82. class exercise2 {
  83.        
  84.         public static void main(String[]args)
  85.         {
  86.                 int[] arr=new int[]{2,5,9,10,48,95,154,31,59,69};
  87.                
  88.                 Operate o=new Operate();
  89.                 o.sort(arr);    //调用排序方法
  90.                 System.out.print("数组改变前:");
  91.                 o.printArrary(arr);            //打印数组
  92.                
  93.                 //打印改变后的数组
  94.                 System.out.println();
  95.                 System.out.print("数组改变后:");
  96.                 o.suShu(arr);
  97.                 o.printArrary(arr);
  98.                
  99.                 //梯形输出数组
  100.                 System.out.println();
  101.                 System.out.println("输出数组:");
  102.                 o.printTiXing(arr);
  103.                                                                
  104.         }

  105. }
复制代码
  1. /*
  2. *3.需求:打印倒杨辉三角。
  3. *
  4. * 思路:
  5. * 1.每行的天头结尾都为1,所以先来一个  循环语句将数组对应位置赋为1
  6. * 2. 从第3行开始,每个数为上一行的前两个数之和(除了开头和结尾的数1。
  7. *     采用双循环 外循环i从2 - n
  8. *     内循环j从1- i*/

  9. public class YangHui {
  10.        
  11.         public static void yangHui(int[][]arr,int n)
  12.         {
  13.                
  14.                 for(int i=0;i<n;i++)
  15.                 {
  16.                         arr[i]=new int[i+1];//开辟行空间
  17.                         arr[i][0]=1;   //行头
  18.                         arr[i][i]=1;   //行尾
  19.                 }       
  20.                 for(int i=2;i<n;i++)
  21.                 {
  22.                         for(int j=1;j<i;j++)
  23.                         {
  24.                                 arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
  25.                         }
  26.                 }

  27.                 //打印倒杨辉三角
  28.                 for(int i=n-1;i>=0;i--)
  29.                 {
  30.                         for(int k=i;k<n;k++)
  31.                         {
  32.                                 System.out.print("   ");
  33.                         }
  34.                         for(int j=i;j>=0;j--)
  35.                         {
  36.                                 System.out.print(arr[i][j]+"     ");
  37.                         }
  38.                         System.out.println();
  39.                 }
  40.         }
  41.        
  42.         public static void main(String[]args)
  43.         {
  44.                 int n=8;
  45.                 int[][] arr=new int[n][];
  46.                 yangHui(arr,n);
  47.         }
  48. }
复制代码

评分

参与人数 1技术分 +5 收起 理由
夜默 + 5

查看全部评分

回复 使用道具 举报
  1. package ma.jun;

  2. public class YangHuiTriangle1 {

  3.         /**
  4.          *                                                                         输出杨辉三角
  5.          * ==========================================================================================
  6.          * 1
  7.          * 1 1
  8.          * 1 2 1
  9.          * 1 3 3 1
  10.          * 1 4 6 4 1
  11.          *                                        
  12.          * ==========================================================================================
  13.          *                                         arr[x][y]=arr[5]5]
  14.          * arr[0][0]=1;     
  15.          *
  16.          * arr[1][0]=1;         arr[1][1]=1;   
  17.          *
  18.          * arr[2][0]=1;         arr[2][1]=2; arr[2][2]=1;           
  19.          *
  20.          * arr[3][0]=1;         arr[3][1]=3; arr[3][2]=3;  arr[3][3]=1;
  21.          *
  22.          * arr[4][0]=1;  arr[4][1]=4; arr[4][2]=6;  arr[4][3]=4;  arr[4][4]=1;
  23.          *  
  24.          *
  25.          *
  26.          * --------------------------变化规律
  27.          *                 外层循环遍历条件arr.length 每个数组角标位0值为1 且数组角标位0 ; 1 不参与循环
  28.          *                 内层循环角标为y ,循环条件为<=x;值的变化如下:
  29.          *                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
  30.          * --------------------------------------------------------------------------------------
  31.          *                                         int arr[][]=new int[9][9];
  32.          *                                                         输出结果为:       
  33.          * ======================================================================================
  34.          *         1       
  35.                 1        1
  36.                 1        2        1       
  37.                 1        3        3        1       
  38.                 1        4        6        4        1       
  39.                 1        5        10        10        5        1       
  40.                 1        6        15        20        15        6        1       
  41.                 1        7        21        35        35        21        7        1       
  42.                 1        8        28        56        70        56        28        8        1
  43.                 ======================================================================================
  44.          *                                                
  45.          */
  46.         public static void main(String[] args) {
  47.                 int arr[][]=new int[9][9];
  48.                 for(int x=0;x<arr.length;x++){
  49.                         arr[x][0]=1;
  50.                                 System.out.print(arr[x][0]+"\t");
  51.                         for(int y=1;y<=x;y++){
  52.                                 if(x==0)
  53.                                         break;
  54.                                 if(x==1){
  55.                                         arr[x][y]=1;
  56.                                         System.out.print(arr[x][y]);
  57.                                         break;
  58.                                 }
  59.                                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];//防止角标越界  
  60.                                 System.out.print(arr[x][y]+"\t");                               
  61.                         }
  62.                         System.out.println();//换行一次
  63.                 }
  64.         }
  65. }
复制代码
怎么倒序啊 楼主代码发来参考下吧

点评

for循环倒序输出二维数组....  发表于 2013-6-23 12:34
回复 使用道具 举报

我回复了两题的代码和执行结果的截图,而且还在100楼以内,才加5分,:'(
回复 使用道具 举报
  1. package ma.jun;

  2. public class YangHuiTriangle1 {

  3.         /**
  4.          *                                                                         输出杨辉三角
  5.          * ==========================================================================================
  6.          * 1
  7.          * 1 1
  8.          * 1 2 1
  9.          * 1 3 3 1
  10.          * 1 4 6 4 1
  11.          *                                        
  12.          * ==========================================================================================
  13.          *                                         arr[x][y]=arr[5]5]
  14.          * arr[0][0]=1;     
  15.          *
  16.          * arr[1][0]=1;         arr[1][1]=1;   
  17.          *
  18.          * arr[2][0]=1;         arr[2][1]=2; arr[2][2]=1;           
  19.          *
  20.          * arr[3][0]=1;         arr[3][1]=3; arr[3][2]=3;  arr[3][3]=1;
  21.          *
  22.          * arr[4][0]=1;  arr[4][1]=4; arr[4][2]=6;  arr[4][3]=4;  arr[4][4]=1;
  23.          *  
  24.          *
  25.          *
  26.          * --------------------------变化规律
  27.          *                 外层循环遍历条件arr.length 每个数组角标位0值为1 且数组角标位0 ; 1 不参与循环
  28.          *                 内层循环角标为y ,循环条件为<=x;值的变化如下:
  29.          *                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
  30.          * --------------------------------------------------------------------------------------
  31.          *                                         int arr[][]=new int[9][9];
  32.          *                                                         输出结果为:       
  33.          * ======================================================================================
  34.          *         1       
  35.                 1        1
  36.                 1        2        1       
  37.                 1        3        3        1                                       
  38.                 1        4        6        4        1                                         
  39.                 1        5        10        10        5        1                               
  40.                 1        6        15        20        15        6        1       
  41.                 1        7        21        35        35        21        7        1       
  42.                 1        8        28        56        70        56        28        8        1
  43.                
  44.                                 * * * * *
  45.                                  * * * *
  46.                                   * * *
  47.                                    * *
  48.                                     *         * * * * *
  49.                                                * * * *
  50.                                                 * * *
  51.                                                  * *
  52.                                                   *
  53.                 ======================================================================================
  54.                                                                    1 8 28 56 70 56 28 8 1
  55.                                                                          1 7 21 35 35 21 7 1
  56.                                                                            1 6 15 20 15 6 1
  57.                                                                       1 5 10 10 5 1
  58.                                                                        1 4 6 4 1
  59.                                                                                1 3 3 1
  60.                                                                          1 2 1
  61.                                                                           1 1
  62.                                                                            1
  63.                                                                           修改后 运行结果这造型! ===========
  64.          */
  65.         public static void main(String[] args) {
  66.                 int arr[][]=new int[9][9];
  67.                 for(int x=0;x<arr.length;x++){
  68.                         arr[x][0]=1;
  69. //                                System.out.print(arr[x][0]+"\t");
  70.                         for(int y=1;y<=x;y++){
  71.                                 if(x==0)
  72.                                         break;
  73.                                 if(x==1){
  74.                                         arr[x][y]=1;
  75. //                                        System.out.print(arr[x][y]);
  76.                                         break;
  77.                                 }
  78.                                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];//防止角标越界  
  79. //                                System.out.print(arr[x][y]+"\t");                               
  80.                         }
  81. //                        System.out.println();//换行一次
  82.                 }
  83. //                倒序数组2维数组!!
  84.                 for(int x=arr.length-1;x>=0;x--){
  85.                         for(int w=x;w<arr.length-1;w++){
  86.                                 System.out.print(" ");
  87.                         }
  88.                         for(int y=x;y>=0;y--){
  89.                                 System.out.print(arr[x][y]+" ");
  90.                         }
  91.                         System.out.println();
  92.                 }
  93.         }
  94. }
复制代码
感谢 帮主的指点 初步结果验证正确!很想看看楼主的代码怎么写 还有解题思路,参考下!不知可不可以.
回复 使用道具 举报
majunm 发表于 2013-6-23 15:45
感谢 帮主的指点 初步结果验证正确!很想看看楼主的代码怎么写 还有解题思路,参考下!不知可不可以. ...

结果是正确的 复制时出现了点小问题D:\Documents\Pictures\result.jpg
回复 使用道具 举报
这个是结果

result.JPG (16.91 KB, 下载次数: 0)

result.JPG

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3

查看全部评分

回复 使用道具 举报
第二题
public class cx7
{
   public static void main(String[] args) {
int[] arr = {2,5,9,10,48,95,154,31,59,69} ;
selectSort(arr);//调用一个选择排序方法
for (int x=0;x<arr.length ;x++ )
{
  //定义一个boolean类型的flag,如果是素数的返回true
  boolean flag = true;
  //利用一个for循环进行判断
  int k;
  for(k=2;k<=arr[x]/2;k++)
  {
   if(arr[x]%k==0)//n模于k判断是否为0,是的话返回false
   {
    flag = false;
    break;
   }
  }
  if(flag){//判断是素数的话,进行一次赋值为0的运算
   arr[x]=0;
  }  
}
//进行输出排列,达到相应的效果
for(int x = 1;x<=9;x++){
  for(int y = 1;y<=x;y++){
   if(x==y)
   System.out.print(arr[x]);
   else
    System.out.print(" ");
  }
  System.out.println(" ");//实现换行功能
}
}
//以下为一个数组的选择排序
public static void selectSort(int arr[])
{
for (int x=0;x<arr.length ;x++ )
{
  for (int y=x+1;y<arr.length ;y++ )
  {
   if (arr[x]>arr[y])
   {
    //实现调换位置
    int temp=arr[x];
    arr[x]=arr[y];
    arr[y]=temp;
   }
  }
}
}
}

QQ图片20130623165348.jpg (5.19 KB, 下载次数: 0)

QQ图片20130623165348.jpg

评分

参与人数 1技术分 +3 收起 理由
夜默 + 3

查看全部评分

回复 使用道具 举报

  1. /**
  2. *题1
  3. */
  4. public static void main(String args[]) {
  5.                 //素数指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
  6.                
  7.                
  8.                 //创建一个素数的数组
  9.                 ArrayList<Integer> intList = new ArrayList();

  10.                 int num = 2;
  11.                 boolean isSuShu = true;
  12.                 //素数累加值
  13.                 int count = 0;
  14.                 //循环100以下的数,判断哪个是素数
  15.                 while (num <= 100) {
  16.                         for (int start = 1; start <= num; start++) {
  17.                                 //判断当前数是否为素数
  18.                                 if (num % start == 0 && start != 1 && num != start) {
  19.                                         isSuShu = false;
  20.                                         break;
  21.                                 }
  22.                         }
  23.                         //如果是素数,添加到集合中
  24.                         if (isSuShu) {
  25.                                 intList.add(num);
  26.                         }
  27.                         num++;
  28.                         isSuShu = true;
  29.                 }

  30.                 //对集合中素数遍历,得到总和
  31.                 for (int i = 0; i < intList.size(); i++) {
  32.                         count += intList.get(i);
  33.                 }
  34.                 System.out.println(count);
  35.         }


  36. [color=Red]最后的结果为:1060[/color]
复制代码
最后的结果为为:1060

评分

参与人数 1技术分 +2 收起 理由
夜默 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马