一.需求分析
家长在空闲之余根据孩子的能力和学习进度出不同条件难度的题,锻炼孩子的计算能力,节省了家长的出题时间。
二.功能设计
基本功能
自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
题目数量可定制
是否包含乘法和除法
操作数数值范围可控(如操作数在100以内还是1000以内)
操作数是否含负数
生成的运算题存储到外部文件result.txt中
扩展功能
- 剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
三.设计实现
- 使用C语言及函数库
- 用哈希表对操作数相同的算式去重
- 用random()函数实现给定范围内的随机数取值,用2*random()-取值范围来表示可以为操作可为负数的情况
四.测试运行
五.代码片段
用户界面
printf("请输入题数\n");
scanf("%d",&n);
printf("需要包含乘除输入1\n");
scanf("%d",&flag1);
printf("需要操作数包含负数请输入1\n");
scanf("%d",&flag2);
printf("请输入操作数范围\n");
运算符和随机数范围的设定
srand((int)time(NULL));
int fs=rand()%k-n+rand()%k;//带负数
int zs=rand()%k;
for(int i=0;i
去除重复算式
typedef unsigned long ulong;
typedef unsigned int uint;
typedef struct _bucket {
ulong h; /* hash value of key, keyvalue if key is a uint or ulong */
char * key; /* the point to key , if key is a string */
char value[VLEN]; /* store a var of builtin type in a 8Byte buffer */
struct _bucket *pListNext;
struct _bucket *pListLast;
struct _bucket *pNext;
struct _bucket *pLast;
} Bucket;
typedef struct _hashtable{
int nTableSize;
int nTableMask;
int nNumOfElements;
char keyType[TNLEN]; /* can be "int","long","char*" */
char valueType[TNLEN]; /* can be "char","short","int","long","float","double","char*" */
Bucket * pInternalPointer;
Bucket * pListHead;
Bucket * pListTail;
Bucket ** arBuckets;
} HashTable;
把结果导入到外部.txt文件中
FILE *fp;
fp=fopen("D:\\result.txt","w");
六.总结
主要用了for循环语句和if else的判断语句,不好的地方是代码都写在了一个函数里,要更改功能就比较复杂,很多c语言自带的函数也没能很好使用,争取下次完善。