循环--习题总结

1、
在这里插入图片描述

/*
数据:用户输入的一组数使用变量number存每一个数,正数的个数num1  负数的个数num2 输入的所有数的和t 平均值a
指令:提示用户入数字、计算负数个数、计算正数个数、计算和、计算平均值、判断第一个数是不是0
解析:经过对题目分析我们需要输入数字并且不知道次数所以我们使用循环语句中的while,循环结束的
条件是输入的数为0;循环体是输入的数字和判断数字的正负,为正num+1,为负num+2;由于我们输入的第一个数我们也需要判断是不是0,所以我们使用
do-while循环
步骤:1、先提示用户输入一系列数
2、使用do-while循环输入,当遇到0时退出循环
3、判断第一个数是否是0,如果是就直接输出
4、不是0就,输出正数个数、负数个数、和、平均值
*/
import java.util.Scanner;
class ProblemEleven{public static void main(String[] args){Scanner scanner=new Scanner(System.in);//1、先提示用户输入一系列数System.out.print("Enter an integer,the input ends if it is 0:");int num1=0,num2=0;double t=0,a=0,number;//2、使用do-while循环输入,当遇到0时退出循环do{number=scanner.nextDouble();if(number>0){num1=num1+1;}else if(number<0){num2=num2+1;}t=t+number;}while(number!=0);//3、判断第一个数是否是0,如果是就直接输出if(num1==0&&num2==0){System.out.println("No number are entered except 0");}else{//4、不是0就,输出正数个数、负数个数、和、平均值System.out.println("The number of positives is "+num1);System.out.println("The number of negatives is "+num2);System.out.println("The total is "+t);System.out.printf("The average is %.2f\n",t/(num1+num2));}}
}

运行结果

Enter an integer,the input ends if it is 0:1 2 3 4 4 4 4 5 6 7 8 7 6 5 0
The number of positives is 14
The number of negatives is 0
The total is 66.0
The average is 4.71
Enter an integer,the input ends if it is 0:-1 -2 1 2 -5 -4 1 2 6 0
The number of positives is 5
The number of negatives is 4
The total is 0.0
The average is 0.00
Enter an integer,the input ends if it is 0:0
No number are entered except 0

2、在这里插入图片描述

/*
数据:用户输入的两个数n1和n2   k的值    n1和n2的最大公约数gcd
指令:提示用户输入两个数n1和n2  比较n1和n2较小的为k的值   计算n1和n2的最大公约数
步骤:1、提示用户输入n1和n2
2、比较n1和n2确定k的值
3、计算n1和n2的最大公约数gcd
4、输出gcd
*/
import java.util.Scanner;
class ProblemTwelve{public static void main(String[] args){Scanner scanner=new Scanner(System.in);//1、提示用户输入n1和n2System.out.print("请输入两个正整数:");int n1=scanner.nextInt();int n2=scanner.nextInt();//2、比较n1和n2确定k的值int k;if(n1>=n2){k=n2;}else{k=n1;}//3、计算n1和n2的最大公约数gcdint gcd=1;for(int i=k;i>=2;i--){if(n1%i==0&&n2%i==0){gcd=i;break;}}//4、输出gcdSystem.out.println(n1+" 和 "+n2+" 的最大公约数是 "+gcd);}
}

运行结果

请输入两个正整数:6 8
68 的最大公约数是 2

3、在这里插入图片描述

 /*
数据:用户输入的数number、数的最小因子a
指令:提示用户输入数number、计算数的最小因子、升序输出number的所有最小因子
分析:得到一个数之后,从2开始向上去除number第一个能整除的a即为number的第一个最小因子,以此类推直到number不能被整除为止,这样得到一系列因子是升序的不用进行排列,可以直接按顺序输出
步骤:1、提示用户输入一个数number
2、计算一系列number的因子
3、输出因子*/import java.util.Scanner;class ProblemThirteen{public static void main(String[] args){Scanner scanner=new Scanner(System.in);//1、提示用户输入一个数numberSystem.out.print("请输入一个整数:");int number=scanner.nextInt();System.out.print(number+"的最小因子序列为:");//2、计算一系列number的因子int num=number;while(true){for(int i=2;i<=number;i++){if(number%i==0){number=number/i;System.out.print(" "+i);break;}}if(num==number){break;}else{num=number;}}}}

运行结果

请输入一个整数:346
346的最小因子序列为: 2 173
请输入一个整数:120
120的最小因子序列为: 2 2 2 3 5

4、在这里插入图片描述

/*
数据:[2,1000]的所有整数、素数
指令:计算素数、输出素数
步骤:1、计算素数
2、输出素数
*/
class ProblemSeventeen{public static void main(String[] args){int a=1;//记录每行的数System.out.print("   2");for(int i=3;i<=1000;i++){int j;for(j=2;j<=i/2;j++){if(i%j==0){break;}}if(j==i/2+1){System.out.printf("%4d",i);a+=1;if(a%8==0){System.out.println();}}}}
}

运行结果

   2   3   5   7  11  13  17  1923  29  31  37  41  43  47  5359  61  67  71  73  79  83  8997 101 103 107 109 113 127 131137 139 149 151 157 163 167 173179 181 191 193 197 199 211 223227 229 233 239 241 251 257 263269 271 277 281 283 293 307 311313 317 331 337 347 349 353 359367 373 379 383 389 397 401 409419 421 431 433 439 443 449 457461 463 467 479 487 491 499 503509 521 523 541 547 557 563 569571 577 587 593 599 601 607 613617 619 631 641 643 647 653 659661 673 677 683 691 701 709 719727 733 739 743 751 757 761 769773 787 797 809 811 821 823 827829 839 853 857 859 863 877 881883 887 907 911 919 929 937 941947 953 967 971 977 983 991 997

5、
在这里插入图片描述

/*
数据:圆周率pi
指令:通过公式计算圆周率pi、输出pi的值
步骤:1、定义变量pi
2、使用for循环计算圆周率
3、输出pi的值
*/
class ProblemEighteen{public static void main(String[] args){//1、定义变量pidouble pi=0;//2、使用for循环计算圆周率for(int i=1;i<=10000;i++){pi=pi+4*(Math.pow(-1,i+1)/(2*i-1));}//3、输出pi的值System.out.println("圆周率为:"+pi);}
}

运行结果

圆周率为:3.1414926535900345

6、在这里插入图片描述

/*
数据:e   i  temp
指令:输入i 计算e  输出e 初始化e和item
步骤:1、提示用户输入i 初始化e和item
2、计算e
3、输出e
*/
import java.util.Scanner;
class ProblemNineteen{public static void main(String[] args){Scanner scanner=new Scanner(System.in);//1、提示用户输入i  初始化e和itemSystem.out.print("请输入i的值:");int i=scanner.nextInt();double e=1,item=1;//2、计算efor(int j=1;j<=i;j++){item=item*j; e=e+1/item;}//3、输出eSystem.out.println("e为:"+e);        }
}

运行结果

请输入i的值:10000
e为:2.7182818284590455
请输入i的值:20000
e为:2.7182818284590455
请输入i的值:100000
e为:2.7182818284590455

7、在这里插入图片描述

/*
数据:年份的范围[101,2100]   闰年的个数    闰年的年份
指令:计算闰年的个数  输出是闰年的年份   输出闰年的个数
步骤:1、通过for计算闰年的个数,并且输出闰年的年份
2、输出闰年的个数
*/
class ProblemTwenty{public static void main(String[] args){System.out.println("下面是[101,2100]年之间的闰年表");int a=0;//存闰年总个数//步骤:1、通过for计算闰年的个数,并且输出闰年的年份for(int i=101;i<=2100;i++){if(i%4==0&&i%100!=0||i%400==0){System.out.print(i+" ");a+=1;if(a%10==0){System.out.println();}}}//2、输出闰年的个数System.out.println("闰年总个数为:"+a);}
}

运行结果

下面是[101,2100]年之间的闰年表
104 108 112 116 120 124 128 132 136 140
144 148 152 156 160 164 168 172 176 180
184 188 192 196 204 208 212 216 220 224
228 232 236 240 244 248 252 256 260 264
268 272 276 280 284 288 292 296 304 308
312 316 320 324 328 332 336 340 344 348
352 356 360 364 368 372 376 380 384 388
392 396 400 404 408 412 416 420 424 428 
432 436 440 444 448 452 456 460 464 468
472 476 480 484 488 492 496 504 508 512
516 520 524 528 532 536 540 544 548 552
556 560 564 568 572 576 580 584 588 592
596 604 608 612 616 620 624 628 632 636
640 644 648 652 656 660 664 668 672 676
680 684 688 692 696 704 708 712 716 720
724 728 732 736 740 744 748 752 756 760
764 768 772 776 780 784 788 792 796 800
804 808 812 816 820 824 828 832 836 840 
844 848 852 856 860 864 868 872 876 880
884 888 892 896 904 908 912 916 920 924
928 932 936 940 944 948 952 956 960 964
968 972 976 980 984 988 992 996 1004 1008
1012 1016 1020 1024 1028 1032 1036 1040 1044 1048
1052 1056 1060 1064 1068 1072 1076 1080 1084 1088
1092 1096 1104 1108 1112 1116 1120 1124 1128 1132
1136 1140 1144 1148 1152 1156 1160 1164 1168 1172
1176 1180 1184 1188 1192 1196 1200 1204 1208 1212
1216 1220 1224 1228 1232 1236 1240 1244 1248 1252 
1256 1260 1264 1268 1272 1276 1280 1284 1288 1292
1296 1304 1308 1312 1316 1320 1324 1328 1332 1336
1340 1344 1348 1352 1356 1360 1364 1368 1372 1376 
1380 1384 1388 1392 1396 1404 1408 1412 1416 1420
1424 1428 1432 1436 1440 1444 1448 1452 1456 1460
1464 1468 1472 1476 1480 1484 1488 1492 1496 1504
1508 1512 1516 1520 1524 1528 1532 1536 1540 1544
1548 1552 1556 1560 1564 1568 1572 1576 1580 1584
1588 1592 1596 1600 1604 1608 1612 1616 1620 1624
1628 1632 1636 1640 1644 1648 1652 1656 1660 1664
1668 1672 1676 1680 1684 1688 1692 1696 1704 1708
1712 1716 1720 1724 1728 1732 1736 1740 1744 1748
1752 1756 1760 1764 1768 1772 1776 1780 1784 1788
1792 1796 1804 1808 1812 1816 1820 1824 1828 1832
1836 1840 1844 1848 1852 1856 1860 1864 1868 1872
1876 1880 1884 1888 1892 1896 1904 1908 1912 1916
1920 1924 1928 1932 1936 1940 1944 1948 1952 1956
1960 1964 1968 1972 1976 1980 1984 1988 1992 1996
2000 2004 2008 2012 2016 2020 2024 2028 2032 2036
2040 2044 2048 2052 2056 2060 2064 2068 2072 2076
2080 2084 2088 2092 2096
闰年总个数为:485

8、在这里插入图片描述

/*
数据:完全数的范围[1,10000],完全数
指令:输出完全数
*/
class ProblemTwentyOne{public static void main(String[] args){for(int i=1;i<=10000;i++){int sum=0;for(int j=1;j<i;j++){if(i%j==0){sum=sum+j;}}if(sum==i){System.out.printf("%8d",sum);}}}
}

运行结果

       6      28     496    8128

9、在这里插入图片描述

/*
数据:电脑随机产生的一个数字number 用户输入的一个数字getnumber  剪刀 石头 布
指令:让电脑产生随机数  判断输赢
步骤:1、提示用户输入一个数字
2、计算机随机产生一个数字
3、将两个数字进行对比,分输赢
产生随机数 Math.random() 
*/
import java.util.*;//import java.util.*   是指将java.util中的所有都拿来
class ProblemTwentyTwo{public static void main(String[] args){//1、Scanner scanner=new Scanner(System.in);int u=0;//存用户胜场数int c=0;//存电脑胜场数while(u!=2&&c!=2){System.out.print("scissor (0) rock (1) paper (2) :");int getnumber=scanner.nextInt();//2、int number=(int)(Math.random()*3);String numberStr="";String getnumberStr="";switch(number){case 0: //if number==0numberStr="剪刀"; break;case 1:// if number==1numberStr="石头";break;case 2:// if number==2numberStr="布";break;}switch(getnumber){case 0: getnumberStr="剪刀"; break;case 1:getnumberStr="石头";break;case 2:getnumberStr="布";break;}//3.if(getnumber==number){System.out.printf("用户是%s,电脑是%s,平局\n",getnumberStr,numberStr);}else if(getnumber==0&&number==2 || getnumber==1&&number==0 || getnumber==2&&number==1){System.out.printf("用户是%s,电脑是%s,用户赢\n",getnumberStr,numberStr);u+=1;}else{System.out.printf("用户是%s,电脑是%s,用户输\n",getnumberStr,numberStr);c+=1;}}}
}

运行结果

scissor (0) rock (1) paper (2) :2
用户是布,电脑是剪刀,用户输
scissor (0) rock (1) paper (2) :2
用户是布,电脑是布,平局
scissor (0) rock (1) paper (2) :2
用户是布,电脑是布,平局
scissor (0) rock (1) paper (2) :2
用户是布,电脑是布,平局
scissor (0) rock (1) paper (2) :2
用户是布,电脑是剪刀,用户输

10、
在这里插入图片描述

方法1、使用数组

/*
数据:用户输入的十进制数、转换得到的二进制数
指令:提示用户输入十进制数、转换十进制数为二进制数、输出二进制数
步骤:
1、提示用户输入十进制的数
2、将十进制数转换为二进制数
3、输出二进制数
分析:使用短除法得到的二进制是原二进制的反序,由于不清楚十进制数的大小,所以无法确定二进制的长度,不清楚应该定义多少个变量,所以使用数组
*/
import java.util.Scanner;
class ProblemTwentyThree_01{public static void main(String[] args){Scanner scanner=new Scanner(System.in);//1、提示用户输入十进制的数System.out.print("请输入一个整数:");int a=scanner.nextInt();int[] b=new int[50];int i=0;//2、将十进制数转换为二进制数while(true){b[i]=a%2;a=a/2;i=i+1;if(a==0){i=i-1;break;}}System.out.print("二进制数为:");while(true){System.out.print(b[i]);i=i-1;if(i==-1){System.out.println();break;}}}
}

运行结果

请输入一个整数:4
二进制数为:100

方法2、不使用数组

/*
12/2 6 ~ 0
6/2  3 ~ 0
3/2  1 ~ 1
1/2  0 ~ 1
1100
*/
import java.util.Scanner;
class ProblemTwentyThree_02{public static void main(String[] args){Scanner scanner=new Scanner(System.in);System.out.print("请输入一个数字:");int num=scanner.nextInt();String binStr="";while(true){binStr=num%2+binStr;//"1100"num/=2;if(num==0){break;}}System.out.println("二进制数为:"+binStr);}
}

运行结果

请输入一个整数:4
二进制数为:100

11 、

在这里插入图片描述

/*
数据:最大数max,出现次数count
指令:提示用户输入一组数 找出最大数  输出最大数和出现次数
*/
import java.util.Scanner;
class ProblemTwentyFour{public static void main(String[] args){System.out.print("请输入一行数:");Scanner scanner=new Scanner(System.in); int a=scanner.nextInt();           int max=a;int count=1;while(true){if(a==0){break;}a=scanner.nextInt();if(a>max){max=a;count=1;}else if(a==max){count+=1;}}System.out.println("最大数是:"+max+" 出现次数为: "+count);}
}

运行结果

请输入一行数:1 2 3 4 4 4 3 3 6 7 8 7 6  5 5 4 4 2 0
最大数是:8 出现次数为: 1


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部