四则运算:随机出十道加减乘除的题目放入文件中,并再另一个文件中解答出来
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
//四则运算:随机出十道加减乘除的题目放入文件中,并再另一个文件中解答出来
//出题
void giveQuestion()
{
FILE* fp = fopen("test.txt", "w");
if (fp == NULL)
{
printf("文件打开失败");
return;
}
//
int num1;
int num2;
char ch;
//四则运算符号数组
char symbol[] = "+-*/";
//随机数种子
/*随机数种子写法:
srand((unsigned int)time(NULL));
srand((size_t)time(NULL));*/
srand((size_t)time(NULL));
for (int i = 0; i < 10; i++)
{
//取模 100取模得的余数范围---0~99
num1 = rand() % 100 + 1 ;//范围是0+1~99+1
num2 = rand() % 100 + 1; //范围是0+1~99+1
ch = symbol[rand() % 4]; //范围是0~3
//拼接字符串放入一个新的字符串中
char buf[64] = { 0 };
sprintf(buf, "%d %c %d=\n", num1, ch, num2);
//将拼接后的字符串buf放入test.txt中
fputs(buf, fp);
}
//关闭文件
fclose(fp);
printf("十道题目生成成功!\n");
}
//解题
void answerQuestion()
{
//先将数据从文件中读取出来
FILE* fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("文件打开失败");
}
//放入新文件中
FILE* fp1 = fopen("test1.txt", "w");
if (fp1 == NULL)
{
printf("文件打开失败");
}
//
int num1;
int num2;
char ch;
int ret=0;
//将读取的数据放入一个字符串中
while (!feof(fp))
{
char buf[32] = { 0 };
char* result=fgets(buf, sizeof(buf), fp);
if (result == NULL)
{
break;
}
//将每次循环读取到字符串的题目解出来
//字符串分割函数
sscanf(buf, "%d %c %d", &num1, &ch, &num2);
if (ch == '+')
ret = num1 + num2;
if (ch == '-')
//int abs 返回一个整数的绝对值
ret = num1 - num2;
if (ch == '*')
ret = num1 * num2;
if (ch == '/')
ret = num1 / num2;
//将得出结果的算数式放入文件中
//1.先拼接
char buf1[32] = { 0 };
sprintf(buf1, "%d %c %d=%d\n", num1, ch, num2, ret);
fputs(buf1, fp1);
}
fclose(fp1);
fclose(fp);
printf("十道题全部解出成功!\n");
}
int main()
{
giveQuestion();
answerQuestion();
return 0;
}