索引
11.1 问题描述
这是比较三个数大小的进阶版,三个数排序我们知道,由高中排列组合的知识知道,总共有六种情况,但是把每一种情况列出了虽然很稳妥,但是也是最笨的方法。但是四个数字进行排序有24种的组合。但是再一一列出就不太现实了
11.2 示例
样例输入:
3 1 5 2
样例输出:
1 2 3 5
11.3 代码实现
Java
这里我给大家提供一种思路、用数组存储我们输入的数据,然后可以用Java自带的函数进行排序,这是一种比较稳妥的方法,当然也可以用冒泡排序自己实现排序
public class Sort_4numbers {
public static void main(String[] args) {
Sort_4numbers b=new Sort_4numbers();
int a[] =new int[4];
Scanner input=new Scanner(System.in);
for(int i=0;i<a.length;i++)
a[i]=input.nextInt();
Arrays.sort(a);//对数组a进行排序
for(int j=0;j<a.length;j++)
System.out.print(a[j]+" ");//打印数组中的元素
}
}
十二、反置数
12.1 问题描述
输入一个3位数,将其逆序打印输出来,问题很好解决,只需用到短除法和求符号,把每一位数表示出来即可
12.2 示例
样例输入:100
样例输出:001
样例输入:123
样例输出:321
12.3 代码实现
python3
a = int(input())
print("%d%d%d"%(a%10,a/10%10,a/100))
java
import java.util.Scanner;
/**
* 输入一个数字,将其逆序打印出来
* */
public class Fanzhidata {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int a=input.nextInt();//输入一个整数
System.out.println(a%10+""+a/10%10+""+a/100);
}
}
十三、输入某年,某月、某日,判断日期
13.1 问题描述
输入,某一年,某一月,某一日,判断这一天是这一年中第多少天
思路:这种题有就两种情况,闰年和平年,平年正常累加即可,闰年只要在二月份加一天即可
13.2 示例
样例输入:2014 3 4
样例输出:63
样例输入:2000 3 1
样例输出:61
13.3 代码实现
Java实现
import java.util.Scanner;
//计算该年的第几天
public class Main {
static int[] days= {31,28,31,30,31,30,31,31,30,31,30,31};//每个月份的天数
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int year=input.nextInt();
int month=input.nextInt();
int day=input.nextInt();
Leap(year);//判断输入的年份是否为闰年
int numDay=0;
for (int i = 0; i < month-1; i++) {
numDay+=days[i];
}
System.out.println(numDay+day);//打印月份对应的天数,和最后有输入的天数
}
public static int Leap(int year) {//判断闰年的函数,如果是闰年,将二月份改为29天
if(year%400==0 || (year%100!=0 &&year%4==0)) {
return days[1]=29;//将闰年中的二月份的日期改成29天
}else
return year;
}
}
python
使用datetime函数可以极大的简化
import datetime
def getDay_Num():
print("请输入年月份,中间空格间隔开")
year, month, day = map (int, input().split())
date1=datetime.date(year=int(year),month=int(month),day=int(day))
date2=datetime.date(year=int(year),month=1,day=1)
return ((date1-date2).days+1)
if __name__ == '__main__':
print(getDay_Num())
十四、后天
14.1 问题描述
这道题是输入相应的数字,输出对应的星期的一个提高版。也就是说,我们输入4(代表星期四),输出 星期六
14.2 示例
样例输入:6
样例输出:星期一
14.3 代码实现
java
import java.util.Scanner;
public class TheDayAfterTommorow {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String[] day= {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
int num=input.nextInt();
if(num==6) {
System.out.println(day[0]);
}else if(num==7) {
System.out.println(day[1]);
}else {
System.out.println(day[num+1]);
}
}
}
十五、斐波那列问题
15.1 问题描述
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…
其实我们仔细观察可以发现,前面两个数之和等于第三个数
化成递推公式: a[n]=a[n-1]+a[n-2]
现有如下要求,输入一个数字,代表月份,表示当前月份有多少兔子,这个题用递归很好解决,如果有不懂递归的同学,可以看这篇文章—>递归讲解(C语言版)
15.2 示例
样例输入:3
样例输出:2
15.3 代码实现
注意,数据会越算越大,注意范围
java
import java.util.Scanner;
public class Program1 {
//斐波那列数列
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int month=input.nextInt();//表示你要输入的月份
System.out.println(fac(month));
}
public static int fac(int n) {
if(n==1 || n==2) {
return 1;
}else {
return fac(n-1)+fac(n-2);
}
}
}