/*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*/
#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分!
多谢!
解决方案 »
- synchronized 同步方法不起作用
- 运行一个生成验证码的Java程序,出现了文件拒绝访问的错误。
- 一个50%的人都不知道多线程调度问题
- Hibernate如何实时更新数据库
- Java Swing的高手看过来:::::的问题: 用CardLayout 布局,但是显示不出来容器其中的组件?
- 怎样在jsp页面得到系统的日期的年和月?谢谢。。。
- 请教下MYSQL的外键的问题。
- 不知道点在哪
- java能象char[] mainstr = {sdafsdfa}; 这样初始化字符串吗?
- eclipse无法用键盘输入求解决
- 请问Math.random()随机出来的伪随机数在(0,1)上是满足什么分布的?
- 高分急求--关于哈夫曼树生成演示程序
这位仁兄,帮个忙吧,写一个也行!
求你了!我要求不高!
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);
}
我只要看一下,JAVA是怎么定义和在数组之间传值的,就OK了!
先看看基本的入门书吧!