儿童心算自动出题机

来源:互联网 发布:创意淘宝店铺名字 编辑:程序博客网 时间: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;
}
0 0
原创粉丝点击