for循环练习题
- 1. 在中国历法中有12生肖年份,2019年是乙亥猪年,请从控制台输出1949年(包含) 到2019年(包含)中所有是猪年的年份
- 2.计算出1~100之间的偶数和,并把结果在控制台输出
- 3.在控制台打印出一个四行五列的长方形,用*表示
- 4.在控制台打印出一个五行的三角形
- 5.运用break结束当前的循环,计算1,2,3,4,5这一组数据,但要求只计算前三个数的和
- 6.运用continue跳过当前的循环,计算1,2,3,4,5这一组数据,但要求只计算1,2,3,5的和
- 7.鸡兔共35只,共94只脚,那么鸡和兔各几只?
- 8.求出100-1000之间所有符合水仙花数条件的数
- 9.打印乘法口诀表
- 10.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如5+55+555+5555+55555(此时共有5个数相加),几个数相加有键盘控制.
- 11.打印两个数之间的素数
- 12.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输 入,最多输入三次。三次均错,则提示退出程序 .
- 13.求两个整数的最大公约数.
文章介绍:
本篇文章会给大家不定期的更新一些关于For循环的经典例题,每一道题都有注释和解析,是属于Java方面的,如果大家需要C语言的代码,则可以去代换,因为代码的主体基本一样,只需要更改一下格式就可以了.
for循环的介绍:
For循环结构是由四部分组成的:初始变量、循环条件、变量的变化和循环的语句块。
基本语法:
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
表达式2: 循环条件,满则循环继续,否则循环结束
表达式3: 循环变量更新方式
表达式4: 循环的语句块
在执行for循环的时候:
首先执行表达式1,完成某一变量的初始化工作;
下一步判断表达式2的值,为true,进入循环体,false的话跳出循环;
执行完2后紧接着执行表达式3,
这部分通常是增加或者减少循环控制变量的一个表达式,这样第一轮就结束了.
第二轮循环从表达式2开始.若为true则进入循环体,为false跳出循环.
1. 在中国历法中有12生肖年份,2019年是乙亥猪年,请从控制台输出1949年(包含) 到2019年(包含)中所有是猪年的年份
public class demo01PigYear {
//已知2019年是猪年,那么2019减去某年份的值对12取模,若结果为0,
//那么此年份都是猪年,直接输出就行
public static void main(String[] args) {
int pig=2019; //定义2019年是猪年
for (int i = 1949 ; i <=2019; i++) {
if ((pig-i)%12==0){
System.out.println(i+"年是猪年!");
}
}
}
}
2.计算出1~100之间的偶数和,并把结果在控制台输出
public class demo02EvenSum {
public static void main(String[] args) {
//先将sum的初始值设为0.
int sum=0;
for (int i = 1; i <=100 ; i++) {
//如果i%2==0,则说明i是偶数
if (i%2==0){//如果求奇数的和时,将0改为1就行
//sum=sum+i;sum的值每次都会更新,实现累加的效果
sum+=i;
}
}
System.out.println("1~100之间偶数的和为:"+sum);
}
}
3.在控制台打印出一个四行五列的长方形,用*表示
public class demo03RectanglePrint {
//此题用一个for循环的嵌套就可以轻松解决了.
public static void main(String[] args) {
//第一个for表示行,第二个for表示列
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
/*此处不要用println,println默认换行.
用换行以后,这一行就不能整齐排列了
本来是:*****
结果是:*
*
*
*
*
*/
System.out.print("*");
}
System.out.println();
}
}
}
4.在控制台打印出一个五行的三角形
public class demo04TrianglePrint {
/*
用一个for循环的嵌套就行.第一行一个*,第二行两个*,依次类推
*
**
***
****
*****
*/
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");//此处也不用换行
}
System.out.println();
}
}
}
5.运用break结束当前的循环,计算1,2,3,4,5这一组数据,但要求只计算前三个数的和
public class demo05JavaBreak {
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <= 5; i++) {
sum+=i;
//当i=3时,直接结束循环,此时的值为1+2+3=6
if (i==3){
break;
}
}
System.out.println("前三个数的和为:"+sum);
}
}
6.运用continue跳过当前的循环,计算1,2,3,4,5这一组数据,但要求只计算1,2,3,5的和
public class demo06JavaContinue {
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <= 5; i++) {
//当i=4时,跳出当前循环,不执行sum+=i;进行下一次循环.
//则可以实现1+2+3+5=11
if (i==4){
continue;
}
sum+=i;
}
System.out.println("sum="+sum);
}
}
7.鸡兔共35只,共94只脚,那么鸡和兔各几只?
public class demo07SameCage {
public static void main(String[] args) {
//i表示鸡,j表示兔
for (int i = 0; i <= 35; i++) {
//让鸡的数量从0开始增加,兔的数量从35依次递减
for (int j = 35; j >= 0 ; j--) {
//if为限制条件,脚共有94只,鸡兔的总数为35只
//当两个条件都满足时,输出鸡兔的数量.
if ((i*2+j*4)==94 && (i+j)==35){
System.out.println("鸡:"+i+" 兔:"+j);
}
}
}
}
}
8.求出100-1000之间所有符合水仙花数条件的数
所谓的"水仙花数"是指一个三位数其各位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:1^3 + 5^3 + 3^3=153.
public class demo08Daffodil {
public static void main(String[] args) {
//先定义整型变量
int a=0;
int b=0;
int c=0;
System.out.println("水仙花数为:");
//循环遍历100~1000之内的符合条件的数
for (i= 100; i < 1000; i++)
{
a = i / 100; //求出三位数的百位
b = (i - a * 100) / 10; //求出三位数的十位
c = i % 10; //求出三位数的个位
//判断是否为水仙花数的条件
if (a * a * a+ b * b * b +c * c * c == i)
{
System.out.print(i+" ");
}
}
}
}
9.打印乘法口诀表
//此处要导入Scanner包.
import java.util.Scanner;
public class Multiplication {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//由键盘输入数字,来定义乘法表是N*N的
int n=sc.nextInt();
System.out.println("该乘法表是"+n+"*"+n+"的");
for (int i=1;i<=n;i++){
for (int j=1;j<=i;j++){
//%-2d*%2d=%-3d 让数与数直接有间隙并且左对齐
//看起来更舒服清除一点.
System.out.printf("%-2d*%2d=%-3d ",i,j, i * j);
}
System.out.println();
}
}
}
10.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如5+55+555+5555+55555(此时共有5个数相加),几个数相加有键盘控制.
import java.util.Scanner;
public class demo10NumSum {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("num个数字相加,num为:");
//键盘输入数字,由num接收
int num=sc.nextInt();
System.out.println("你希望a是:");
//键盘输入数字,由a接收.
int a= sc.nextInt();
//将和初始化为0
int sum=0;
//everyNum变量,表示式子中每一项的数.
int everyNum=0;
for (int i = 0; i < num; i++) {
/*
Math.pow(double a,double b)是求指数的方法
a表示底数,i表示指数.
因为Math.pow(double a,double b)是double类型的,
所以要强制转换为int类型的
假设a=2,num=3;
则式子中第一项为:2
第二项为:2+2*10=22;
第三项为:22+2*100=222;
*/
everyNum+=(int)(a*Math.pow(10,i));
System.out.print(everyNum);
/*
如果把+放到System.out.print(everyNum);
里面,那么式子的最后一项就为:
2+22+222+ ,最后一项后面就会跟一个+
所以我用一个if语句去把+加进去
当刚好等于最后一项时,不进if语句,
实现了将最后一项后的 + 删除的功能.
在else语句里输出 = ,将其添加到式子中最后一项的后面
因此2+22+222+ 就变成了2+22+222=
*/
if (i<num-1){
//注意,此处不用换行
System.out.print("+");
}
else{
//注意,此处不用换行
System.out.print("=");
}
//sum求和.
sum+=everyNum;
}
System.out.println(sum);
}
}
11.打印两个数之间的素数
import java.util.Scanner;
public class demo11PrimePrint {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入起始数字:");
int begin= sc.nextInt();
System.out.println("请输入末尾数字:");
int end=sc.nextInt();
//先定义一个count变量,后面有用.
int count=1;
//先进行判断,不满足条件的话,当前程序结束.
if (begin>=end||begin<2||end<2) {
System.out.println("输入错误,请重新启动该程序:");
}else{
for (int i = begin; i <= end ; i++) {
for (int j=2;j<end+1;j++){
//素数判断,满足该条件说明此数不是素数,break结束循环
if (i%j==0 && i!=j){
break;
}
//满足该条件,说明为素数.
else if(j==i) {
//%-3d 设置数之间的间距,并设置为左对齐
System.out.printf("%-3d ",j);
//count变量,起到换行的作用,每十个数换一行,
//为了看起来更加的清楚.
if (count%10==0){
System.out.println();
}
count++;
}
}
}
}
}
}
12.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输 入,最多输入三次。三次均错,则提示退出程序 .
import java.util.Scanner;
public class demo12PassWord {
public static void main(String[] args) {
System.out.println("请输入密码:");
//此密码为登录密码,用来和你后面的输入的密码进行比较.
String password1="wangzhe";
Scanner sc=new Scanner(System.in);
//定义次数为3次.
int times=3;
for (int i=0;i<3;i++){
//password2接收键盘输入的密码
String password2=sc.next();
//键盘输入的密码和原来的密码进行比较,如果相同,输出"输入正确!"
if (password2.equals(password1)){
System.out.println("输入正确!");
//break结束循环
break;
}else{
//如果密码不一样,times--,
times--;
System.out.println("输入有误,请重新输入,并且您还有"+times+"次机会!");
}
}
//当times=0的时候,证明可以输入的次数已经用完了.
if (times==0){
System.out.println("次数用完,退出系统!");
sc.close();
}
}
}
13.求两个整数的最大公约数.
import java.util.Scanner;
public class demo13MaxGongYue {
public static void main(String[] args) {
//定义一个中间变量.
int c;
System.out.println("请输入两个数:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
//判断大小,时刻保证a<b.在下面的for循环里面有用.
if (a > b)
{
c = a;
a = b;
b = c;
}
//由最大的数依次递减,如果刚好满足条件,此时肯定是最大的公约数.
/*
例如:2,20,由最大的数开始依次递减,2,4,10都满足条件,
但是是由最大的往下依次递减的,所以等于10的时候,
刚好满足条件,break结束循环,直接输出10,不需要再往下判断了.
*/
for (int i = b; i > 0; i--) {
//如果同时满足这个条件,则说明此刻的i是他们的最大公约数.
if (a % i == 0 && b % i == 0)
{
System.out.println("最大公约数为:"+i);
break;
}
}
}
}