• 控制结构练习题


    控制结构练习题

    题目1

    某人有100000元,每经过一次路口,需要交费,规则如下:

    当现金> 50000时,每次交5% ;

    当现金<=50000时,每次交1000

    编程计算该人经过多少次路口,要求:使用 while break 方式完成。

    while 基本语法

    循环变量初始化;
    while (循环条件){
        循环体(语句);
        循环变量迭代;
    }

    while流程图:

    代码实现:

    1. double money=100000;
    2. int count=0;//累积的路口
    3. while (true){
    4. if (money>50000){
    5. // money=money-money*0.05;这行代码的写法等价于下面的写法
    6. money*=0.95;
    7. count++;
    8. }else if (money<1000){
    9. money-=1000;
    10. count++;
    11. }else {
    12. break;
    13. }
    14. }
    15. System.out.println("100000可以过"+count+"路口……剩下"+money);

    结果:

    题目2

    实现判断 一个整数,属于哪个范围:大于0;小于0;等于0

     思路分析:

    定义int n=22;使用 if …… else if ……else  即可.

     代码实现:

    1. Scanner myScanner=new Scanner(System.in);
    2. int n = 22;
    3. System.out.println("请输入一个整数");
    4. n=myScanner.nextInt();
    5. if (n>0){
    6. System.out.println(n+"属于大于0的范围");
    7. }else if (n<=0){
    8. System.out.println(n+"属于小于或等于0的范围");
    9. }else {
    10. System.out.println("退出程序……");
    11. }

    结果:

    第一种情况

    第二种情况

     

    题目 3:

     判断一个年份是否为闰年

    1.年份能被4整除,但不能被100整除 2.能被400整除

    思路分析:
    1.定义:int year 保存年
    2. 年份能被4整除,但不能被100整除==》year%4==0year%100!=0
     3.能被400整除=》year%400==0
      4.上面的2和3是或的关系
    

    代码实现:

    1. int year=2024;
    2. if (year%4==0&&year%100!=0||year%400==0){
    3. System.out.println("这一年是闰年");
    4. }else {
    5. System.out.println("这一年不是闰年");
    6. }

    结果:
     

    题目 4:

    判断一个 整数是否是水仙花数,所谓水仙花数是指一个3位数,其个位数上数字立方和等于其本身。

     例如:153:=1*1*1+3*3*3+5*5*5

    思路分析:
    1. 比如: int n=153;
    2. 先得到 n的百位 ,十位,个位的数字,使用if 判断它们的立方和是否相等
    3. n 的百位=n/100
    4. n的十位=n%100/10
    5. n的个位=n%10
    6, 判断即可

    代码实现:

    1. int n =154;
    2. int n1=n/100;
    3. int n2=n%100/10;
    4. int n3=n%10;
    5. if (n1*n1*n1+n2*n2*n2+n3*n3*n3==n){
    6. System.out.println(n+"是水仙花数");
    7. }else {
    8. System.out.println(n+"不是水仙花数");
    9. }

    结果:

    题目5:

    输出1-100之间的不能被5整除的数,每5个一行

    思路分析:
    1. 先输出1-100的所有的数
    2. 然后过滤输出 不能被5整除的数
    3. 每5个一行,我们使用  int count 统计输出个数,当  count % 5=0 就说明输出了5个,这时,我们输出了一个换行即可控制
    
    1. int count = 0;//统计输出个数
    2. for (int i = 1; i <= 100; i++) {
    3. if (i % 5 != 0) {
    4. count++;
    5. System.out.println(i + "");
    6. }
    7. //判断,每满5个就输出一个换行
    8. if (count%5==0){
    9. System.out.println();
    10. }
    11. }

    结果: 运行结果很长,下面只放了前面一部分的结果。

    题目6:

    输出小写的a-z 以及大写的Z-A;

    思路分析:
    考察我们对a-z编码和for的综合使用
    1. b='a'+1 ; c='a'+2;
    2. 使用for搞定

    代码实现:

    1. System.out.println("-------输出小写的a-z----------");
    2. for (char c1='a';c1<='z';c1++){
    3. System.out.print(c1+"");
    4. }
    5. System.out.println("\n");
    6. System.out.println("--------输出大写的Z-A-----------");
    7. //灵活的使用,编程……
    8. for (char c1='Z';c1>='A';c1--){
    9. System.out.print(c1+"");
    10. }

    结果:

    char的相关知识

     顺道补充一些关于char 的知识(防遗忘【捂脸哭表情】) :

    1.  字符类型可以表示单个字符,字符类型是char,char 是两个字节(可以存放汉字),多个字节我们用字符串String 
    2. 字符常量是用单引号(‘   ’)括起来的单个字符。                                                                       例如:char c1=‘a’; char c2=‘中’ ;  char c3=‘9’;
    3. 在Java中,char的本质是一个整数,在输出时,是Unicode码对应的字符。
    4. 可以直接给char 赋一个整数,然后输出时,会按照对应的Unicode字符输出。                          例如:97=》a
    5. char 类型是可以运算的,相当于一个整数,因为它都有对应的Unicode码。

     题目7:

    求出1-1/2+1/3-1/4……1/100的和

    思路分析:
    1. 1-1/2+1/3-1/4……1/100=(1/1)-(1/2)+(1/3)-(1/4)+(1/5)-(1/6)……1/100
    2.从上面的分析我们可以看到
    (1)一共有100个数,分子为1,分母为1-100
    (2)还发现,当分母为奇数时,前面是+,分母为偶数时,前面是-
    3. 我们可以使用for+ 判断即可完成
    4、 把结果存放到double sum
    5. 这里有一个隐藏的陷阱,要把公式分子1写出1.0才能得到精确的小数
    

    代码实现:

    1. double sum =0;
    2. for (int i=1;i<=100;i++){
    3. //判断是奇数还是偶数 ,然后做不同的处理
    4. if (i%2!=0){//分母为奇数
    5. sum+=1.0/i;
    6. }else {//分母为偶数
    7. sum-=1.0/i;
    8. }
    9. }
    10. System.out.println("sum="+sum);

    结果:

    题目:8

    请求出 1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+100)的结果

    思路分析:
    1. 一共有100项 相加
    2. 每一项的数字在逐渐增加
    3. 很像一个双层循环
     i 可以表示第几项,同时也是当前项的最后一个数
    4. 使用sum 进行累积即可

    代码实现:

    1. int sum=0;
    2. for (int i=1;i<=100;i++){
    3. for (int j=1;j<=i;j++){//内层对1-i进行循环
    4. sum+=j;
    5. }
    6. }
    7. System.out.println("sum="+sum);

    结果:

  • 相关阅读:
    【机器学习】聚类【Ⅳ】高斯混合模型数学推导
    异质信息网络分析与应用综述
    Vue2路由知识大杂烩, 一下给你全整明白(上)
    边界框回归的魔法:揭秘精准高效的MPDIoU损失函数
    前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(四)
    横向对比 npm、pnpm、tnpm、yarn 优缺点
    Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关...
    [JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单文件并监听进度]
    B站崩了,如果我们是那晚负责修复的开发人员
    游戏物理引擎+特效系统
  • 原文地址:https://blog.csdn.net/m0_57448314/article/details/126454969