4道JAVA题目,一个20分!!!

1. 从键盘输入10个数,将其倒序输出。
2. 从键盘输入10个数,将其按从大到小的顺序输出。
3. Fibonacci数列的第一项是0,第二项是1,以后各项都是前两项的和,编写程序求第N项的值。
4. 编写程序输出:1+1/2!+1/3!+……+1/10!的结果

package fromJune;

import java.util.Arrays;
import java.util.Scanner;

public class Baidu1 {
//从键盘输入10个数,将其倒序输出
public void demo1()
{
Scanner scan=new Scanner(System.in);
int[] arr=new int[10];
for(int i=0;i<arr.length;i++)
{
arr[i]=scan.nextInt();
}
//输出
for(int i=9;i>=0;i--)
{
System.out.print(arr[i]);
}
}
//从键盘输入10个数,将其按从大到小的顺序输出。
public void demo2()
{
Scanner scan=new Scanner(System.in);
int[] arr=new int[10];
//输入
for(int i=0;i<arr.length;i++)
{
arr[i]=scan.nextInt();
}
//排序
Arrays.sort(arr);
//输出,因为上面的排序是从小到大的,所以输出反过来输出就是从大到小
for(int i=9;i>=0;i--)
{
System.out.print(arr[i]);
}
}
//Fibonacci数列的第一项是0,第二项是1,以后各项都是前两项的和,编写程序求第N项的值
//返回值就是第N项的值
public int demo3(int n)
{
if(n==1||n==2)
return n;
return demo3(n-1)+demo3(n-2);
}
//编写程序输出:1+1/2!+1/3!+……+1/10!的结果
public void demo4()
{
int fenzi=0,fenmu=0;
for(int i=1;i<=10;i++)
{
fenzi+=zhuanhua(i);
if(i==1)
fenmu=fenzi;
}
//此时的结果是fenzi/10!,还要做的就是简化
int gongyue=gongyue(fenzi, fenmu);
fenzi=fenzi/gongyue;
fenmu=fenmu/gongyue;
System.out.println(fenzi+"/"+fenmu);
}
//把分母全部转化成10!,然后分子都加起来
public int zhuanhua(int n)
{
int temp=1;
for(int i=n;i<=10;i++)
temp=temp*i;
return temp;
}
//求两个数的最大公约数来简化结果
public int gongyue(int m,int n)
{
int r=m%n;
int temp=1;

while(r!=0)
{temp=r;
m=n;
n=r;
r=m%n;
}
return temp;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-20
public static void main(String args[]){
print(); //1
sort(); //2
System.out.println(fib(2)); //3
System.out.println(fun(10)); //4
}
/*1 从键盘输入10个数,将其倒序输出。*/
static void print(){
int[] arr =new int[10];
for(int i=0;i<10;i++){
Scanner in=new Scanner(System.in);
System.out.println("请输入repeat值:");
arr[i]= in.nextInt();
}
for(int i=9;i>=0;i--){
System.out.print(arr[i]+" ");
}
}
/*2. 从键盘输入10个数,将其按从大到小的顺序输出。*/
static void sort(){
int[] arr =new int[10];
for(int i=0;i<10;i++){
Scanner in=new Scanner(System.in);
System.out.println("请输入repeat值:");
arr[i]= in.nextInt();
}
for(int i=0;i<10;i++){
int tmp = arr[i];
for(int j=i+1;j<10;j++){
if(tmp<arr[j]){
arr[i]=arr[j];
arr[j]=tmp;
tmp = arr[i];
}
}
}

for(int i=0;i<10;i++){
System.out.print(arr[i]+" ");
}
}

/*3. Fibonacci数列的第一项是0,第二项是1,以后各项都是前两项的和,编写程序求第N项的值。*/
static int fib(int i)
{
if(i==0||i==1)
return i;
else
return fib(i-1)+fib(i-2);

}

/*4. 编写程序输出:1+1/2!+1/3!+……+1/10!的结果*/
static double fun(int i)
{
double he = 0;
for(int k=1;k<=i;k++){
double sum = 1;
for(int j=1;j<=k;j++){
sum *=j;
}
he+=1/sum;
}
return he;

}追问

能不能用更简单一点方法?同学说有几个语句我们都没学过..
主要是第一题和第二题

追答

没学过,可以自学啊,这已经是最简单了,基本上没有用到面向对象,已经违背java 原则了。
Scanner in=new Scanner(System.in); //这是java的控制太输入类,没有这个实现不从键盘输入

本回答被提问者采纳
第2个回答  2011-06-20
import java.util.Arrays;
import java.util.Scanner;

public class Dog {

public static void main(String[] args) {

question1And2(10);//第一个和第二个问题

int n = 5;
int facN = question3(n);//第三个问题
System.out.println("Fibonacci(n) = " + facN);

float result = question4();//第四个问题
System.out.println("1 + 1/2! + ... + 1/10! = " + result);

}

private static float question4() {
float sum = 0;

for(int i = 1; i <= 10; i++){
int fac = 1;
for(int j = 1; j <= i; j++){
fac = fac* j;
}

sum += 1D / fac;
}

return sum;
}

private static int question3(int n) {
if(n == 1){
return 0;
}else if(n == 2){
return 1;
}else{
return question3(n -2) + question3(n-1);
}

}

private static void question1And2(int num) {

int[] nums = new int[num];
Scanner scanner = new Scanner(System.in);
for(int i = 0; i < num; i++){
System.out.print("Please input " + (i+1) + " number:");
nums[i] = scanner.nextInt();
}

System.out.print("Revered numbers are: ");//反转后
for(int i = nums.length; i > 0; i--){
System.out.print(nums[i-1] + " ");
}

System.out.println("Soretd numbers are:");//排序后
Arrays.sort(nums);

for(int i = 0;i < num; i++){
System.out.print(nums[i] + " ");
}

}

}

----------------------测试结果
Please input 1 number:35
Please input 2 number:26
Please input 3 number:68
Please input 4 number:98
Please input 5 number:45
Please input 6 number:65
Please input 7 number:123
Please input 8 number:789
Please input 9 number:65
Please input 10 number:24
Revered numbers are: 24 65 789 123 65 45 98 68 26 35 Soretd numbers are:
24 26 35 45 65 65 68 98 123 789 Fibonacci(n) = 3
1 + 1/2! + ... + 1/10! = 1.7182816
第3个回答  2011-06-20
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class NumberTest {
static List<Integer> arr = new ArrayList<Integer>();

public static void main(String[] args) {
input();
}

/**
* 从键盘输入10个数,
*/
static void input(){
System.out.println("从键盘输入10个数,空格隔开,输入拼音字符结束");
Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
arr.add(s.nextInt());
}
System.out.println("你输入了" + arr.size() + "个数");

output("原始顺序:",arr);
output("反序:" ,reverseArray());
output("升序:" ,ascOrder());

System.out.println(fib(2));
System.out.println(fib(3));
System.out.println(fib(6));

System.out.println(polynomialSum(1));
System.out.println(polynomialSum(3));
System.out.println(polynomialSum(5));
}

/**将其倒序输出。
* @return
*/
static List<Integer> reverseArray(){
List<Integer> list = (ArrayList<Integer>)((ArrayList<Integer>)arr).clone();
Collections.reverse(list);

return list;
}

/**
* 将其按从大到小的顺序输出。
*/
static List<Integer> ascOrder(){
//不想改想原始数据的顺序
List<Integer> list = (ArrayList<Integer>)((ArrayList<Integer>)arr).clone();
Collections.sort(list);
return list;
}

static void output(String info,List<Integer> list){
System.out.print(info);
for(int n : list){
System.out.print(n + " ");
}
System.out.println();
}

static int fib(int n){
if(n == 0 || n == 1){
return 1;
}
return fib(n -1) + fib(n - 2);
}

static double polynomialSum(int n){
double s = 0d;
int item = 1;
for(int i = 1; i <= n; i++){
item *= i;
s += 1.0/item;
}
return s;
}
}
第4个回答  2011-06-20
public static void main(String[] args) {
// TODO Auto-generated method stub
InputStreamReader in =null;
try {
in=new InputStreamReader(System.in);
char[] by=new char[10];
in.read(by,0,by.length);
Arrays.sort(by); //此行为排序功能,若想从大到小输出则加入此行,否则不加( 第二题 )
for(int i=by.length-1;i>=0;i--){
if(by[i]!='\0')
System.out.print(by[i]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//可将上面的注释掉方便运行三、四题
fibonacci(); //第四题
fourQuest(); //第三题
}
public static void fibonacci(){
int n=5; //此处为N,可改变N的值最后得到相应结果
int result=0;
int a=0;
int b=1;
if(n==1){
result=a;
}else if(n==2){
result=b;
}else{
for(int i=0;i<n-2;i++){
result=a+b;
a=b;
b=result;
}
}
System.out.println(result);
}
public static void fourQuest(){
float nValue,sum=0;
for(int i=1;i<=10;i++){
nValue=1;
for(int j=1;j<=i;j++){
nValue*=j;
}
nValue=1/nValue;
sum+=nValue;
//System.out.println("1到N的阶乘分之一的和: "+sum); //此处打印可看到1-10的每个阶段的值
}
System.out.println(sum);
}