简单算法练习(一)

【1】两点距离

描述

输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离。

输入

第一行输入一个整数n(0<n<=1000),表示有n组测试数据;
随后每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

输出

对于每组输入数据,输出一行,结果保留两位小数。

样例输入

2

0 0 0 1

0 1 1 0

样例输出

1.00

1.41

package cn.ls.lanqiao;

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		float[] a = new float[n];
		for (int i = 0; i < n; i++) {
			float x1 = sc.nextFloat();
			float y1 = sc.nextFloat();
			float x2 = sc.nextFloat();
			float y2 = sc.nextFloat();
			float sum = (float) Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
			a[i] = sum;
		}
		for (int i = 0; i < a.length; i++) {
			System.out.println(new DecimalFormat("0.00").format(a[i]));
		}
	}
}

 

【2】切面条

描述

一根高筋拉面,中间切一刀,可以得到2根面条。如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。那么,连续对折10次,中间切一刀,会得到多少面条呢?

package cn.ls.lanqiao;

public class Test2 {
	public static void main(String[] args) {
		int sum = 0;
		for (int i = 1; i <= 10; i++) {
			sum = 2 * i + 1;
		}
		System.out.println(sum);
	}
}

 

3】 大小写互换

描述

现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。

输入

第一行只有一个整数m(m<=10),表示测试数据组数。
接下来的m行,每行有一个字符串(长度不超过100)。

输出

输出互换后的字符串,每组输出占一行。

样例输入

2

AcmdahSH

ACCEPTED

样例输出

aCMDAHsh

accepted

package cn.ls.lanqiao;

import java.util.Scanner;

public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		String[] o = new String[m];
		for (int i = 0; i < m; i++) {
			String ls = sc.next();
			o[i] = daXiao(ls);
		}
		for (int i = 0; i < o.length; i++) {
			System.out.println(o[i]);
		}
	}

	public static String daXiao(String ls) {
		StringBuffer a = new StringBuffer();
		for (int i = 0; i < ls.length(); i++) {
			char s = ls.charAt(i);
			if (s >= 'a' && s <= 'z') {
				char q = (char) (s - 32);
				a.append(q);
			}
			if (s >= 'A' && s <= 'Z') {
				char p = (char) (s + 32);
				a.append(p);
			}
		}
		return a.toString();
	}
}

 

【4】三羊献瑞

观察下面的加法算式:

 

      祥a 瑞b 生c 辉d

 +    三e 羊f 献g 瑞b

-----------------------

    三e 羊f 生c 瑞b 气h

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你利用计算机计算“三羊献瑞”所代表的4位数字(答案唯一),

package cn.ls.lanqiao;

public class Test4 {
	public static void main(String[] args) {
		for (int a = 0; a <= 9; a++) {
			for (int b = 0; b <= 9; b++) {
				for (int c = 0; c <= 9; c++) {
					for (int d = 0; d <= 9; d++) {
						for (int f = 0; f <= 9; f++) {
							for (int g = 0; g <= 9; g++) {
								for (int h = 0; h <= 9; h++) {
									if (a != b && a != c && a != d && a != f && a != g && a != h && b != c && b != d
											&& b != f && b != g && b != h && c != d && c != f && c != h && c != g
											&& d != f && d != g && d != h && f != g && f != h && g != h && a != 1
											&& b != 1 && c != 1 && d != 1 && f != 1 && g != 1 && h != 1) {
										int sum = a * 1000 + b * 100 + c * 10 + d;
										int sum1 = 1 * 1000 + f * 100 + g * 10 + b;
										int sum2 = 1 * 10000 + f * 1000 + c * 100 + b * 10 + h;
										if ((sum + sum1) == sum2) {
											System.out.println(1 + "" + f + g + b);
											System.out.println(2 + "--" + a + b + c + d + f + g + h);
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

 

【5】矩阵对角线之和

描述

求一个 3*3 矩阵对角线元素之和

输入

  输入一个3*3的二维数组

输出

   二维数组的两个对角线之和

样例输入

1 2 3

4 5 6

7 8 9

样例输出

15

15

package cn.ls.lanqiao;

import java.util.Scanner;

public class Test5 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] a = new int[3][3];
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				a[i][j] = sc.nextInt();
			}
		}
		int sum1 = a[0][0]+a[1][1]+a[2][2];
		int sum2 = a[0][2]+a[1][1]+a[2][0];
		System.out.println(sum1);
		System.out.println(sum2);
	}
}

 

【6】空心菱形

请设计一个程序,使它的运行结果如下:

 

package cn.ls.lanqiao;

import java.util.Scanner;

public class Test6 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			lingXing(sc.nextInt());
		}

	}

	public static void lingXing(int n) {// 根据输入的长度输出不同大小的菱形
		for (int i = 1; i <= n; i++) {
			if (i == 1) {
				for (int j = 1; j <= n - i; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
			} else {
				for (int j = 1; j <= n - i; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
				for (int j = 1; j <= 2 * (i - 1) - 1; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = n - 1; i >= 1; i--) {
			if (i == 1) {
				for (int j = 1; j <= n - i; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
			} else {
				for (int j = 1; j <= n - i; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
				for (int j = 1; j <= 2 * (i - 1) - 1; j++) {
					System.out.print(" ");
				}
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

【7】日期计算

时间限制:3000 ms | 内存限制:65535 KB

难度:1

描述

如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。

输入

第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。

输出

每组输入数据的输出占一行,输出判断出的天数n

样例输入

3

2000 4 5

2001 5 4

2010 10 24

样例输出

96

124

297

package cn.ls.lanqiao;

import java.util.Scanner;

public class Test7 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] ls = new int[n];

		for (int i = 0; i < n; i++) {
			int year = sc.nextInt();
			int month = sc.nextInt();
			int days = sc.nextInt();
			ls[i] = riQi(year, month, days);
		}
		for (int i = 0; i < n; i++) {
			System.out.println(ls[i]);
		}
	}

	public static int riQi(int year, int month, int days) {
		int[] list = { 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 };
		int count = 0;
		if (month == 1) {
			count = days;
		}
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			if (month > 1 && month < 13) {
				count = list[month - 2] + days;
			}
		} else {
			if (month > 1 && month < 13) {
				count = list[month - 2] + days - 1;
			}
		}
		return count;

	}

}

 

 

 

 

posted @ 2020-02-23 10:25  小帅学java  阅读(28)  评论(0)    收藏  举报