1. 求任意输入的10个数的和。
import java.util.Scanner;
public class S2_1_1{
public static void main(String[] args){
int[] a = new int[10];
Scanner input = new Scanner (System.in);
System.out.println("请输入十个数(每输入一个按一次回车)");
int sum=0;
for(int i=0;i<10;i++){
a[i]= input.nextInt();
sum +=a[i];
}
System.out.println("sum:"+sum);
}
}
2.获取三个整数中的最大值(用三元运算符)。
import java.util.Scanner;
public class S2_1_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("x:");
int x = sc.nextInt();//输入为整数
System.out.println("y:");
int y = sc.nextInt();//输入为整数
System.out.println("z:");
int z = sc.nextInt();//输入为整数
System.out.println("");
int l=(x>y) ? x:y;//先随便比较两个值的大小
int max=(l>z) ? l:z;//再比较剩下的
System.out.println("max:"+max);
}
}
3.输入年份和月份,输出该年月的天数。
import java.util.Scanner;
public class S2_2_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
System.out.println(year+"年"+month+"月"+"有31天");
break;
case 4:case 6:case 9:case 11:
System.out.println(year+"年"+month+"月"+"有30天");
break;
case 2:
if(year%4==0 || (year%400==0 && year%100!=0))
System.out.println(year+"年"+month+"月"+"有29天");
else
System.out.println(year+"年"+month+"月"+"有28天");
break;
default:
System.out.println("月份输入有误");
}
sc.close();
}
}
4.键盘录入月份的值,输出对应的季节。
import java.util.Scanner;
public class S2_2_1{
public static void main(String[] args){
//1.键盘录入月份的值,输出对应的季节
int month = 0;
Scanner mt = new Scanner(System.in);
System.out.println("month: ");
month = mt.nextInt();
if(month==3 || month==4 || month==5){
System.out.println("春季");
}
else if(month==6 || month==7 || month==8){
System.out.println("夏季");
}
else if(month==9 || month==10 || month==11){
System.out.println("秋季");
}
else if(month==12 || month==1 || month==2){
System.out.println("冬季");
}
}
}
5.出租车计费问题。
• 开封市的出租车计费方式为:起步2公里内5元,2公里以上每公里收费1.3元,9公里以上每公里收费2元,燃油附加费1元。
• 编写程序,输入公里数,计算出所需的出租车费用。
import java.util.Scanner;
public class S2_2_3{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double cost=0,km=0;
System.out.println("请输入公里km:");
km = sc.nextDouble();
if(km<=2)
cost = 5;
else if(km>2 && km<=9){
cost = 5+(km-2)*1.3;
}
else if(km>9){
cost = 5+7*1.3+(km-9)*2;
}
cost += 1; //燃油费加1
System.out.println("车费:"+cost);
}
}
6.分别用do-while和for循环计算1+1/2!-1/3!+1/4!-1/5!…的前20项之和。
public class S2_3_1 {
//分别用do-while和for循环计算1+1/2!+1/3!+1/4!+…的前20项之和。
public static void main(String[] args){
double sum=0;
double a=1;//分母
double b=1;//计数
//用do-while循环
do{
sum = sum+1/a; //每次循环,分母会变成上一个数乘a+1
a = a*(b+1); //阶乘,第一次乘2、第二次乘3......
b++;
}while(b<21);
System.out.println("do-while求1+1/2!...前二十项和为:"+sum);
//用for循环
double z = 0;
for(b = 1 ; b < 21; b++){
double num = 1;
for(a = 1;a <= b; a++){
num *= a;
}
z += 1 / num;
}
System.out.println("for求1+1/2!...前二十项和为:"+z);
}
}
7.求1000以内的完全数(一个数等于它的因子之和称为完全数)。
public class S2_3_2 {
//求1000以内的完全数(一个数等于它的因子之和称为完全数)
public static void main(String[] args) {
int num=0;
for(int i=1;i <=1000;i++)
{
int sumt=0;
for(int j =1;j<i ;j++)
{ //找这个数的因子
//如果能被整除就是因子 不包括其本身
//定义一个数存因子,一个数存和sum要放这个循环外
int div=0;
if(i %j ==0)
{
div = j ;
sumt = sumt+div;
}
}
if(sumt==i )
{
System.out.println("Found 完全数:"+i );
}
}
}
}
8.微信中的一个问题:一筐鸡蛋,1个1个拿,正好拿完。
2个2个拿,还剩1个。
3个3个拿,正好拿完。
4个4个拿,还剩1个。
5个5个拿,还差1个。
6个6个拿,还剩3个。
7个7个拿,正好拿完。
8个8个拿,还剩1个。
9个9个拿,正好拿完。
问筐里最少有多少鸡蛋?
public class S2_3_3
{
public static void main(String[] args)
{
int egg=0;
//用一个循环找出
for(egg=0;;egg++){
//一个一个拿,正好拿完 (egg%1==0);
//两个两个拿,还剩一个 (egg%2==1);
//三个三个拿,正好拿完 (egg%3==0);
//四个四个拿,还剩一个 (egg%4==1);
//五个五个拿,还差一个 ((egg+1)%5==0);
//六个六个拿,还剩三个 (egg%6==3);
//七个七个拿,正好拿完 (egg%7==0);
//八个八个拿,还剩一个 (egg%8==1);
//九个九个拿,正好拿完 (egg%9==0);
if((egg%1==0) && (egg%2==1) && (egg%3==0) && (egg%4==1) && ((egg+1)%5==0) && (egg%6==3) && (egg%7==0) && (egg%8==1) && (egg%9==0)){
System.out.println("共有鸡蛋数:"+egg);
break;
}
}
}
}
9.求六边形面积,六边形面积可以通过下面公式计算(s是边长):
注:使用Math类中的方法计算tan值。
//用数学公式计算六边形的面积
import java.util.Scanner;
public class S2_5_1 {
public static void main(String[] args) {
//用户输入
Scanner input = new Scanner(System.in);
System.out.println("请输入六边形的边长:");
double s =input.nextDouble();
//判断输入数据是否合法
if(s<0)
{
System.out.println("输入数据不合法!");
System.exit(1);
}
double area =(6*s*s)/(4*Math.tan(Math.PI/6));
System.out.println("该六边形的面积为:"+area);
}
}
10.实现会员注册,要求用户名长度不小于3,密码长度不小于6,若不满足需有提示信息,提示输入有误;注册时两次输入密码必须相同(字符串)。
//会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同
import java.util.Scanner;
public class S2_5_2 {
public static void main(String[] args) {
String name;
String password;
String twicepassword;
Scanner input = new Scanner(System.in);
System.out.println("请输入姓名:");
name = input.next();
if(name.length()<3){
System.out.println("用户名长度不得小于3!");
System.out.println("请重新输入用户名:");
name = input.next();
}
System.out.println("请输入密码:");
password = input.next();
if(password.length()<6){
System.out.println("密码长度不得小于6");
System.out.println("请重新输入密码:");
password = input.next();
}
System.out.println("请再次输入密码:");
twicepassword = input.next();
if(password!=twicepassword){
System.out.println("两次密码不一致!");
System.out.println("请再次输入密码:");
twicepassword = input.next();
}
System.out.println("注册成功!!!");
}
}
11.找出两个分教最高的学生)编写程序,提示输入学生的个数、每个学生的名字及其分数,最后显示获得最高分的学生和第二高分的学生。
//输入学生个数,每个学生的名字和分数,最后找出两个分数最高的学生
import java.util.Scanner;
public class S2_5_3 {
public static void main(String[] args) {
System.out.println("请输入学生个数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num<2){
System.out.println("学生个数过少,请重新输入!");
System.exit(0); //正常退出
}
int i=0;
double[] grade_arr= new double[num];//创建成绩数组
String[] name_arr= new String[num];//创建名字数组
for(i=0;i<num;i++)
{
System.out.println("请输入第"+(i+1)+"学生的名字和分数");
String name=sc.next();
double grade= sc.nextDouble();
name_arr[i]=name;
grade_arr[i]=grade;
}
for(int j=0;j<grade_arr.length-1;j++)//将成绩从高到低排序(名字顺序随成绩变动)
{
for( i=0;i<grade_arr.length-1;i++)
{
if(grade_arr[i]<grade_arr[i+1])
{
double temp1=grade_arr[i];
grade_arr[i]=grade_arr[i+1];
grade_arr[i+1]=temp1;
String temp2=name_arr[i];
name_arr[i]=name_arr[i+1];
name_arr[i+1]=temp2;
}
}
}
if(grade_arr[0]==grade_arr[1])//判断前两名成绩是否相同
{
System.out.println(name_arr[0]+"和"+name_arr[1]+"的成绩均为 "+grade_arr[0]);
}
else
{
System.out.println("第一名同学的名字"+name_arr[0]+",他的成绩是 "+grade_arr[0]);
System.out.println("第二名同学的名字"+name_arr[1]+",他的成绩是 "+grade_arr[1]);
}
}
}
12.定义一维数组并初始化,通过键盘任意输入一个数,查找该数是否存在(结果返回下标值)
//定义一维数组并初始化,通过键盘任意输入一个数,查找该数是否存在(结果返回下标值)。
import java.util.Scanner;
public class S2_5_4 {
public static void main(String[] args) {
//初始化数组
int arr[] ={1,11,111,12,2,33,44,6};
for(int i=0;i<8;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
//键入任意一个数
System.out.println("请输入要查找的数:");
Scanner sc= new Scanner(System.in);
int num=sc.nextInt();
for(int i=0;i<8;i++){
if(arr[i] == num){
System.out.println("你所查找的数的下标为"+i);
break;
}
else{
System.out.println("未找到你要查找的数");
break;
}
}
}
}
13.编写一个程序,将二维数组a转置后存入数组b(所谓转置就是行列互换)
//编写一个程序,将二维数组a转置后存入数组b(所谓转置就是行列互换)
import java.util.Scanner;
public class S2_5_5 {
public static void main(String [] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入二维数组的行:");
int h = sc.nextInt();
System.out.println("请输入二维数组的列:");
int l = sc.nextInt();
arr(h,l);
}
public static void arr(int h,int l){
Scanner sr = new Scanner(System.in);
int[][] arrs = new int[h][l];
//遍历赋值
for (int i = 0; i < h; i++) {
for (int j = 0; j < l; j++) {
System.out.print("给第"+(i+1)+"行"+"第"+(j+1)+"列赋值:");
arrs[i][j] = sr.nextInt();
}
System.out.println();
}
//遍历展示数组
for (int i = 0; i < h; i++) {
for (int j = 0; j < l; j++) {
System.out.print(arrs[i][j]+"\t");
}
System.out.println();
}
//转置
System.out.println("数组转置后:");
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
System.out.print(arrs[j][i]+"\t");
}
System.out.println();
}
}
}