错题记录(循环)

题目:

井里有一只蜗牛,它白天往上爬5米,晚上掉3.5米,井深56.7米,计算蜗牛需要多少天才能从井底爬出。

错误代码:

package Array;

import java.util.Scanner;

/**
 * Author lilshork
 * Date 2022/7/8 16:03
 **/
public class Test01 {
    public static void main(String[] args) {
       double sum = 0;
       int a = 0;
       while (sum<56.7){
           sum=sum+5-3.5;
           a++;
       }
        System.out.println(a);
    }
}

错误原因:算的是每天往上爬了1.5米,相当于56.7/1.5=37.8,得到的爬上去需要38天,但是这种情况忽略了如果已经爬上去了就不要往下掉了,所以要考虑到对爬上的高度进行判断,如果已经爬上去了,就不需要掉3.5米了。

正确代码:

package Array;

/**
 * Author lilshork
 * Date 2022/7/12 14:43
 **/
public class Test05 {
    public static void main(String[] args) {
        double x = 0;
        int day = 0;
        while (x < 56.7) {
            x+=5;
            day++;
            if(x<56.7){
                x-=3.5;
            }
        }
        System.out.println(day);
    }
}

分析:根据题意,可以想到要用到while循环,定义两个变量,一个表示蜗牛爬的高度,一个表示需要的天数,初始值都为0,在这里要注意到爬的高度因为有小数点,所以定义时要使用double或者float,否则结果会出错,while中的条件则为小于井的高度,一旦大于等于井的深度则跳出循环,同时,循环体内要对是否已经爬出井底进行判断,如果小于井的深度,则要往下掉3.5米。

同样再看一下另一个题:20块钱买饮料,每瓶3块钱,喝完瓶子可以换1块钱,问最多可以喝到多少瓶饮料。

对于这个题目,我们同样也要考虑到瓶子换的钱加原本剩的钱够不够买一瓶饮料,如果还够买,又要考虑到之后的瓶子换的钱加剩的钱还够不够买饮料。

代码:

package Array;

/**
 * Author lilshork
 * Date 2022/7/12 20:45
 **/
public class Test08 {
    public static void main(String[] args) {
        int sum = 20;
        int i = 0;
        while (sum/3>0){
            sum = sum - 3 + 1;
            i++;
        }
        System.out.println("最多可以喝"+i+"瓶饮料");
    }
}

分析:首先定义两个变量,一个表示钱,一个表示喝的饮料瓶数,可以使用到while循环,循环条件为钱/3,如果大于0则一直循环,注意在这里不能等于0,因为等于0,已经不够买一瓶饮料了。

对于这种循环的题目,应该充分考虑到实际会发生的情况!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现错题记录功能,可以使用文件操作来存储和读取错题信息。以下是一个简单的 C 语言代码示例: ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 最大错题数 // 定义结构体存储错题信息 typedef struct { int question_num; // 题号 char question[100]; // 题目 char answer[100]; // 答案 char explanation[200]; // 解释 } Question; // 存储错题信息到文件 void save(Question* questions, int size, char* file_name) { FILE* fp; fp = fopen(file_name, "w"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } for(int i = 0; i < size; i++) { fprintf(fp, "%d %s %s %s\n", questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation); } fclose(fp); } // 从文件中读取错题信息 void load(Question* questions, int* size, char* file_name) { FILE* fp; fp = fopen(file_name, "r"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } int i = 0; while(fscanf(fp, "%d %[^\n] %[^\n] %[^\n]\n", &questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation) != EOF) { i++; } *size = i; fclose(fp); } int main() { Question questions[MAX_SIZE]; int size = 0; // 读取文件中的错题信息 load(questions, &size, "questions.txt"); // 在此处添加代码,实现错题记录功能 // 存储错题信息到文件 save(questions, size, "questions.txt"); return 0; } ``` 在上述代码中,我们定义了一个 `Question` 结构体来存储每一道错题的信息。`save` 函数将错题信息存储到文件中,`load` 函数从文件中读取错题信息。你可以在 `main` 函数中添加代码来实现错题记录功能,比如让用户输入题目和答案,将输入的信息存储到结构体数组中。最后,调用 `save` 函数将更新后的错题信息存储到文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值