四则运算2程序及运行

题目:可怜的二柱子,老师又对他的出题系统提出了新的要求:

1,题目避免重复;

2,可定制打印的方式;

3,可控制下列参数:是否有乘除,是否有括号,数值范围,加减有无负数,乘除有无余数,是否支持分数,打印每行间隔可调整。

解题思路:

一,(1)题目避免重复:使用srand(seed)函数进行随机化,随seed的不同,可以产生不同的随机数
二,(1)控制数量:输入变量num控制
三,利用调用函数,定义一个能产生加减乘除四则运算的函数;

(1)控制是否有乘除:(div=0,没有乘除;div=1,有乘除)
    (2)数值范围:数值在10范围rand()%11;数值在50范围 5rand()%11;数值在100范围rand()%101
    (3)是否有括号:kuohao=0,没有括号;kuohao=1,有括号
    (4)加减有无负数:fushu=0,没有负数;fushu=1,有负数
    (5)除法有无余数:yushu=0,没有余数;yushu=1,有余数
    (6)打印每行的间隔:间隔=g,通过g的大小控制间隔
    (7)是否支持分数:fenshu=0,不支持分数;fenshu=1支持分数
    (8)是否支持小数:利用随机函数rand()产生0——1之间的小数

具体程序:

 1 #include<iostream.h>
 2 #include<stdlib.h>//使用随机函数
 3 #include<time.h>//题目避免重复
 4 int x1[100],x2[100],op,i;
 5 void yunsuan1()
 6 {
 7     if(op==0)
 8         cout<<x1[i]<<"+"<<x2[i]<<"="<<endl;
 9     if(op==1)
10         cout<<x1[i]<<"-"<<x2[i]<<"="<<endl;
11     if(op==2)
12         cout<<x1[i]<<"*"<<x2[i]<<"="<<endl;
13     if(op==3)
14         cout<<x1[i]<<"/"<<x2[i]<<"="<<endl;
15 }
16 void yunsuan2()
17 {
18     if(op==0)
19         cout<<x1[i]<<"+"<<x2[i]<<"="<<"\t";
20     if(op==1)
21         cout<<x1[i]<<"-"<<x2[i]<<"="<<"\t";
22     if(op==2)
23         cout<<x1[i]<<"*"<<x2[i]<<"="<<"\t";
24     if(op==3)
25         cout<<x1[i]<<"/"<<x2[i]<<"="<<"\t";
26 }
27
28
29 int main()
30 {
31     srand(time(NULL));//题目避免重复
32     int num,temp;//题目的数量num
33     int fanwei,out,div,fushu;//数值的范围,输出方式,是否有乘除运算,加减法是否有负数
34     cout<<"********欢迎使用小学四则运算定制系统********"<<endl;
35     cout<<"本系统支持定制,祝您使用愉快!"<<endl;
36     cout<<"请输入题目的数量num:"<<endl;
37     cin>>num;
38     cout<<"请选择数值范围(0--*)fanwei"<<endl;
39     cin>>fanwei;
40     cout<<"请选择打印方式out(0,空行打印 1,空格打印)"<<endl;
41     cin>>out;
42     cout<<"请选择有无乘除运算div(0,没有乘除运算 1,有乘除运算)"<<endl;
43     cin>>div;
44     cout<<"请选择加减运算有无负数fushu(0,没有负数 1,有负数)"<<endl;
45     cin>>fushu;
46     for(i=1;i<num;i++)
47     {
48         x1[i]=rand()%fanwei;//输出两个用户制定范围内的数
49         x2[i]=rand()%fanwei;//输出两个用户制定范围内的数
50         op=rand()%4;
51         if(out==0)
52         {
53             if(div==0&&fushu==0)
54             {
55                 while(op>=2)
56                 {
57                     op=op-2;
58                     yunsuan1();
59                 }
60             }
61             if(div==1&&fushu==1)
62             {
63                 if(x1[i]>x2[i])
64                 {
65                     temp=x1[i];
66                     x1[i]=x2[i];
67                     x2[i]=temp;
68                 }
69
70                 yunsuan1();
71             }
72         }
73         else if(out==1)
74         {
75             if(div==0&&fushu==0)
76             {
77                 while(op>=2)
78                 {
79                     op=op-2;
80                     yunsuan2();
81                 }
82             }
83             if(div==1&&fushu==1)
84             {
85                   if(x1[i]>x2[i])
86                 {
87                     temp=x1[i];
88                     x1[i]=x2[i];
89                     x2[i]=temp;
90                 }
91
92
93                 yunsuan2();
94             }
95         }
96
97     }
98
99 }

总结:这次程序用到了使题目不能重复的函数srand(time(NULL)),以及调用函数。因为对函数的调用不是很熟练,所以事先定义了两个函数yuansuan1(),yunsuan2();
        通过设置变量来达到题目的要求,不过本程序对于实现乘除发有无余数和有无分数还没能实现,需要进一步进行改进。还有就是程序中虽然出现了数组,但在实际应用用中没有起到相应的作用,也是需要改进的。


项目计划总结

周活动总结表

姓名:张金                                                          日期:2015/3/15


任务

日期


听课


编程


阅读课外数目


锻炼身体


写老师留得作业


业余活动


日总计

(分钟)


周日


30


30


60


周一


400


15


415


周二


200


30


60


60


60


410


周三


100


60


30


60


60


60


370


周四


200


30


30


60


40


60


420


周五


200


100


30


60


40


60


490


周六


40


30


60


40


60


230


阶段时间和效率

周数:1


总计


60


415


410


370


420


490


230


平均


30


69


68


61


70


67


46


最大


30


400


200


100


200


200


60


最小


30


15


30


30


30


30

2,时间记录日志:

学生:张金                                                                         日期:2015/3/15

老师:王建民                                                                      课程:PSP


日期


开始时间


结束时间


中断时间


净时间


活动


备注


3/10


08:00


12:00


40


200


上课


14:30


15:30


60


构思程序


16:00


17:00


60


写作业


21:00


21:30


30


阅读课外书物


3/11


08:00


10:00


20


100


听课


11:00


12:00


60


程序


14:00


15:00


60


写作业


21:00


21:30


30


阅读课外书物


3/12


10:00


12:00


20


100


听课


14:00


14:30


30


程序


15:00


16:00


60


写作业


21:00


21:30


30


阅读课外读物


3/13


08:00


12:00


40


200


听课


14:00


15:40


100


程序


21:00


21:30


30


阅读课外书物

3,缺陷记录日志:

学生:张金                                                                       日期:2015/3/15

老师:王建民


日期


编号


类型


引入阶段


排除阶段


修复阶段


修复缺陷


3/10


1


001


编程


编译


15min


描述:函数定义错误


2


002


编程


编译


10min


描述:函数调用出现错误


3/11


3


003


编程


编译


2


描述:使题目不重复使没有添加头文件


4


004


编程


编译


10min


描述:if结构使用错误


3/12


5


005


编程


编译


5min


描述:使题目不出现乘除时出错


3/13


6


006


编程


编译


5min


描述:使题目中加减法出现负数是出错

时间: 2024-08-01 09:38:16

四则运算2程序及运行的相关文章

四则运算3(四则运算2程序的扩展)

题目:选一个方向,将四则运算2程序进行扩展: 方向:让程序能够接受用户输入的答案,并判定对错,最后输出做对题的数量: 思路:将每道题的正确结果保存在数组daan[]中,将用户给出的答案定义为result.当(result==daan[])时,输出“用户所给答案正确”,否则输出“答案错误,正确答案为daan[]” 具体程序代码为: 1 #include<iostream.h> 2 #include<stdlib.h>//使用随机函数 3 #include<time.h>/

程序的运行顺序[转]

关於程序的运行顺序 我们知道 Linux 是多人多工的环境,由 top 的输出结果我们也发现, 系统同时间有非常多的程序在运行中,只是绝大部分的程序都在休眠 (sleeping) 状态而已. 想一想,如果所有的程序同时被唤醒,那么 CPU 应该要先处理那个程序呢?也就是说,那个程序被运行的优先序比较高? 这就得要考虑到程序的优先运行序 (Priority) 与 CPU 排程罗! CPU 排程与前一章的例行性工作排程并不一样. CPU 排程指的是每支程序被 CPU 运行的演算守则, 而例行性工作排

linux程序后台运行

linux命令后台运行  有两种方式: 1. command & : 后台运行,你关掉终端会停止运行   2. nohup command & : 后台运行,你关掉终端也会继续运行 一. 简介     Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务.因此在任务管理上也有别具特色的管理思想.我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和bg 命令,让你轻松

MFC第一节-windows程序内部运行机制

一.窗口 设计窗口类时: 1 typedef struct _WNDCLASS{ 2 UINT style; //如水平.垂直变化是否重绘,禁用Close,检测双击 3 WNDPROC lpfnWndProc;//窗口过程函数句柄 4 int cbClsExtra;//类附加内存 5 int cbWndExtra;//窗口附加内存 6 HANDLE hInstance;//实例句柄 7 HANDLE hIcon;//图标 8 HCURSOR hCursor;//光标 9 HBRUSH hbrBa

玩转VC++实现程序开机运行及注册表修改

 一.方案 要实现Windows程序开机运行,需要在注册表中相关位置加入键值.所谓的键可以是你程序的名称,值就是你程序的所在目录.所谓的相关位置有两处: 主键HKEY_LOCAL_MACHINE,Software\Microsoft\Windows\CurrentVersion\Run下. 主键HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run下. 区别就是前者针对机器上所有用户,而后者只针对当前用户. 在编程中对

windows下python脚本程序的运行

c:\python33\python.exe c:\python33\trycoding.py windows下python脚本程序的运行,布布扣,bubuko.com

Web程序的运行原理及流程(一)

自己做Web程序的开发也有两年多了 从最开始跟风学框架  到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来  我当时第一次做WEB项目看的书是struts2 + spring + hibernate 从入门到精通 迷迷糊糊的看完了  顺着步骤一步步搭建环境  也不知道花了多久才跑通  其实框架帮我做了很多事情 我自己那个时候都不知道 现在 我建议使用框架的同时 多注意框架到底帮你做了什么 这对一个web程序员的进阶非常重要 以后也会

内存的划分 &amp; 程序代码运行时内存工作流程

内存的划分: 1,寄存器. 2,本地方法区. 3,方法区. 4,栈内存. 存储的都是局部变量. 而且变量所属的作用域一旦结束,该变量就自动释放. 5,堆内存. 存储是数组和对象(其实数组就是对象) ,凡是new建立的都在堆中. 特点: 1)每一个实体都有首地址值. 2)堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同.整数是0,小数0.0或者0.0f,boolean类型是false,char类型是 '\u0000',引用数据类型是NULL 3)垃圾回收机制. 全局变量和局部变量的区别:

关于&lt;printf重定向到串口导致程序无法运行&gt;的问题

摘自:http://www.openedv.com/posts/list/3172.htm usart这部分代码我也是从网上copy出来的,一下是作者的解释:简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNU