C语言实现四则运算的生成器

  该四则运算生成器前期只有简单的功能,全部代码均是小编自己编写,用的是C语言工具是VS2013,只支持windows平台运行。由用户界面但无图形化界面。

  功能目前只有两个,一是在cmd窗口中显示随机生成50道计算题,有四列整齐排布,用户可以控制上下左右来移动光标到每道题的等号后面来答题,答完一道题之后可以回车到下一道题,最后打完键入q退出并显示每道题的答案和用户的答案。二是随机生成四则运算,但并无答题功能。

  有用户界面,原来计划实现5个功能,分别是单一的加减乘除,最后一个是50道题中随机的生成加减运算。代码只实现了1号和5号功能,其余的在之后完善。

  中途有许多bug,有随机数的生成问题,其中用时最多的是解决光标的移动函数的调用问题,还有一个是接收用户输入的答案将其由字符转换成数字用到函数atoi并将用户答案存放在整形数组中。

  对该四则运算生成器的未修改Bug和未来拓展思路

    1.接收输入问题,该程序只能接收一次用户输入,如果用户有一次输入错误虽修改后,可能用户的答案数组中保存的是之前错误的答案。该Bug还未修正优化。

    2.还可以优化的是:可以加入判断答案对错的功能,并给出总分和那些题出错;加入鼠标点击功能,更方便用户跳转题目。

    3.对2、3、4号功能的实现,大致的代码与1号功能的差不多。

  缺点不足:本次的程序设计对时间上的安排不合理,不该在编程时就想到优化界面,从而放弃主要功能的实现,导致2、3、4号功能未实现,以及在功能上面的拓展也未实现。

  项目源码

 1 #include "SimpleArithmetic.h"
 2 void main()
 3 {
 4     while (1)
 5     {
 6         int num;
 7         WelcomeMenu();
 8         num = Menu();
 9         FunctionRealize(num);
10         OverMenu();
11         break;
12     }
13 }

SimpleArithmetic.cpp

 1 #include <stdio.h>
 2 #include <conio.h>
 3 #include <stdlib.h>
 4 #include <time.h>
 5 #include <windows.h>
 6 /*
 7 srand()函数定义 : void srand (unsigned int seed);
 8 通常可以利用geypid()或time(0)的返回值来当做seed
 9 如果你用time(0)的话,要加入头文件#include<time.h>
10
11 例如:
12 #include<stdio.h>
13 #include<stdlib.h>
14 #include<time.h>
15 #define random(x) (rand()%x)
16
17 void main()
18 {
19
20 srand((int)time(0));
21 for(int x=0;x<10;x++)
22 printf("%d/n",random(100));
23 }
24 */
25
26 #define range0 100;        //数字计算的范围
27 #define range1 3;        //运算符有+,-,*,/
28 #define random(x) rand()%x;//产生随机数
29
30 //欢迎菜单
31 void WelcomeMenu();
32 //主菜单
33 int Menu();
34 //结束菜单
35 void OverMenu();
36 //功能实现
37 void FunctionRealize(int num);
38 //选择四则运算
39 void ChoseArithmetic();
40 void RandomArithmetic();                //随机四则运算switch
41
42 //运算模板
43 void ModelOperation(int a, int b, char c);
44
45 void Addition(int a, int b);        //  +
46 void Subtraction(int a, int b);        //  -
47 void Multiplication(int a, int b);    //  *
48 void Division(int a, int b);        //  /
49 void ADD();

SimpleArithmetic.h

  1 #include "SimpleArithmetic.h"
  2 //菜单实现
  3 int Menu()
  4 {
  5     int a;
  6     printf("\n\n\n--------------------------------------------------------------------------------\n");
  7     printf("\t\t\t--------------------------------\n");
  8     printf("\t\t\t\t欢迎来到运算练习\n");
  9     printf("\t\t\t    1.加法运算\n");
 10     printf("\t\t\t    2.减法运算\n");
 11     printf("\t\t\t    3.乘法运算\n");
 12     printf("\t\t\t    4.除法运算\n");
 13     printf("\t\t\t    5.四则运算\n");
 14     printf("\t\t\t    0.退出\n");
 15     printf("\t\t\t--------------------------------\n");
 16     printf("\t\t\t请输入你的选项:");
 17     scanf_s("%d", &a);
 18     system("cls");
 19     return a;
 20 }
 21 //功能实现
 22 void FunctionRealize(int num)
 23 {
 24     switch (num)
 25     {
 26     case 1:
 27         ADD();
 28         break;
 29     case 2:
 30         break;
 31     case 3:
 32         break;
 33     case 4:
 34         break;
 35     case 5:
 36         RandomArithmetic();
 37         break;
 38     case 0:
 39         exit(0);
 40         break;
 41     }
 42     system("cls");
 43 }
 44 //欢饮菜单
 45 void WelcomeMenu()
 46 {
 47     printf("\n\n\n————————————————————————————————————————\n");
 48     printf("\tWelcome to use four arithmetic questions to generate program\n");
 49     printf("\t\t\t欢迎使用四则运算题目生成程序\n");
 50     printf("\n\n\n                                                    This program made by ZLTiger\n");
 51     printf("————————————————————————————————————————\n");
 52     printf("please input any key to continue....\n");
 53     _getch();
 54     system("cls");
 55 }
 56 //结束菜单
 57 void OverMenu()
 58 {
 59     printf("\n\n\n★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★");
 60     printf("\n\t\t感谢使用本程序,希望你的数学有个好的提升!\n");
 61     printf("\n\t\t\t如果你对本程序有什么建议,感谢你的提出!\n");
 62     printf("\n\n                                                            Author:ZLTiger\n");
 63     printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★");
 64     printf("please input any key to continue...");
 65     _getch();
 66 }
 67
 68
 69 //选择四则运算
 70 void ChoseArithmetic()
 71 {}
 72 //随机四则运算switch
 73 void RandomArithmetic()
 74 {
 75     srand((int)time(0));
 76     int a = 0, b = 0, Operator;
 77     char ch;
 78     a = random(range0);
 79     b = random(range0);
 80     Operator = random(range1);
 81     switch (Operator)
 82     {
 83     case 0:
 84         ch = ‘+‘;
 85         ModelOperation(a, b, ch);
 86         break;
 87     case 1:
 88         ch = ‘-‘;
 89         ModelOperation(a, b, ch);
 90         break;
 91     case 2:
 92         ch = ‘*‘;
 93         ModelOperation(a, b, ch);
 94         break;
 95     case 3:
 96         ch = ‘/‘;
 97         ModelOperation(a, b, ch);
 98         break;
 99     }
100 }
101 void Addition(int a, int b)        //  +
102 {
103     printf("%d+%d=\n", a, b);
104 }
105 void Subtraction(int a, int b)        //  -
106 {
107     printf("%d-%d=\n", a, b);
108 }
109 void Multiplication(int a, int b)    //  *
110 {
111     printf("%d*%d=\n", a, b);
112 }
113 void Division(int a, int b)        //  /
114 {
115     printf("%d/%d=\n", a, b);
116 }
117 //模板运算
118 void ModelOperation(int a, int b, char ch)
119 {
120     float c, answer = 0;
121     char yn;
122     switch (ch)
123     {
124     case ‘+‘:
125         c = a + b;
126         break;
127     case ‘-‘:
128         c = a - b;
129         break;
130     case ‘*‘:
131         c = a * b;
132         break;
133     case ‘/‘:
134         c = a / b;
135         break;
136     }
137     printf("\n\n\n————————————————————————————————————————\n");
138     printf("%d%c%d=", a, ch, b);
139     scanf_s("%f", &answer);
140     if (answer == c)
141     {
142         printf("OK!That is right\n");
143     }
144     else
145     {
146         printf("Wrong!You shoule good learn\n");
147     }
148 }
149 void ADD()
150 {
151     HANDLE hout;
152     COORD coord;//屏幕上的坐标
153     int realize[100], user[100];
154     int a, b, count = 1, u_ss = 0, u_count = 1;
155     char ch;
156     char ss[5];
157     srand((int)time(0));
158     hout = GetStdHandle(STD_OUTPUT_HANDLE);//从键盘获取输入,如果是方向键则执行方向功能,如果是回车键则换行,如果是字符则输出
159     printf("答完题后按q键退出!\n");
160     printf("--------------------------------------------------------------------------------");
161     for (int i = 0; i < 50; i++)
162     {
163         a = random(range0);
164         b = random(range0);
165         realize[count] = a + b;
166         count++;
167         printf("%2d%c%2d=              ", a, ‘+‘, b);
168     }
169     coord.X = 6;
170     coord.Y = 2;
171     SetConsoleCursorPosition(hout, coord);
172     while (1)
173     {
174         ch = _getch();
175         if (ch == ‘q‘)
176         {
177             break;
178         }
179         printf("%c", ch);
180         if (ch == 0x0d)
181         {
182             a = atoi(ss);
183             ss[2] = { ‘ ‘ };
184             u_ss = 0;
185             user[u_count] = a;
186             u_count++;
187             coord.X += 20;
188             SetConsoleCursorPosition(hout, coord);
189             if (coord.X > 80)
190             {
191                 coord.Y += 1;
192                 coord.X = 6;
193                 SetConsoleCursorPosition(hout, coord);
194             }
195         }
196         else if (ch >= ‘0‘ || ch <= ‘9‘)
197         {
198             ss[u_ss] = ch;
199             u_ss++;
200         }
201     }
202     printf("\n正确答案:\n");
203     for (int i = 0; i < 50; i++)
204     {
205         printf("%4d", realize[i + 1]);
206     }
207     printf("\n你的答案:\n");
208     for (int i = 0; i < 50; i++)
209     {
210         printf("%4d", user[i + 1]);
211     }
212     _getche();
213     printf("\nPlease input any key to continue...");
214     system("cls");
215 }

RealizeFunction.cpp

  本项目源代码上传至个人的GitHub:https://github.com/BelieveMyself-ZLH/Four_Arithmetic_Operations

时间: 2024-11-07 00:59:45

C语言实现四则运算的生成器的相关文章

四则运算表达式生成器(C语言)

结对项目:四则运算表达式生成器(C语言) GitHub:https://github.com/peter-ye-code/Question-Builder 合作者:叶学涛(3118005024) 温德华(3118005021) 一.需求 四则运算表达式生成器的全部功能: 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 将生成10个题目. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围,例如 Myapp.exe -r 10 将生成10以内(不包括10)

结对编程1 —— 基于GUI和Swing的四则运算题目生成器

结对编程1 -- 基于GUI和Swing的四则运算题目生成器 合作伙伴 201421123089 周迪 201421123069 黄睿 代码地址:https://git.coding.net/H1159650478/sizeyunsuanjiaqiang.git 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序.在下面

介绍一款原创的四则运算算式生成器:CalculateIt2

家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习.于是,自己在业余时间开发了一个四则运算算式生成器,名为:CalculateIt2.项目是开源的,源码地址是:https://github.com/daxnet/CalculateIt2.也可以在标准的.NET Framework 4.6.1的项目中,通过nuget来引用这个类库,nuget ID是:CalculateIt2.Engine.为什么名字后面有一个"2&

个人项目---四则运算题目生成器项目记录

本次作业是设计并实现一个四则运算题目随机生成器(支持分数运算),其功能包括生成题目文件,并自动生成对应的答案文件,以及根据输入的题目文件,对输入的答案文件进行批改打分. 时间表格 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 24h Development 开发 · Analysis · 需求分析 (包括学习新技术) 2h · Design Spec · 生成设计文档 2h ·

c/c++:四则运算题目生成器3

题目要求: 1.学生写的程序必须能判定用户的输入答案是否正确 2.程序必须能处理四种运算的混合算式 3.要求两人合作分析,单独编程,单独撰写博客 团队成员:杜文星,张邵佳(http://www.cnblogs.com/me-tts/) 我的代码: head.h 1 #pragma once 2 #include<iostream> 3 #include<ctime> 4 #include<strstream> 5 #include<stdlib.h> 6 #

四则运算题目生成器2

题目要求:在第一次原有的功能的基础上增加以下功能: 1.避免题目的重复 2.可定制(可定制题目数量\打印方式) 3.控制参数的生成: a.是否允许乘除发的生成 b.是否允许有括号的生成(最多支持十个数参与运算) c.可以设定数值范围的范围 d.是否负数参与运算  e.除法是否有余数 我的代码: 1 #include<iostream> 2 #include<ctime> 3 #include<strstream> 4 #include<stdlib.h> 5

四则运算题目生成器——项目笔记

这个程序,能够实现生成彼此不重复的题目,并且计算出相应答案答案,以及根据题目计算结果的功能. 预估时间及实际花费时间表格 设计以及调试花费了大量的时间. PSP2.1 Personal Software Process Stages Time Planning 计划   · Estimate · 估计这个任务需要多少时间 20h Development 开发   · Analysis · 需求分析 (包括学习新技术) 5h · Design Spec · 生成设计文档 1h · Design R

结对项目——四则运算题目生成器

一.GitHub项目地址 : https://github.com/OurPrograming/Exercises 结对项目成员:软三 陈纪禧(3118005043).软三 程伟杰(3118005045) 二.PSP预计时间: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划  60 · Estimate · 估计这个任务需要多少时间 60 Development 开发 1680 · Analysis ·

结对项目:四则运算题目生成器(JAVA+GUI)

结对项目(JAVA+GUI) 结对伙伴: 胡梓泽(3118005002) 黄伟洪(3118005004) Github链接:https://github.com/Hubbard1999/operation 1 项目简介 1.1 题目描述 1.1.1 题目:实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能). 1.1.2 说明: 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, -. 自然数:0, 1, 2, -. 运算符:+, ?, ×, ÷. 括号:(,