错题的记录

博主分享了两道编程题目的错误解答过程,第一题是关于蜗牛爬井的问题,错误在于未考虑蜗牛是否已爬出井口。第二题是计算平方根,起初因忘记math.sqrt()方法而做错,后来使用乘法思想重新实现。博主强调了审题和不轻敌的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.井里有一只蜗牛,他白天往上爬5米,晚上掉3.5米,井深56.7米,计算蜗牛需要多少天才能从井里出来?

我先说一下我自己错误的原因,我当时看了题之后感觉很简单就没仔细审题,我只简单的计算了每天爬5米,掉3.5米所以相当于每天爬1.5米。

以下是我当时写的代码(错误):

double a=0;
int time=0;
while(a<56.7){
    a+=1.5;
    time++;
}
System.out.println(time);

这个都很简单兄弟们都能看懂 我错就错在没考虑到没判断蜗牛白天爬了之后有没有爬出去单纯以为每天只上升1.5米。这道题正确的思路就是在每天蜗牛白天爬了之后就判断是否爬出去了,正确代码如下:

double hei=0;
int time=0;
for (int i = 0; i <56 ; i++) {
    hei+=5;
    time++;
    if(hei>56.7){
        System.out.println(time);
        break;
    }
    hei-=3.5;
}

 

正确答案是36天,在这些简单的代码中需要注意的一点是在对每天爬多少的变量定义时要将其定义为double类型,因为会与浮点数类型的3.5进行计算不定义为double会计算错误。

2.键盘输入一个大于等于2的整数x,计算并打印x的平方根是多少?

这道题我当时准备用math.sqrt()方法解决,但是我忘了这个方法的代码所以这道题也错了。给大家看一下我当时写的代码加上正确代码:

Scanner sc = new Scanner(System.in);
int sum =sc.nextInt();
if(sum>=2){
    System.out.println(Math.sqrt(sum));
}

 

虽然这个代码是正确的,但是在经过老师的提示后我重写了一个既简单明了,又符合我们学过的知识。math.sqrt()我们还没学过。利用了乘法的思想,一个数的平方是a则称a的平凡跟为那个数。

Scanner a = new Scanner(System.in);
System.out.println("请输入一个数");
double b= a.nextInt();
double c=0;
for (double i = 0; i <=b ; i+=0.1) {
    if(i*i==b){
        System.out.printf("%.2f",i);
        break;
    }else if(i*i>b){
        c=i-0.1;
        System.out.printf("%.2f",c);
        break;
    }

}

这个可以称为升级版代码,在这段代码中我把0和1都算进去了,然后将所有的平方根取到小数点后两位。

通过这次考试我得出了结论是不能太过轻敌,不要因为题目简单就不仔细审题。

实现错题记录功能,可以使用文件操作来存储和读取错题信息。以下是一个简单的 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、付费专栏及课程。

余额充值