循环课后题型整理(二十道)
@TOC
1、判断2-100之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到 (这个数),如果能被整除,则表明此数不是素数,反之是素数。?
//素数:只能被1和他本身整除;合数:还有其他因数。//1、任意一个数如何判断其是否为质数(素数)。/* int num=97;int count=0;for (int i = 2; i < num; i++) {if(num%i==0){//能被i整出,就是合数;count=-1;break;}}if (count!=0)//说明count未进入上面循环。{System.out.println(num+"是合数");}else System.out.println(num+"是质数");*///2、要从2-100来找,需每个数都要进行以上循环。//3、有一个质数产生,计数器+1,同时打印。//法一:int count=0;for (int num = 2; num <=100; num++) {int flag=0;//判断是否合数的标志for (int i = 2; i < num; i++) //2到他本身,本身不需要判断{if (num%i==0){//代表是合数flag=1;break;}}if (flag!=0){//是合数}else {count++;System.out.println("质数为:"+num);}}System.out.println("有"+count+"质数");//法二:/* int j;int count=0;for (int i=2;i<=100;i++){for (j=2;j<=i;j++){if (i%j==0){break;}}if (i==j) {count++;System.out.println(i);}}System.out.println("2-100间有"+count+"个素数");*/
2、 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999的数,每个数分解出个位,十位,百位。
//判断一个数是否是水仙花数://1、去除该三位数的各位数字//2、对这3个数字求立方//3、对立方的结果求和,与之比较/*int num=153;int a=num/100;int b=num/10%10;int c=num%10;int sum=a*a*a+b*b*b+c*c*c;if(num==sum){System.out.println(num+"是水仙花数");}*/for (int i=100;i<1000;i++){int a=i/100,b=i/10%10,c=i%10;if (i==a*a*a+b*b*b+c*c*c){System.out.println(i);}}
3、将一个正整数分解质因数。例如:输入90,打印出90=233*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
/* int num=90;System.out.print(num+"=");num/=2;System.out.print(2);num/=3;System.out.print("*"+3);num/=5;System.out.print("*"+5);if (num==1){}*///法一:Scanner sc=new Scanner(System.in);System.out.println("请输入一个正整数:");int num=sc.nextInt();System.out.print(num+"=1");for (int i = 2; i <=num ; i++) {if (i==num){System.out.print("*"+num);break;}else {if (num%i==0){num/=i;System.out.print("*"+i);i--;}}}//法二:/*Scanner sc=new Scanner(System.in);System.out.println("请输入一个正整数:");int num=sc.nextInt();System.out.print(num+"=");for (int i=2;i<=num;i++){if (num%i==0&&num!=i){System.out.print(+i+"*");num=num/i;i--;}if (i==num){System.out.print(num);}}*/
4、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如5+55+555+5555+55555(此时共有5个数相加)。
程序分析:关键是计算出每一项的值。
//法一:Scanner sc=new Scanner(System.in);System.out.println("请输入一个10以内正整数");int a =sc.nextInt();int sum=0;int num = 0;for (int i = 1; i <=a ; i++) {num=num*10+a;sum+=num;}System.out.println(sum);//法二:/*Scanner sc = new Scanner(System.in);System.out.println("请输入一个想要被加的数:(0-9)");int a = sc.nextInt();int c = a;//将输入的初始值保存到C中以便下面使用System.out.println("请输入被加的次数:");int b = sc.nextInt();int sum = a;System.out.print("S=");for(int i=0;i<b-1;i++) {a = a*10+c;sum+=a;if(i==0)System.out.print(c+"+");if(i<b-2) {System.out.print(a+"+");}else {System.out.print(a+"=");}}System.out.println(sum);*/
5、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
//法一:for (int i = 2; i <1000 ; i++) {//求某个数的所有因数int sum=0;//每次循环初始化一次for (int j = 1; j <i ; j++) {if (i%j==0){sum+=j;}}if (i==sum){System.out.print("完数"+i);}}//法二:/* for (int i = 1; i < 1000; i++) {int sum = 0;for (int j = 1; j < i / 2 + 1; j++) {if (i % j == 0) {sum += j;if (sum == i) {System.out.print(i + " ");}}}}*/
6、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高
//法一:double height=100;double total=height;for (int i = 1; i <=10 ; i++) {height/=2;//反弹高度System.out.println("第"+i+"次反弹高度为"+height);if(i==10){break;}total+=height*2;}System.out.println("第10次落地经过"+total);//法二:/*double high = 100, sum = 0;for ( int i = 1; i <= 10; i++ ) {sum+=(i<2?high:2*high);high /= 2;}System.out.println(sum + " " + high);*/
7、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
//法一:int count=0;for (int i=1;i<=4;i++){//百位数字for(int j=1;j<=4&&j!=i;j++){//十位数字if (i==j)continue;;for (int k = 1; k <=4&&k !=i&& k!=j ; k++) {//个位if (k==i || k==j)continue;System.out.println(i+""+j+k);count++;}}}System.out.println("一共"+count+"个");//法二:/* int count = 0;for(int i=1;i<5;i++){for(int j=1;j<5;j++){for(int k=1;k<5;k++){if(i!=j&&i!=k&&j!=k){System.out.print((i*100+j*10+k)+" ");count++;if(count%5==0){System.out.println();}}}}}System.out.println();System.out.println("满足条件的数字一共有"+count+"个");*/
8、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
Scanner s = new Scanner(System.in);System.out.print("请输入该月的利润:");int I = s.nextInt();long sum = 0L;if(I <= 100000) {sum = I / 100 * 10;}else if(I < 200000) {sum = (long) (100000 / 100 * 10 + (I - 100000) / 100 * 7.5);}else if(I < 400000) {sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + (I - 200000) / 100 * 5);}else if(I < 600000) {sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + (I - 400000) / 100 * 3);}else if(I < 1000000) {sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + 200000 / 100 * 3 +(I - 600000) / 100 * 1.5);}else {sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + 200000 / 100 * 3 + 400000 / 100 * 1.5 + (I - 1000000) / 100);}System.out.println("该月发放的奖金为:" + sum);
9、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,另外由这个数的开方数自乘得到平方数,进行比较
//法一:for (int i = 0; i < 100000; i++) {//1、这个数加上100以后是完全平方数//2、这个数再加上168以后是完全平方数int num1=i+100;int num2=i+268;int temp=0;int num=0;boolean flag=false;for (int j = 1; j <400 ; j++) {if (num1==j*j){temp=j;num=num1;flag=true;}if (flag){if (num2==j*j){//System.out.println(i);System.out.println(i+"+100="+temp*temp);System.out.println(i+"+268="+num2);}}}}//法二:/* for (int i = 1; i < 1000; i++) {int m=(int) Math.sqrt((i+100));int n=(int) Math.sqrt((i+100+168));if (m*m==i+100&&n*n==i+100+168) {System.out.println("这个数是"+i);}}*/
10、 用*打印出菱形
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
for(int i=0;i<4;i++){for (int j=0;j<4-i;j++){System.out.print(" ");}for (int j=0;j<2*i+1;j++){System.out.print("*");}System.out.println();}for(int i=0;i<5;i++){for (int j=0;j<i;j++){System.out.print(" ");}for (int j=0;j<2*(5-i)-1;j++){System.out.print("*");}System.out.println();}
11、 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
int a =1;int b=2;double sum=b/(double)a; //看视频for (int i = 2; i <=20 ; ) {a=a+b;sum+=a/(double)b;i++;if (i==21){break;}b=a+b;sum+=b/(double)a;i++;}System.out.println(sum);/* int a = 2, b = 1, temp;// double a=2,b=1,temp;double sum = 0;for (int i = 1; i <= 20; i++) {// 注意此处类型转换,如果进行转换类型,将进行取整处理// 或者声明变量为 double a=2,b=1,temp;sum += (double) a / b;// sum += a/b;temp = a + b;b = a;a = temp;}System.out.println("数列的前20项之和:" + sum);System.out.println("数列的前20项之和(保留两位小数):" + String.format("%.2f", sum));*/
12、 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
Scanner sc = new Scanner(System.in);System.out.println("请录入一个不多于5位的正整数:");int num = sc.nextInt();int ge = num%10;int shi = num/10%10;int bai = num/100%10;int qian = num/1000%10;int wan=num/10000%10;int shiWan = num/100000;if(num<=0||shiWan!=0){System.out.println("您输入的数字不符合规定");}else if(wan!=0){System.out.println(num+"是五位数");System.out.println(num+"的每位数字的逆序是:"+ge+shi+bai+qian+wan);}else if(qian!=0){System.out.println(num+"是四位数");System.out.println(num+"的每位数字的逆序是:"+ge+shi+bai+qian);}else if(bai!=0){System.out.println(num+"是三位数");System.out.println(num+"的每位数字的逆序是:"+ge+shi+bai);}else if(shi!=0){System.out.println(num+"是两位数");System.out.println(num+"的每位数字的逆序是:"+ge+shi);}else {System.out.println(num+"是个位数");System.out.println(num+"的各位数字是:"+ge);}
13、 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
System.out.println("请输入一个5位数:");Scanner sc = new Scanner(System.in);int num = sc.nextInt();if (9999 < num && num < 100000) {int num1 = num/10000;int num2 = num/1000%10;int num3 = num/100%10;int num4 = num/10%10;int num5 = num%10;if(num1 == num5 && num2 == num4) {System.out.println(num+"是回文数");}else {System.out.println(num+"不是回文数。");}}else {System.out.println("输入错误:请输入一个5位数");}
14、 对10个数进行排序
int[] arr = {1, 4, 3, 6, 7, 5, 8, 10, 9, 2};for (int i = 0; i < arr.length; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {int n = arr[i];arr[i] = arr[j];arr[j] = n;}}System.out.print(arr[i] + " ");}
15、 打印出杨辉三角形(要求打印出10行如下图)
程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
//法一:int num=10;for (int i = 0; i <num ; i++) {int v=1;int a=i;for (int j = 0; j <= i; j++) {//int b=j;if (j==0) System.out.print(1+" ");else {System.out.print((v=v/j)+" ");}v*=a;a--;// b++;}System.out.println();}//法二:/* int [] [] arr = new int[10][10];for(int i = 0;i<arr.length;i++ ){ //外圈行循环,arr.length代表数组arr行的长度for(int j =0;j<=i;j++){ //内圈列循环if(j==0||j==i){ //每行第一个数与最后一个数恒等于1arr[i][j]=1;}else{ //每列第i个等于上一列的第i个数与i-1个数的和arr[i][j] = arr[i-1][j]+arr[i-1][j-1];}System.out.print(arr[i][j]+"\t"); //输出完整一行}System.out.println(); //输出完整一行后换行}*/
16、 求0—7所能组成的奇数个数。
//每个数字不重复// 各位1,3,5,7,最高位1-7除去个位,其他位0-7除去个位和最高位。//求0—7所能组成的奇数个数//组成1位数是4个。//组成2位数是6*4个。//组成3位数是6*6*4个。//组成4位数是6*6*5*4个。//组成5位数是6*6*5*4*4个。//组成6位数是6*6*5*4*3*4个。//组成7位数是6*6*5*4*3*2*4个。//组成8位数是6*6*5*4*3*2*1*4个。int total = 0;System.out.println("位数为1时:4" );for (int i = 1; i <= 8; i++) {int sum = 4;for (int j = 1; j < i; j++) {if (j == 1) {sum = sum * 6;} else {sum = sum * (8 - j);}if (j == i - 1){System.out.println("位数为" + i + "时:" + sum);}}total += sum;}System.out.println("0—7所能组成的奇数个数为:"+total);
17、 打印直角三角形
int i = 0;while ( i < 5 ) {for (int j = 0; j < i+1; j++) {System.out.print("* ");}i++;System.out.println();}//直角在左下/* for (int i=0;i<=5;i++){for (int j=0;j<5-i;j++){System.out.print("* ");}System.out.println();}//直角在左上*//* for (int i = 0; i < 5; i++) {for (int j = 0; j < 5-i; j++) {System.out.print(" ");}for (int j = 0; j <i+1; j++) {System.out.print("* ");}System.out.println();}//直角在右下角*//* for (int i = 0; i <5; i++) {for (int j = 0; j <=i-1; j++) {System.out.print(" ");}for (int j=0;j<5-i;j++){System.out.print(" *");}System.out.println();}//直角在右上角*//* for(int i=0;i<5;i++){for (int j=0;j<5-i;j++){System.out.print(" ");}for (int j=0;j<i;j++){System.out.print("*");}for (int j=0;j<i;j++){System.out.print("*");}System.out.println();}//等腰三角形*//* for(int i=0;i<5;i++){for (int j=0;j<4-i;j++){System.out.print(" ");}for (int j=0;j<2*i+1;j++){System.out.print("*");}System.out.println();}//等腰三角形*/
18、 冒泡排序法
程序分析:01.外层循环N-1 (N:数的个数)
02.内层循环N-1-i (i:比较的轮数,外层循环的变量)
03.两两相比 小靠前!必须进行等量转换!互换位置!
/*冒泡排序法思路1:外层循环:控制它要走几次。
假设你有5个数,那就要走4次,最后一次不用走,最后那个数已经在它位置了所以就要length-1次。
2:内层循环:控制逐一比较,如果发现前一个数比后一个数大,则交换。
注意!因为越比较长度就越小了,所以长度要length-1-i。
————————————————
版权声明:本文为CSDN博主「神经大条蕾弟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_34394641/article/details/72849661*/
// TODO Auto-generated method stubint arr [ ] ={1,6,0,-1,9};int temp=0;//中间值//-------冒泡排序法//外层循环,它决定一共走几趟for(int i = 0;i<arr.length-1;i++){//内层循环,开始逐个比较//如果我们发现前一个数比后一个数大,则交换for(int j=0;j<arr.length-1-i;j++){if (arr[j]>arr[j+1]) {//换位temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}//输出结果for(int i = 0;i<arr.length;i++){System.out.print(arr[i]);}
19、 有3名顾客去商场购物,每人买3件商品商品单价300元以上的商品享受8折优惠请统计每人享受打折优惠的商品的数量
//保存顾客打折的商品数量int count=0;double price=0;Scanner scanner=new Scanner(System.in);
/*** 外层循环控制顾客的数量*/for (int i =1; i <=3; i++) {System.out.println("请输入第"+i+"名顾客购买的商品价格");for (int j =1; j <=3; j++) {/*** 内层循环控制价格*/price=scanner.nextDouble();if (price<300) {continue;}count++;}System.out.println("第"+i+"名顾客打折的商品数量"+count);count++;}
20、 打印梯形
for(int i=1;i<5;i++){for (int j=0;j<4-i;j++){System.out.print(" ");}for (int j=0;j<2*i+1;j++){System.out.print("*");}System.out.println();}//等腰梯形/*for(int i=3;i<=9;i++){for (int j=1;j<=i;j++){System.out.print("*");}System.out.println();//上3下9直角梯形}*/
循环课后题型整理(二十道)相关推荐
- 伟人必须回答的(二十道问题)
二十道问题如果你喜欢写东西的话,尝试完成下面这个简单的自我测试问卷. 这份问卷是由职业指导专家詹姆斯··戈尼亚()提出的.詹姆斯是年在美国在线()上推广在线职业指导的先行者.下面,请依次写下每一道题的 ...
- 【两万字】面试官:听说你很懂集合源码,接我二十道问题!
问题一:看到这个图,你会想到什么? (PS:截图自<编程思想>) 答: 这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这 ...
- 二十道面试题成都至少16k
面试题: HashMap底层实现原理,红黑树,B+树,B树的结构原理,volatile关键字,CAS(比较与交换)实现原理 Spring的AOP和IOC是什么?使用场景有哪些?Spring事务,事务的 ...
- PythonNOJ习题前二十道(西北工业大学cpSkill实验平台)
第一题 输出Hello World print("Hello World") 第二题 输入两个整数A.B,输出它们的和 a = int(input()) b = int(input ...
- 小甲鱼python笔记_小甲鱼《零基础学习Python》课后笔记(二十九):文件——一个任务...
动动手 0.编写一个程序,接受用户的输入并保存为新的文件,程序实现如图: 代码如下:f_name = input('请输入文件名:') f = open(f_name, 'wt') print(&qu ...
- 小甲鱼python的课后题好难_小甲鱼《零基础学习Python》课后笔记(二十六):字典——当索引不好用时2...
测试题 0.Python的字典是否支持一键(Key)多值(Value)? 不支持.对相同的键赋值会覆盖原来的值.>>> dict2 = {1:'one',1:'two',3:'thr ...
- 宇轩网络面试题目PHP,二十道接地气的php面试题,让你直接通过面试!就此奉上~...
1.echo count("abc"); 输出什么? 答:"1"count - 计算数组中的单元数目或对象中的属性个数int count ( mixed var ...
- 小甲鱼《零基础学习Python》课后笔记(二十八):文件——因为懂你,所以永恒
测试题 0.下边只有一种方式不能打开文件,请问是哪一种,为什么? f = open('E:/test.txt','w') # A f = open('E:\test.txt','w') # B f = ...
- Java编程基础测题(二十道)
1.假设有如下程序: public class Demo { public static void main(String args[]) { int num = 2147483647 ; num + ...
最新文章
- centos 安装jdk
- 简单描述DDL、DCL、DML
- IdentityServer4【QuickStart】之使用asp.net core Identity
- Finished yeah!
- 集美大学诚毅学院计算机科学与技术学费,集美大学诚毅学院计算机科学与技术专业介绍...
- C#中反射的使用(How to use reflect in CSharp)(3)Emit的使用
- c# 指定打开某个路径下的CMD_Node.js 环境在 Windows 系统下安装与搭建教程
- 《Windows 8 权威指南》——2.10 几招解决Windows 8 Metro应用打不开的问题
- 娇小可人女友9号 4K无反相机松下GF9评测
- less文件转换为css文件
- Scratch游戏设计——愤怒的小鸟
- Unity 接入有道智云AI - 文档翻译
- 独立开发一款简单的安卓app
- android模拟器中关闭应用进程
- 【警告】扣扣热键你了解多少
- 华米 Amazfit 跃我 GTR 4和GTS 4的区别
- photoshop 2019 mac版 可支持最新M1芯片处理器
- PHP合并多个PDF文件
- 无数据 无网络view
- 程序员成功之路 ——The road ahead for programmer(演讲稿)(转)
热门文章
- ubuntu 18.04 nautilus无法显示图片、视频文件的缩略图(预览)
- CSS的三大布局方式(流式布局,浮动布局和层布局)
- vue3 TS防抖函数
- python实现获取计算机硬件信息并写入excel
- JPG格式图片怎么弄?可以试试这些途径
- 小蒜给了你一个整数,要求从个位开始分离出它的每一位数字。输入格式输入一个整数,整数在 11 到 10^810 8 之间。输出格式从个位开始按照从低位到高位的顺序依次输出每一位数字。
- 多起数据泄密事件再次聚焦企业内部威胁
- C中按任意键继续的方式和理解
- Android Studio ADB5037端口被vschost.exe占用
- Oracle——存储过程 procedure 的创建