21xrx.com
2024-09-19 10:12:06 Thursday
登录
文章检索 我的文章 写文章
计算机二级C语言答案生成器
2023-06-09 13:58:16 深夜i     --     --
C语言 随机数 文件操作

实现原理:

1.定义题目类型和难度等级,使用随机数生成指定数量的题目

2.创建题目文件和答案文件,将生成的题目和答案保存至文件中

3.通过文件操作,将生成的题目和答案读取出来并输出

示例代码:

#include

#include

#include

#define MAX_NUM 100  //题目数字的最大值

#define MIN_NUM 0   //题目数字的最小值

//生成题目的函数

void generate_question(int type, int level, int num, FILE *ques_file, FILE *ans_file)

{

  int num1, num2, result;

  char operator = '+'; //默认为加法运算符

  for (int i = 0; i < num; i++)

  {

    //根据题目类型和难度等级,随机生成题目

    switch (type)

    {

    case 1: //加减法运算

      num1 = rand() % (MAX_NUM + 1 - MIN_NUM) + MIN_NUM;

      num2 = rand() % (MAX_NUM + 1 - MIN_NUM) + MIN_NUM;

      if (i % 2 == 0 || level == 2) //每两道题之间或者难度等级为2时,使用加法运算符

      {

        result = num1 + num2;

        operator = '+';

      }

      else //随机使用加法或减法运算符

      {

        if (num1 >= num2)

          result = num1 - num2;

          operator = '-';

        else

          result = num2 - num1;

          operator = '-';

      }

      break;

    case 2: //乘法运算

      num1 = rand() % (10 + 1 - 1) + 1; //1~10的随机数

      num2 = rand() % (10 + 1 - 1) + 1;

      result = num1 * num2;

      operator = '*';

      break;

    case 3: //除法运算

      do {

        num2 = rand() % (10 + 1 - 1) + 1;

        num1 = rand() % (100 + 1 - 1) + 1;

      } while (num1 % num2 != 0); //确保除数能整除被除数

      result = num1 / num2;

      operator = '/';

      break;

    }

    //将题目和答案写入文件

    fprintf(ques_file, "%d %c %d = \n", num1, operator, num2);

    fprintf(ans_file, "%d\n", result);

  }

}

int main()

{

  int type, level, num;

  printf("请输入题目类型(1-加减法,2-乘法,3-除法):");

  scanf("%d", &type);

  printf("请输入难度等级(1-普通,2-困难):");

  scanf("%d", &level);

  printf("请输入题数:");

  scanf("%d", &num);

  //生成随机种子

  srand((unsigned int)time(NULL));

  //创建题目文件和答案文件

  FILE *ques_file, *ans_file;

  char ques_file_name[] = "questions.txt";

  char ans_file_name[] = "answers.txt";

  ques_file = fopen(ques_file_name, "w");

  ans_file = fopen(ans_file_name, "w");

  //生成题目并写入文件

  generate_question(type, level, num, ques_file, ans_file);

  //关闭文件

  fclose(ques_file);

  fclose(ans_file);

  //读取文件并输出

  char str[100];

  int line = 1;

  ques_file = fopen(ques_file_name, "r");

  if (ques_file != NULL)

  {

    while (fgets(str, sizeof(str), ques_file) != NULL) //读取文件

    {

      printf("%d. %s", line++, str);

    }

    fclose(ques_file);

  }

  line = 1;

  ans_file = fopen(ans_file_name, "r");

  if (ans_file != NULL)

  {

    while (fgets(str, sizeof(str), ans_file) != NULL) //读取文件

    {

      printf("%d. %s", line++, str);

    }

    fclose(ans_file);

  }

  return 0;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复