zl程序教程

您现在的位置是:首页 >  其他

当前栏目

编程入门、进阶100例(11-15)

2023-04-18 14:59:52 时间

索引

十一:比较四个数的大小

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);
		}
	}
}