C语言程序设计——小学生计算机辅助教学系统

题目:小学生计算机辅助教学系统

编写一个程序,帮助小学生学习乘法。然后判断学生输入的答案对错与否,按下列任务要求以循序渐进的方式分别编写对应的程序并调试。

  • 任务1 程序首先随机产生两个1—10之间的正整数,在屏幕上打印出问题。例如:6*7=?然后输入答案,如果输入答案正确,则显示“Right!”,然后问下一个问题;否则显示“Wrong!Please try again.”,然后提示学生重做,直到答对为止。(略)
    • 任务2 在任务1的基础之上,当学生回答错误时,最多给三次重做,三次仍未做对,则显示“Wrong!You have tried three times!Test over!”,程序结束。
      • 任务3 在任务1的基础上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计并输出总分,并输出学生的回答正确率。
        • 任务4 在任务2的基础上,为了提高程序的可读性,完善人机对话界面,从而达到来吸引学生的注意力,故要为学生输入的每一个正确或错误的答案输出不同的评价,正确的答案评价分为四个等级:“Very good!”、“Excellent!”、“Nice work!”、“Keep up the good work!”,错误的答案评价分为三个等级:“No.Please try again.”、“Wrong.Try once more.” ,“Don’t give up!”。
// 任务2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char const *argv[]) {
    int computerProduct, myProduct, num1, num2, redoNumber;

    srand(time(NULL));
    for (;;) {
        redoNumber = 0;
        // 产生两个 1~10 之间的随机数
        num1 = rand() % 10 + 1;
        num2 = rand() % 10 + 1;
        // 电脑计算结果
        computerProduct = num1 * num2;

        do {
            printf("%d * %d = ? ", num1, num2);
            // 我的计算结果
            scanf("%d", &myProduct);
            if (myProduct == computerProduct) {
                printf("Right!\n");
                break;
            }
            // 若同一题连续错误三次则直接结束测试
            if (redoNumber == 3) {
                printf("Wrong!You have tried three times!Test over!");
                break;
            } else printf("Wrong!Please try again.\n");
            redoNumber++;
        } while (myProduct != computerProduct);

        if (redoNumber == 3) break;
    }
    return 0;
}
// 任务3
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char const *argv[]) {
    int computerProduct, myProduct, num1, num2, winNumber = 0, questionsNumber, i;

    srand(time(NULL));
    for (questionsNumber = 1; questionsNumber <= 10; questionsNumber++) {
        // 产生两个 1~10 之间的随机数
        num1 = rand() % 10 + 1;
        num2 = rand() % 10 + 1;
        // 电脑计算结果
        computerProduct = num1 * num2;
        printf("%d * %d = ? ", num1, num2);
        scanf("%d", &myProduct);
        if (myProduct == computerProduct) {
            printf("Right!\n");
            winNumber += 10;
        } else printf("Wrong!\n");
    }
    // 统计分数
    printf("学生得分:%d\n", winNumber);
    // 统计得分率(questionsNumber++最后累计到 11) 
    printf("学生得分率:%d%%", winNumber * 10 / --questionsNumber);

    return 0;
}
// 任务4
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char const *argv[]) {
    int computerProduct, myProduct, num1, num2, redoNumber, winNumber = 0;

    srand(time(NULL));
    for (;;) {
        // 只要出现正确则把累计的错误次数清零
        redoNumber = 0;
        // 产生两个 1~10 之间的随机数
        num1 = rand() % 10 + 1;
        num2 = rand() % 10 + 1;
        // 电脑计算结果
        computerProduct = num1 * num2;
        do {
            // 只要出现错误则把累计的正确次数清零
            if (redoNumber != 0)
                winNumber = 0;
            printf("%d * %d = ? ", num1, num2);
            scanf("%d", &myProduct);
            if (myProduct == computerProduct) {
                winNumber++;
                // 输出对应正确次数的语句
                switch (winNumber) {
                    case (1):
                        printf("Keep up the good work!");
                        break;
                    case (2):
                        printf("Nice work!");
                        break;
                    case (3):
                        printf("Excellent!");
                        break;
                    default:
                        printf("Very good!");
                        break;
                }
                printf("\n");
                break;
            } else redoNumber++;
            switch (redoNumber) {
                case (1):
                    printf("No.Please try again.");
                    break;
                case (2):
                    printf("Wrong.Try once more.");
                    break;
                case (3):
                    printf("Don't give up!");
                    break;
            }
            if (redoNumber == 3) break;
            printf("\n");
        } while (1);
        if (redoNumber == 3) break;
    }
    return 0;
}

结果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/96526.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter对数组中某个数据二次加工成单独的数组

如何将数据[2,1,2,2,2,1,2,2,3,2,2,2,2,3,2,2,2,2,2,3,2,4,2,2,1,2,3,2,4,2]加工成 [[2], 1, [2, 2, 2], 1, [2, 2], 3, [2, 2, 2, 2], 3, [2, 2, 2, 2, 2], 3, [2], 4, [2, 2], 1, [2], 3, [2], 4, [2]]。这是实际工作中遇到的问题&#xff0c;UI要求将某一类型数据&#xff…

ioctl、printk及多个此设备支持

一、ioctl操作实现 ioctl&#xff08;Input/Output Control&#xff09;是一个在 Unix-like 操作系统中的系统调用&#xff0c;用于控制设备或文件的各种操作。它允许用户空间程序与内核空间进行交互&#xff0c;执行一些特定的设备控制、状态查询或其他操作&#xff0c;而不必…

Linux 可重入、异步信号安全和线程安全

可重入函数 当一个被捕获的信号被一个进程处理时&#xff0c;进程执行的普通的指令序列会被一个信号处理器暂时地中断。它首先执行该信号处理程序中的指令。如果从信号处理程序返回&#xff08;例如没有调用exit或longjmp&#xff09;&#xff0c;则继续执行在捕获到信号时进程…

移动隔断墙的用途和空间布局,设计合适的结构,包括固定方式

移动隔断墙的用途&#xff1a; 1. 划分空间&#xff1a;移动隔断墙可以在需要时将一个大空间划分为多个小空间&#xff0c;以满足不同的使用需求。 2. 提供隐私&#xff1a;移动隔断墙可以为需要隐私的区域提供屏障&#xff0c;例如办公室中的会议室或私人办公室。 3. 增加灵活…

一文速学-让神经网络不再神秘,一天速学神经网络基础-输出层(四)

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;不…

【SpringSecurity】七、SpringSecurity集成thymeleaf

文章目录 1、thymeleaf2、依赖部分3、定义Controller4、创建静态页面5、WebSecurityConfigurerAdapter6、权限相关7、当用户没有某权限时&#xff0c;页面不展示该按钮 1、thymeleaf 查了下读音&#xff0c;leaf/li:f/&#xff0c;叶子&#xff0c;前面的单词发音和时间time一…

RV64函数调用流程分析

RV64函数调用流程分析 1 RV64 函数调用实例2 对应代码的分析2.1 main函数及其对应的汇编程序2.1.1 main的C代码实现2.1.2 main函数对应汇编及其分析2.1.3 执行完成之后栈的存放情况 2.2 test_fun_a函数及其对应的汇编程序2.2.1 test_fun_a函数的C实现2.2.2 test_fun_a函数对应汇…

8_分类算法-k近邻算法(KNN)

文章目录 1 KNN算法1.1 KNN算法原理1.2 KNN过程1.3 KNN三要素1.4 KNN分类预测规则1.5 KNN回归预测规则1.6 KNN算法实现方式&#xff08;重点&#xff09;1.7 k近邻算法优缺点 2 KD-Tree2.1 KD Tree构建方式2.2 KD Tree查找最近邻2.3 KNN参数说明 1 KNN算法 定义&#xff1a;如…

司徒理财:8.30黄金原油今日最新行情分析及操作策略

黄金走势分析      从日线形态来看&#xff0c;昨晚经历了快速拉升&#xff0c;价格成功稳定在关键的1924压力位之上&#xff0c;最高甚至触及了1938的高点。这表明市场开启了新一轮走势的空间。在当天的日内交易中&#xff0c;我们应特别关注1925一线作为支撑&#xff0c;…

opencv 案例实战02-停车场车牌识别SVM模型训练及验证

1. 整个识别的流程图&#xff1a; 2. 车牌定位中分割流程图&#xff1a; 三、车牌识别中字符分割流程图&#xff1a; 1.准备数据集 下载车牌相关字符样本用于训练和测试&#xff0c;本文使用14个汉字样本和34个数字跟字母样本&#xff0c;每个字符样本数为40&#xff0c;样本尺…

基于Django的博客管理系统

1、克隆仓库https://gitee.com/lylinux/DjangoBlog.git 若失效&#xff1a;https://gitee.com/usutdzxy/DjangoBlog.git 2、环境安装 pip install -Ur requirements.txt3、修改djangoblog/setting.py 修改数据库配置&#xff0c;其他的步骤就按照官方文档。 DATABASES {def…

Git管理本地代码

一、Git配置 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要&#xff0c;因为每一个 Git 的提交都会使用这些信息&#xff0c;并且它会写入到你的每一次提交中&#xff0c;不可更改 – global全局配置 通过 --global 选项可以设置全局配置信息 …

算法笔记:球树

1 KD树的问题 算法笔记&#xff1a;KD树_UQI-LIUWJ的博客-CSDN博客 在kd树中&#xff0c;导致性能下降的最核心因素是因为kd-tree中被分割的子空间是一个个的超方体&#xff0c;而求最近邻时使用的是欧式距离&#xff08;超球&#xff09;。超方体与超球体相交的可能性是极高…

【原创】jmeter并发测试计划

bankQPS 创建线程组 设置并发参数 HTTP请求GET 添加HTTP请求 GET请求 查看结果树 HTTP请求 POST 添加HTTP请求 参数必须设置头信息格式&#xff1a; 添加HTTP头信息 查看结果树 可以选择&#xff0c;仅查看错误日志 汇总报告

【CSS】简记CSS效果:通过transition(动画过渡属性)实现侧边栏目滑入滑出

需求 在资金明细的页面中&#xff0c;点击按钮时筛选区域从左侧滑出&#xff0c;完成筛选点击确认后调用接口完成数据查询&#xff0c;筛选区域滑入左侧&#xff1b; 基于微信小程序页面实现 wxml代码 <view><!-- 操作按钮 --><button type"primary&qu…

Go测试之.golden 文件

Go测试中的.golden 文件是干什么用的&#xff1f;请举例说明 在Go语言中&#xff0c;.golden文件通常用于测试中的黄金文件&#xff08;golden files&#xff09;。黄金文件是在测试期间记录预期输出结果的文件。测试用例运行时&#xff0c;黄金文件用于比较实际输出与预期输出…

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验&#xff0c;但是我们还需要根据自己的项目业务进行更好的封装&#xff0c;减少我们的代码量&#xff0c;提升开发体验 效果展示 开起来和官网的使用没什么区别&#xff0c;但是我们在使用的时候&#xff0c;进行了二次封装&#…

Java“牵手”1688淘口令转换API接口数据,1688API接口申请指南

1688平台商品淘口令接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取1688商品的标题、价格、库存、商品快递费用&#xff0c;宝贝ID&#xff0c;发货地&#xff0c;区域ID&#xff0c;快递费用&#xff0c;月销量、总销量、库存、详情描…

ChatGPT AIGC 一个指令总结Python所有知识点

在ChatGPT中,直接输入一个指令就可以生成Python的所有知识点大纲。 非常实用的ChatGPT功能。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.…

【LeetCode75】第四十题 最大层内元素和

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题和LeetCode75的上一题大同小异&#xff0c;都是要我们对二叉树进行层序遍历。 那具体如何层序遍历我再上一题也详细介绍过了&#…