20194661 自动生成四则运算报告

一.需求分析

家长在空闲之余根据孩子的能力和学习进度出不同条件难度的题,锻炼孩子的计算能力,节省了家长的出题时间。

二.功能设计

基本功能

  • 自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内

  • 题目数量可定制

  • 是否包含乘法和除法

  • 操作数数值范围可控(如操作数在100以内还是1000以内)

  • 操作数是否含负数    

  • 生成的运算题存储到外部文件result.txt中

扩展功能

  • 剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式

三.设计实现

  • 使用C语言及函数库
  • 用哈希表对操作数相同的算式去重
  • 用random()函数实现给定范围内的随机数取值,用2*random()-取值范围来表示可以为操作可为负数的情况

四.测试运行

1.100以内十道四则运算
20194661 自动生成四则运算报告_第1张图片

2.带负数的运算
20194661 自动生成四则运算报告_第2张图片

3.将生成的运算保存到外表文件中
20194661 自动生成四则运算报告_第3张图片

五.代码片段

用户界面

    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语言自带的函数也没能很好使用,争取下次完善。

七.PSP

20194661 自动生成四则运算报告_第4张图片

你可能感兴趣的:(20194661 自动生成四则运算报告)