关于随机四则运算的小程序

2015-03-12

基本上是按上一篇博文中的思想,粗略的编写了一个beta版,不足也是有的,一些判断机智,程序的健壮性有待改进。

  1 #include<iostream>
  2 #include<time.h>
  3 using namespace std;
  4 typedef struct node{
  5     int num1;
  6     int num2;
  7     char ope;
  8     struct node *next;
  9 }node,*linknode;                                                        //定义三个操作数的数据结构,用于对产生数据的记录
 10
 11 void Math(int num,linknode &L,int chengchu,int fanwei,int yushu);       //产生数据
 12 void InitList(linknode &L);                                             //链表初始化
 13 void Insertlist(linknode &L,int one,int two,char thr);                  //插入数据
 14 int Serchlist(linknode L,int one,int two,char thr);                     //查询节点
 15 void Printrecord(linknode &L,int hang);                                 //输出数据
 16 void menu1();                                                           //大要求的菜单选项
 17 void choice(int *n);                                                    //对用户的提供的选择
 18 void menu2();                                                           //是否有乘除法,数值范围,打印中每行的间隔可调整,除法有无余数,
 19 void standerd(int *n,int *f,int *y,int *h);
 20
 21 void main()
 22 {
 23     int num=5;        //出题数量
 24     int chengchucan=0;
 25     int fanweican=100;
 26     int yushucan=0;
 27     int hangcan=0;
 28     linknode l;
 29     InitList(l);
 30     choice(&num);
 31     standerd(&chengchucan,&fanweican,&yushucan,&hangcan);
 32     Math(num,l,chengchucan,fanweican,yushucan);         //调用函数,产生数据
 33     Printrecord(l,hangcan);
 34 }
 35
 36 void menu1()
 37 {
 38     cout<<"- - - - -  - - - - - - 菜单- - - - - - -- - - - - - "<<endl;
 39     cout<<"                   1.定制出题数量                   "<<endl;
 40     cout<<"                   2.定制打印                       "<<endl;                      //附加功能??
 41     cout<<"                   3.退出菜单                       "<<endl;
 42     cout<<"                   4.使用说明                       "<<endl;
 43     cout<<"- - - - -  - - ---------------二柱子- "<<endl;
 44 }
 45
 46 void menu2()
 47 {
 48     cout<<"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~菜单~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~"<<endl;
 49     cout<<"                   1.是否有乘除法                  "<<endl;
 50     cout<<"                   2.数值范围                       "<<endl;
 51     cout<<"                   3.除法有无余数                   "<<endl;
 52     cout<<"                   4.打印中每行的间隔可调整         "<<endl;
 53     cout<<"                   5.退出菜单                       "<<endl;
 54     cout<<"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ 二柱子 ~"<<endl;
 55
 56 }
 57
 58 void choice(int *n)
 59 {
 60     int choi,number;
 61     menu1();
 62     cout<<"请输入选择"<<endl;
 63     cin>>choi;
 64     while(choi!=3)
 65     {
 66         switch(choi)
 67         {
 68         case 1:
 69             {
 70                 cout<<"请输入题目数量"<<endl;
 71                 cin>>number;
 72                 *n=number;
 73                 menu1();
 74                 cin>>choi;
 75                 break;
 76             }
 77         case 2:
 78             {
 79                 cout<<"定制打印"<<endl;
 80                 menu1();
 81                 cin>>choi;
 82                 break;
 83             }
 84         case 4:
 85             {
 86                 cout<<" 使用说明书"<<endl;
 87                 menu1();
 88                 cin>>choi;
 89                 break;
 90             }
 91
 92         }
 93     }
 94 }
 95
 96 void standerd(int *chengchu,int *fanwei,int *yushu,int *hangjian)
 97 {
 98     int select,can1,can2,can3,can4;
 99     menu2();
100     cout<<"请输入选择"<<endl;
101     cin>>select;
102     while(select!=5)
103     {
104         switch(select)
105         {
106         case 1:          //是否有乘除法
107             {
108                 cout<<"请输入选择 0代表设定乘除法1代表不设定乘除法(程序默认拥有乘除法)"<<endl;
109                 cin>>can1;
110                 if(can1==1)
111                     *chengchu=1;
112                 menu2();
113                 cin>>select;
114                 break;
115             }
116         case 2:        //数值范围
117             {
118                 cout<<"请输入 您想要的出题数值范围(程序默认数值范围为100以内)"<<endl;
119                 cin>>can2;
120                 *fanwei=can2;
121                 menu2();
122                 cin>>select;
123                 break;
124             }
125         case 3:       //除法有无余数
126             {
127                 cout<<"请输入选择 0代表设定允许余数1代表不允许除法有余数(程序默认会有余数)"<<endl;
128                 cin>>can3;
129                 *yushu=can3;
130                 menu2();
131                 cin>>select;
132                 break;
133             }
134         case 4:       //打印中每行的间隔可调整
135             {
136                 cout<<"请输入 您想要的打印题目之间的间隔(程序默认打印题目之间的间隔为0)"<<endl;
137                 cin>>can4;
138                 *hangjian=can4;
139                 menu2();
140                 cin>>select;
141                 break;
142             }
143         }
144     }
145
146 }
147 void Math(int num,linknode &L,int chengchu,int fanwei,int yushu)
148 {
149     srand(time(NULL));
150     int a,b,c,rule;
151     char d;
152     int sancan=4;
153     int onecan=100;
154     if(chengchu==1)               //对乘除参数进行判断,为1时设置参数的改变
155         sancan=2;
156
157     onecan=fanwei;                //对数值范围的修改,默认为
158     for(int x=0;x<num;x++)
159     {
160         a=rand()%onecan;
161          b=rand()%onecan;
162         c=rand()%sancan;
163         //cout<<"连续输入三个数"<<endl;       //测试产生数据相同时的结构是否成立
164         //cin>>a>>b>>c;
165         rule=0;
166         switch(c)
167         {
168         case 0:
169             d=‘+‘;
170             break;
171         case 1:
172             d=‘-‘;
173             break;
174         case 2:
175             d=‘*‘;
176             break;
177         case 3:
178             d=‘/‘;
179             break;
180         }
181         rule=Serchlist(L,a,b,d);
182         if(rule==0)
183         {
184             x--;
185             //cout<<"ji zhi "<<endl;
186         }
187         else if(yushu==1&&c==3&&a%b!=0)
188         {
189             x--;
190             cout<<"余数设置规则"<<endl;
191         }
192         else
193             Insertlist(L,a,b,d);
194
195     }
196 }
197
198 void InitList(linknode &L)
199 {
200     L=new node;
201     L->next=NULL;
202 }
203
204 void Insertlist(linknode &L,int one,int two,char thr)
205 {
206     linknode p=L;
207     while(p->next!=NULL)
208         p=p->next;
209     node * s=NULL;
210     s = (node *) malloc (sizeof(node));
211     s->num1=one;
212     s->num2=two;
213     s->ope=thr;
214     s->next=p->next;
215     p->next=s;
216 }
217
218 int Serchlist(linknode L,int one,int two,char thr)
219 {
220     if(L->next==NULL)
221         return 1;
222     linknode p=L->next;
223     while(p!=NULL)
224     {
225         if(p->num1==one&&p->num2==two&&p->ope==thr)
226             return 0;
227         p=p->next;
228     }
229     return 1;
230 }
231
232 void Printrecord(linknode &L,int hang)
233 {
234     int a=hang;
235     linknode p=L->next;
236     while(p    !=NULL)
237     {
238         cout<<p->num1<<p->ope<<p->num2<<"="<<endl;
239         while(hang>0)
240         {
241             cout<<endl;
242             hang--;
243         }
244         hang=a;
245         p=p->next;
246     }
247 }


				
时间: 2025-01-10 03:56:09

关于随机四则运算的小程序的相关文章

基于c编写的关于随机生成四则运算的小程序

基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/HuChengLing/- 基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图. 主要功能:运算小学四则运算,可以选择加减乘除以及混合运算. 设计思想:首先思考运算数字范围,考虑小学生的运算能力,然后分类运算方法,分为加减乘除混合运算, 然后可以选择是

软件工程概论第一次课堂小测-------产生30个100以内的随机整数四则运算的小程序

1 #include<iostream> 2 #include<ctime> 3 using namespace std; 4 5 void main() 6 { 7 int a,b,c; 8 srand(unsigned(time(NULL))); //以系统时间为随机种子保证数的变化 9 for(int i=0;i<30;i++) 10 { 11 a=rand()%99+1; 12 b=rand()%99+1; 13 c=rand()%4+1; 14 switch(c)

基于c可以随机生成四则运算的小程序

除了整数以外,还能支持真分数的四则运算 可以选择加减乘除以及混合运算. 首先思考运算数字范围,考虑小学生的运算能力,然后分类运算方法,分为加减乘除混合运算, 做完题后可以选择是继续做题还是退出程序, 可以总结做对或者做错的题数,计算正确以及错误的题数. 附Github源码,转载请标注来源:https://github.com/jianglipin/si-ze-yun-suan.git

一个四则运算的小程序

代码地址https://coding.net/u/huhulong/p/sizeyunsuan/git/tree/master/ (一)需求分析 1. 控制题目生成个数 2. 可以控制题目生成数的范围 3. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数. 4. 每道题目中出现的运算符个数不超过3个. 5. 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目. 生成的题目存入执行程序的当前目录下的Exercises.tx

能自动生成四则运算的小程序

#include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>int moshi;int count;void plus(int first,int second){int result;printf("%d + %d =",first,second);scanf("%d",&result);if(result == first+secon

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

300道随机四则运算小程序(java编写)

这是由Java编写的300道随机四则运算小程序, 运算数范围为0~100(不包括100),运算结果保留两位小数. 程序代码: import java.util.*; class Yunsuan{ public static void main(String[] args){ Random rand = new Random(); for(int i = 0; i < 300; i++){ int num1 = (int)(rand.nextDouble() * 100); int num2 =

一个有意思的Python小程序(全国省会名称随机出题)

最近比较迷Python,仿照<Python编程快速上手>8.5写了一个随机出卷的小程序.程序本身并不难,关键是解决问题的思路,还有就是顺便复习了一下全国地名(缅怀一下周总理). OK其实还是有一个难点的,就是关于Python的中文编码问题,如何把中文字典输入到txt然后再把它读出来,程序中借用了json方法,而且在输出时decode.encode,有一些参考的价值吧.废话不说了,上程序. # *encoding:utf-8 * from __future__ import print_func

微信+WeTest:小程序云端测试系统上线

日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测试平台,由WeTest提供基础支持,下载"微信开发者工具"即可使用. 小程序测试报告示例:  一. 云真机测试 Beta 为了方便广大开发者检测小程序程序缺陷.评估小程序产品质量,微信提供了免费的云真机测试环境以及一整套测试方案.在小程序交付到真实用户手中使用之前,你可以将小程序分发到云真