Java编程习题
本人Java小白,欢迎各位大佬指教~
1.如果今天是星期二,问一百天后是星期几
public class Week {
public static void main(String[] args) {
//如果今天是星期二,问一百天后是星期几
int start=2;
int end=100%7+start;
System.out.printf("一百天后是星期%d",end);
}
}
运行结果
一百天后是星期4
2.读取圆柱体的底面半径和高,计算圆柱体的底面积和体积
import java.util.Scanner;
public class Cylinder {
public static void main(String[] args) {
//读取圆柱体的底面半径和高,计算圆柱体的底面积和体积
Scanner sc=new Scanner(System.in);
System.out.println("输入底面半径和高");
double radius=sc.nextDouble();
double height=sc.nextDouble();
double area=radius*radius*Math.PI;
double volume=area*height;
System.out.printf("底面积为:%6.4f",area);
System.out.printf("体积为:%6.4f",volume);
}
}
运行结果
输入底面半径和高
2 3
底面积为:12.5664体积为:37.6991
3.输出数字三角形
public class ShuziSanjiao {
public static void main(String[] args) {
//输出数字三角形
for(int i=1;i<6;i++){
for(int j=1;j<i+1;j++){
System.out.print(j);
}
System.out.println();
}
}
}
运行结果
1
12
123
1234
12345
4.随机产生10个加法问题,加数为1到15间的整数,记录正确的个数和测试时间
public class SuijishuJiafa {
public static void main(String[] args) {
//随机产生10个加法问题,加数为1到15间的整数
//记录正确的个数和测试时间
long startTime=System.nanoTime();
//记录开始时间,精确到纳秒
int count=0;
//用于记录正确的个数
for(int i=0;i<10;i++){
int num1=(int)(Math.random()*15+1);
int num2=(int)(Math.random()*15+1);
//产生1到15间的两个加数
int num3=(int)(Math.random()*30+1);
//产生1到30间的数
System.out.println(num1+"+"+num2+"="+num3);
if(num1+num2==num3){
++count;
}
}
System.out.println("正确的个数为:"+count);
long endTime=System.nanoTime();
//记录结束时间
System.out.println("测试时间为:"+(endTime-startTime));
}
}
运行结果
5+5=29
1+12=2
7+14=21
5+9=23
10+7=19
12+10=1
5+13=16
9+3=15
13+1=3
1+9=26
正确的个数为:1
测试时间为:330100
5.求e的值,精确到10^-6,e=1+1/1!+1/2!+……+1/n!
public class Qiu_E {
public static void main(String[] args) {
//求e的值,精确到10^-6
//e=1+1/1!+1/2!+……+1/n!
System.out.println(Math.E);
//标准e用于与计算结果对比
double e=0;
//初始化e
double sum=1;
int i=1;
//用于计算算式中的阶乘
boolean xh=true;
//用于控制循环
while(xh){
e+=1/sum;
sum*=i++;
//用于计算e
xh=(1/sum>=1e-6);
//如果e已精确到10^-6,则xh变为false,循环结束
}
System.out.printf("%8.6f\n",e);
//格式输出小数点后六位
}
}
运行结果
2.718281828459045
2.718282
6.判断101~200之间有多少个素数,并输出所有素数
public class SuShu {
public static void main(String[] args) {
//判断101~200之间有多少个素数,并输出所有素数
int count=0;
//用于记录有多少个素数
for(int i=101;i<201;i++){
int sum=0;
//用于记录要判断的数有多少个因数
for(int j=1;j<i+1;j++){
if(i%j==0){
sum++;
}
}
if(sum==2){
System.out.println(i+"是素数");
count++;
}
}
System.out.println("素数有"+count+"个");
}
}
运行结果
101是素数
103是素数
107是素数
109是素数
113是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数
素数有21个
7.打印1000以内所有水仙花数
public class ShuiXianHuaShu {
public static void main(String[] args) {
//打印1000以内所有水仙花数
for(int i=100;i<1000;i++){
int bai=i/100;
//取i的百位
int shi=i/10%10;
//取i的十位
int ge=i%10;
//取i的个位
if(Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge, 3)==i){
System.out.printf("%d ",i);
}
}
}
}
运行结果
153 370 371 407
8.输入一个年 月 日判断这一天是这一年的第几天
import java.util.Scanner;
public class RiQiPanDuan {
public static void main(String[] args) {
//输入一个年 月 日判断这一天是这一年的第几天
Scanner sc=new Scanner(System.in);
System.out.println("输入年份");
int year=sc.nextInt();
boolean pd=panDuan(year);
//判断它是否为闰年
System.out.println("输入月份");
int month=sc.nextInt();
//判断输入的月份是否有问题,若有则重新输入
//例如:不能输入13月
while(true){
if(month>0&&month<13){
break;
}else{
System.out.println("月份有误,重新输入");
month=sc.nextInt();
}
}
System.out.println("输入日期");
int day=sc.nextInt();
//判断输入的日期是否有误,若有则重新输入
//例如:平年的二月不能输入29日,4月不能输入31日
while(true){
if(pd){
if((month==2&&day<30)){
break;
}else if((month==1&&day<32)||(month==3&&day<32)||(month==5&&day<32)||(month==7&&day<32)||(month==8&&day<32)||(month==10&&day<32)||(month==12&&day<32)){
break;
}else if((month==4&&day<31)||(month==6&&day<31)||(month==9&&day<31)||(month==11&&day<31)){
break;
}else{
System.out.println("日期有误,重新输入");
day=sc.nextInt();
}
}else if(!pd){
if((month==2&&day<29)){
break;
}else if((month==1&&day<32)||(month==3&&day<32)||(month==5&&day<32)||(month==7&&day<32)||(month==8&&day<32)||(month==10&&day<32)||(month==12&&day<32)){
break;
}else if((month==4&&day<31)||(month==6&&day<31)||(month==9&&day<31)||(month==11&&day<31)){
break;
}else{
System.out.println("日期有误,重新输入");
day=sc.nextInt();
}
}
}
int[] run={31,29,31,30,31,30,31,31,30,31,30,31};
//用于表示闰年每个月天数
int[] pin={31,28,31,30,31,30,31,31,30,31,30,31};
//用于表示平年每月天数
int sum=0;
//记录这一年的第几天
if(pd){
for(int i=0;i<(month-1);i++){
sum+=run[i];
//加入每个月的天数
}
sum+=day;
//加入日期数
}else{
for(int i=0;i<(month-1);i++){
sum+=pin[i];
}
sum+=day;
}
System.out.println("这是这一年的第"+sum+"天");
}
public static boolean panDuan(int year){
if((year%4==0)&&(year%100!=0)||(year%400==0)){
return true;
}
return false;
}
}
运行结果
输入年份
2022
输入月份
14
月份有误,重新输入
2
输入日期
29
日期有误,重新输入
28
这是这一年的第59天