儿童心算自动出题机
来源:互联网 发布:创意淘宝店铺名字 编辑:程序博客网 时间:2024/04/28 18:54
/*
Name: 儿童心算自动出题机
Copyright:
Author: 巧若拙
Date: 17-09-14 21:24
Description: 偷懒,想让电脑给一年级的儿子出心算题,并将解题过程输出到文件,家长只需检查输出文件即可
*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<math.h>
#include<time.h>
#define SIZE 5
#define MAXCOUNT 5
struct node{
int maxNumber; //最大数字
int maxCount; // 最多计算符数量
} lib[SIZE] = {{0, 0}, {10, 3}, {10, 4}, {20, 4}, {50, MAXCOUNT}}; //题目难度设置
int Choice(void);
int main(void)
{
FILE *fp;
int arr[MAXCOUNT];
int i, k, num, rightAnswer, answer, numTrue, numFalse;
int g = 1;
if ((fp=fopen("儿童心算自动出题机 .txt", "w+")) == NULL)
{
fprintf(stderr, "Error opening file.");
exit(1);
}
srand((unsigned) time(NULL));
num = Choice();
while (num != 0)
{
numTrue = numFalse = 0;
for (k=0; k<5; k++) //每组做5题
{
rightAnswer = arr[0] = rand() % lib[num].maxNumber;
fprintf(fp, "%d", rightAnswer);
fprintf(stdout, "%d", rightAnswer);
for (i=1; i<lib[num].maxCount; i++)
{
arr[i] = rand() % lib[num].maxNumber;
if (rightAnswer == 0 || rand() % 2 == 0) //随机选择加法运算(第一个数为0时,必须选择加法运算)
{
rightAnswer += arr[i];
fprintf(fp, " + %d", arr[i]);
fprintf(stdout, " + %d", arr[i]);
}
else //选择减法运算
{
if (arr[i] > rightAnswer) //确保减数比被减数小
{
arr[i] = rand() % (rightAnswer + 1);
}
rightAnswer -= arr[i];
fprintf(fp, " - %d", arr[i]);
fprintf(stdout, " - %d", arr[i]);
}
}
fprintf(fp, " = ");
fprintf(stdout, " = ");
fflush(stdin);
scanf("%d", &answer);
if (rightAnswer == answer)
{
numTrue++;
fprintf(fp, "正确!\n\n");
fprintf(stdout, "正确!\n\n");
}
else
{
numFalse++;
fprintf(fp, "错误!\n\n");
fprintf(stdout, "错误!\n\n");
}
}
fprintf(fp, "第%d轮结束,正确%d题,错误%d题\n", g++, numTrue, numFalse);
fprintf(stdout, "第%d轮结束,正确%d题,错误%d题\n", g++, numTrue, numFalse);
num = Choice();
}
fclose(fp);
return 0;
}
int Choice(void)
{
int n;
do{
puts("请选择难度:1, 2, 3, 4(输入0结束答题)");
fflush(stdin);
scanf("%d", &n);
} while (n < 0 || n > 4);
return n;
}
Name: 儿童心算自动出题机
Copyright:
Author: 巧若拙
Date: 17-09-14 21:24
Description: 偷懒,想让电脑给一年级的儿子出心算题,并将解题过程输出到文件,家长只需检查输出文件即可
*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<math.h>
#include<time.h>
#define SIZE 5
#define MAXCOUNT 5
struct node{
int maxNumber; //最大数字
int maxCount; // 最多计算符数量
} lib[SIZE] = {{0, 0}, {10, 3}, {10, 4}, {20, 4}, {50, MAXCOUNT}}; //题目难度设置
int Choice(void);
int main(void)
{
FILE *fp;
int arr[MAXCOUNT];
int i, k, num, rightAnswer, answer, numTrue, numFalse;
int g = 1;
if ((fp=fopen("儿童心算自动出题机 .txt", "w+")) == NULL)
{
fprintf(stderr, "Error opening file.");
exit(1);
}
srand((unsigned) time(NULL));
num = Choice();
while (num != 0)
{
numTrue = numFalse = 0;
for (k=0; k<5; k++) //每组做5题
{
rightAnswer = arr[0] = rand() % lib[num].maxNumber;
fprintf(fp, "%d", rightAnswer);
fprintf(stdout, "%d", rightAnswer);
for (i=1; i<lib[num].maxCount; i++)
{
arr[i] = rand() % lib[num].maxNumber;
if (rightAnswer == 0 || rand() % 2 == 0) //随机选择加法运算(第一个数为0时,必须选择加法运算)
{
rightAnswer += arr[i];
fprintf(fp, " + %d", arr[i]);
fprintf(stdout, " + %d", arr[i]);
}
else //选择减法运算
{
if (arr[i] > rightAnswer) //确保减数比被减数小
{
arr[i] = rand() % (rightAnswer + 1);
}
rightAnswer -= arr[i];
fprintf(fp, " - %d", arr[i]);
fprintf(stdout, " - %d", arr[i]);
}
}
fprintf(fp, " = ");
fprintf(stdout, " = ");
fflush(stdin);
scanf("%d", &answer);
if (rightAnswer == answer)
{
numTrue++;
fprintf(fp, "正确!\n\n");
fprintf(stdout, "正确!\n\n");
}
else
{
numFalse++;
fprintf(fp, "错误!\n\n");
fprintf(stdout, "错误!\n\n");
}
}
fprintf(fp, "第%d轮结束,正确%d题,错误%d题\n", g++, numTrue, numFalse);
fprintf(stdout, "第%d轮结束,正确%d题,错误%d题\n", g++, numTrue, numFalse);
num = Choice();
}
fclose(fp);
return 0;
}
int Choice(void)
{
int n;
do{
puts("请选择难度:1, 2, 3, 4(输入0结束答题)");
fflush(stdin);
scanf("%d", &n);
} while (n < 0 || n > 4);
return n;
}
0 0
- 儿童心算自动出题机
- 心算
- 练习,自动出题并判断
- 出题
- 小学生四则运算自动出题系统 免费
- 自动出题程序(VC++控制台程序)
- 自动出题程序(10以内的数字的四则运算)
- 自动出题工具【JavaScript实现】【使用Excel题库】
- 心算技巧
- 随机出题
- 出题心得
- 出题注意
- 出题&题解
- 电脑出题
- 快速心算法
- 调心算法
- “心算“Ackerman函数
- 【NOIP2014PJ】珠心算测验
- 恢复出厂设置 Factory Reset 调用过程
- 利用归档恢复数据文件
- 在Android开发中使用Ant 一:环境的搭建及入门
- 数据结构(c++版)
- 二进制byte[]数组转换成对应十六进制字符串
- 儿童心算自动出题机
- 将Eclipse项目自动部署到Tomcat的webapps目录下
- HDOJ 5001 Walk
- JavaScript--new创建对象的过程
- Repeater多层绑定数据 (三层嵌套循环)获取各层控件的值
- uva321The New Villa
- select, poll, epoll详解(二)
- DOM(基础篇)
- Dividing coins+uva+01背包