/*N的阶乘*/
/*数组初始下标为 1*/
#include"stdio.h"
#include"conio.h"
main()
{
long a[2000]={0};
int i,j,n;
a[1]=1;
scanf("%d",&n);
/*定义从1-N*/
for(i=2;i<=n;i++)
   {
   a[1]=a[1]*i;
   /*计算从数组1开始进位*/
   for(j=1;j<=i+1000;j++)      {    a[j+1]=a[j+1]*i;       if((a[j]/10)>0)
          {
          a[j+1]=a[j]/10+a[j+1];
          a[j]=a[j]%10;
          }
   }   }
/*打印*/
for(i=100;i>=1;i--)
  if(a[i]>1)
  { i=i+1;
     break;}
for(;i>=1;i--)
    printf("%d",a[i]);getch();
  }
******************************************************************************************
/*第N个数等于前二个数之和*/
/*定义数组从1开始*/
main()
{
int a[100]={0},b[100]={0},c[100]={0};
int n,i,j,x;
a[1]=1;
b[1]=1;
x=0;
clrscr();
scanf("%d",&n);
/*进入N位计算*/
for(i=1;i<=n-2;i++)
    /*每一位的加*/
    {for(j=1;j<=i+10;j++)
       {
       c[j]=a[j]+b[j]+x;
       /*X 为进位*/
       x=0;
       if(c[j]/10>0)
       {
          x=c[j]/10;
          c[j]=c[j]%10;
       }
       /*交换数值:C为N、B为N-1、A为N-2。N=(N-1)+(N-2)*/
       a[j]=b[j];
       b[j]=c[j];
       }
    }/*打印*/
for(i=50;i>=1;i--)
  if(c[i]>1)
  { i=i+1;
     break;}
for(;i>=1;i--)
    printf("%d",c[i]);getch();
}
**************************************************************************************
/*输出10以内连续数组的所有排列*/
main()
{
int n,i,j,x,s,m,z;
int a[9];
/*输入N*/
scanf("%d",&n);
for(i=1;i<=n;i++)
    a[i]=i;
/*计算N个数有N!种排列*/
s=1;
for(i=1;i<=n;i++)
   s=s*i;
/*有S种组合*/
for(i=1;i<=s;i++)
   {
/*打印*/
    for(j=1;j<=n;j++)
        printf("%d",a[j]);
    for(j=1;j<=n;j++)
        printf(" ");         /*N>N-1*/
    for(m=n;m>1;m--)
       {if(a[m]>a[m-1])         {if(m<n)
          {          for(j=m;j<=n;j++)
          for(z=j+1;z<=n;z++)
              if(a[j]>a[z])
                {x=a[j];
                a[j]=a[z];
                a[z]=x;}          for(j=m;j<=n;j++)
              if(a[m-1]<a[j])
                {x=a[m-1];
                 a[m-1]=a[j];
                 a[j]=x;
                 break;}           break;}
          else
           {x=a[m-1];
           a[m-1]=a[m];
           a[m]=x;
           break;}
          }
        }     }
getch();
}
*****************************************************************************************
/*魔方*/
#include <stdio.h>
main()

int n;
int i,x,y;
int a[100][100];
clrscr();
scanf("%d",&n);x=1,y=n/2+1;
a[x][y]=1;for(i=2;i<=n*n;i++)
  if ((x-1==0)&&(y-1==0))  /*矩阵左上角向下放数*/
      {x++;
      a[x][y]=i;
      }
  else
      {x--;                /*向斜上延伸放数*/
      if(x==0)
      x=n;
      y--;
      if(y==0)
      y=n;
      if(a[x][y]>0)
       x=x+2,y++;
      a[x][y]=i;
      }for(x=1;x<=n;x++)
   {for(y=1;y<=n;y++)    printf("%d    ",a[x][y]);      printf("\n");
    }getch();
}
*************************************************************************************
  以上的四个程序是我用C写出来的,为了加强JAVA语言熟练度,我想都用JAVA来写,可是竟是错误,所以请各位大侠帮我翻译一下,改用JAVA写出来!
  用J2SDK运行就可以,一道题25分!
多谢!

解决方案 »

  1.   

    我只要看一下,JAVA是怎么定义和在数组之间传值的,就OK了!
    这位仁兄,帮个忙吧,写一个也行!
    求你了!我要求不高!
      

  2.   

    /*N的阶乘*/
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class Recursion
    {
    public static int factorial(int num)
    {
    if (num > 0)
    if (num == 1 )
    return num;
    else
    return ( num * factorial( num -1) );
            return 0;
    }
    public static void calculate(int num)
    {
    System.out.println("Test of factorial recursive:");
    System.out.print("\n");
    System.out.println(num + "的阶乘是:" + factorial(num));
    }
    public static void main(String [] args) throws IOException
    {
    System.out.println("请输入你要计算阶乘的数字");
    String s;
    InputStreamReader ir;
    BufferedReader in;
    ir=new InputStreamReader (System.in);
    in=new BufferedReader(ir);
    s=in.readLine();
    int num = Integer.parseInt(s);
    calculate(num);
    }
      

  3.   

    回复人: herohero55(英雄) ( ) 信誉:100  2005-09-05 10:06:00  得分: 0  
     
     
       我只要看一下,JAVA是怎么定义和在数组之间传值的,就OK了!
    先看看基本的入门书吧!