算法题押题(私密,请勿外传)
一、冒泡排序★★★
设有数组定义:int [] score = {95,90,80,85,75,50},编程实现冒泡排序算法。
int [] score = {95,90,80,85,75,50};
int sum = 0;
for (int i = 0; i < score.length-1; i++) {
for (int j = 0; j < score.length-i-1; j++) {
if(score[j]>score[j+1])
{
sum=score[j];
score[j]=score[j+1];
score[j+1]=sum;
}
}
}
for (int i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
二、斐波那契数列(不死兔问题)★★★
编程实现斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34...这个数列从第3项开始,每一项都等于前两项之和。
public static int sl( int yf) {
if(yf==1)
{
return 1;
}
if(yf==2)
{
return 1;
}
return sl(yf-1)+sl(yf-2);
}
三、水仙花数 ★★★
请用代码输出所有的“水仙花数”。提示:所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1³+5³+3³。
for (int i = 100; i <=999; i++) {
int ge = i/1%10;
int shi =i/10%10;
int bai=i/100%10;
if(i == ge*ge*ge+shi*shi*shi+bai*bai*bai)
{
System.out.println(i+"是水仙花数");
}
}
四、九九乘法表 ★★★
编程实现九九乘法表
for (int i = 1; i <=9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(i+"*"+j+"="+j*i+"\t");
}
System.out.println();
}
五、求最大值、最小值、平均分
设有数组定义:int [] score = {95,90,80,85,75,50},请计算该小组成绩的最高分、最低分、平均分。
int [] score = {95,90,80,85,75,50};
int max = score[0];
int mix = score[0];
int sum = 0;
for (int i = 0; i < score.length; i++) {
if(max<score[i])
{
max = score[i];
}
if(mix>score[i])
{
mix = score[i];
}
sum+=score[i];
}
System.out.println("最大值"+max);
System.out.println("最小值"+mix);
System.out.println("平均值"+(double)sum/score.length);
- 求和★★★
- 求1-1/2+1/3-1/4+1/5-1/6+...+1/n的和,请用代码实现。
Scanner s = new Scanner(System.in);
System.out.println("请输入您想求的数");
int n = s.nextInt();
double sum = 0;
for (int i = 1; i <= n; i++) {
if(i%2 == 0)
{
sum -= 1.0/i;
}
else
{
sum += 1.0/i;
}
}
System.out.println(he);
2、已知第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算第 2022 个质数是多少。(质数:只能被1和自身整除的数)
int count = 0;
for (int i = 2; i < 20000; i++) {
int flag = 1;
for (int j = 2; j <= i/2; j++) {
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
count ++;
if(count == 2022)
{
System.out.println("第2022个素数是:"+i);
}
}
}
3、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个序列的前30项之和。
double a = 2.0;
double b = 1.0;
double sum = 0;
for(int i=1;i<=30;i++)
{
sum += a/b;
double t = b;
b = a; //分母等于前一项分子
a = t+b; //分子等于前一项分母+分子之和
}
System.out.println("前30项和为:"+sum);