1、求1到100能被7整除的数字和。
public class Pracice01 {
public static void main(String[] args) {
int sum=0;
for(int i=7;i<=100;i++){
if (i%7==0){
sum=sum+i;
}
}
System.out.println(sum);
}
}
程序分析:,遍历1到100的数,将能够被7整除的数相加,结果为735
2、已知某年某月某日,判断这一天是这一年的第几天?
要求:必须用到switch。
import java.util.Scanner;
public class Practice02 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入年份:");
int year=s.nextInt();
System.out.println("请输入月份:");
int month=s.nextInt();
System.out.println("请输入天数:");
int day=s.nextInt();
int allDay=0;
for (int i = 0; i < month; i++) {
switch (i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
allDay=allDay+31;
break;
case 4:
case 6:
case 9:
case 11:
allDay=allDay+30;
break;
case 2:
if(year%4==0&&year%100!=0||year%400==0){
allDay=allDay+29;
}
allDay=allDay+28;
}
}
allDay+=day;
System.out.println("今天是第"+allDay+"天");
}
}
程序分析:使用for加上过去的月份总天数,但必须要通过switch判断月份的具体天数,将过去的月份总天数与当前月天数相加得到结果。
3、计算圆周率PI=4/1-4/3+4/5-4/7+4/9-…
请问:需要经过多少次运算,可以精确到3.1415926和3.1415927之间。
public class Practice03 {
public static void main(String[] args) {
double PI=0;
int fm=1;
double fh=1;
int j=0;
while (true){
j++;
PI=PI+fh*4/fm;// 与4/fm*fh的区别,4/fm是整除后与符合h相乘,整除小数位被舍去了,结果不正确
if(PI>3.1415926&&PI<3.1415927){
break;
}
fh=-fh;
fm=fm+2;
}
System.out.println(j);
}
}
程序分析:分母不变,分子每次加2(fm=fm+2,每次循环加2),每隔一个数字符号变化(fh=-fh,每一次循环变化),设立变量j记录循环的次数,当达到题目所要求的范围时,使用break结束循环。
4、青蛙在井底,井深7米。青蛙爬井,白天上升3米,晚上降2米。
请问多少天青蛙可以出去?
public class Practice04 {
public static void main(String[] args) {
int sum=0;
int day=0;
for (int i=2;;i++){
if(i%2==0){
sum=sum+3;
day++;
}
else{
sum=sum-2;
}
if(sum==7){
break;
}
}
System.out.println(day);//5天4夜
}
}
程序分析:偶数为白天,奇数为夜晚,创建变量sum表示青蛙移动的距离,day表示天数,当sum=7时,跳出循环。
5、循环输入10个字符,问:有几个字母、几个数字,几个其他字符?
import java.util.Scanner;
public class Practice05 {
public static void main(String[] args) {
System.out.println("请输入字符");
Scanner s=new Scanner(System.in);
int a=0;
int b=0;
int q=0;
for (int i=1;i<11;i++){
char c=s.nextLine().charAt(0);
if(c>='a'&&c<='z'||c>='A'&&c<='Z'){
a++;
}else if(c>='0'&&c<='9'){
b++;
}else {
q++;
}
}
System.out.println("字母数有"+a+"个,数字数有"+b+"个,其他字符有"+q+"个");
}
}
程序分析:遍历输入的字符串,判断所属类型
6、打印九九乘法表
public class Practice06 {
public static void main(String[] args) {
for(int i=1;i<10;i++){
int ji=1;//重置内层循环的乘积,注意变量的作用域
for(int j=1;j<=i;j++){
ji=i*j;
System.out.print(j+"*"+i+"="+ji+" ");
}
System.out.println();
}
}
}
程序分析:外层循环九遍,代表九个数字,内层循环每个数字与外层循环次数相乘,J<=i避免重复计算。
7、求1+2!+3!+…+5!的和
public class Practice07 {
public static void main(String[] args) {
int sum=0;
for (int i=1;i<=5;i++){
int ji=1 ;//让j从1开始相乘,如果写在最上面,那是拿上一次ji的结果相乘了
for (int j=1;j<=i;j++){
ji*=j;
}
sum+=ji;
System.out.println(ji);
}
System.out.println(sum);
}
}
程序分析:外层循环定义相加,内存定义阶乘。
8、打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
public class Practice08 {
public static void main(String[] args) {
//打印上4行
for (int i = 1; i <=4 ; i++) {
//打印空格4-i
for (int j = 1; j <=4-i; j++) {
System.out.print(" ");
}
//打印*2i-1
for (int j = 1; j <=2*i-1 ; j++) {
System.out.print("*");
}
System.out.println();
}
//打印下三行
for (int i = 4; i >=0; i--) {
//打印空格4-i
for (int j = 1; j <=4-i; j++) {
System.out.print(" ");
}
//打印*2i-1
for (int j = 1; j <=2*i-1 ; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
程序分析:观察图形知上四行每一行的*数是这一行行数的两倍减一,且在星形前有4减行数个空格,于是定义外层循环为行数,内层两个循环分别打印星形和空格,print代表在一行输出,println代表打印完一次换行。