一:设计思路
通过随机函数始末位置来确定题目范围,通过用户输入选择项,确定题目难度(有无乘除,结果有无负数,除法有无余数)。通过用户输入行间隔和列数确定打印格式。
二:源程序
1 /*程序名:四则运算*/ 2 #include<iostream.h> 3 #include<stdlib.h> 4 #include<iomanip.h> 5 int main() 6 { 7 int op1,op2; 8 int min,max; 9 int judgeopera; //有无乘除判断 10 int judgesign; //有无正负判断 11 int judgeremain; //有无余数判断 12 int count; //题目数量 13 int yunsuan; //确定运算符 14 int j; 15 int row; //行间隔 16 int column; //列数 17 int flag=0; 18 srand((unsigned)time(0)); 19 cout<<"请输入数值范围:"; 20 cin>>min>>max; 21 cout<<"请输入输出行间隔:"; 22 cin>>row; 23 cout<<"请输入输出列数:"; 24 cin>>column; 25 char yun[5]={‘+‘,‘-‘,‘*‘,‘/‘}; 26 cout<<"输入题目数量:"; 27 cin>>count; 28 cout<<"是否含有乘除(1表示Yes,2表示No)"; 29 cin>>judgeopera; 30 while(judgeopera!=1&&judgeopera!=2) //如果输入不符合,重新输入 31 { 32 cout<<"重新输入:"; 33 cin>>judgeopera; 34 } 35 cout<<"是否允许负数存在(1表示Yes,2表示No)"; 36 cin>>judgesign; 37 while(judgesign!=1&&judgesign!=2) 38 { 39 cout<<"重新输入:"; 40 cin>>judgesign; 41 } 42 if(judgeopera==1) 43 { 44 cout<<"有乘除法时是否允许余数存在(1表示Yes,2表示No)"; 45 cin>>judgeremain; 46 while(judgeremain!=1&&judgeremain!=2) 47 { 48 cout<<"重新输入:"; 49 cin>>judgeremain; 50 } 51 } 52 for(int i=0;i<count;i++) 53 { 54 55 op1=int(rand()%(max-min+1))+min; 56 op2=int(rand()%(max-min+1))+min; 57 if(judgeopera==1) 58 { 59 yunsuan=int(rand()%4); 60 if(judgesign==1) 61 { 62 if(judgeremain==1) //有乘除,有负数,有余数部分 63 { 64 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 65 flag=flag+1; 66 } 67 else //由乘除,有负数,无余数部分 68 { 69 if(yunsuan==3) 70 { 71 while(op1%op2!=0) 72 { 73 74 op1=int(rand()%(max-min+1))+min; 75 op2=int(rand()%(max-min+1))+min; 76 } 77 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 78 flag=flag+1; 79 } 80 else 81 { 82 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 83 flag=flag+1; 84 } 85 } 86 } 87 else //有乘除,无负数, 88 { 89 if(yunsuan==1) 90 { 91 while(op1<op2) 92 { 93 94 op1=int(rand()%(max-min+1))+min; 95 op2=int(rand()%(max-min+1))+min; 96 } 97 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 98 flag=flag+1; 99 } 100 else 101 { 102 if(judgeremain==1) //有乘除,无负数,有余数部分 103 { 104 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 105 flag=flag+1; 106 } 107 else 108 { 109 if(yunsuan==3) 110 { 111 while(op1%op2!=0) 112 { 113 op1=int(rand()%(max-min+1))+min; 114 op2=int(rand()%(max-min+1))+min; 115 } 116 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 117 flag=flag+1; 118 } 119 else 120 { 121 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 122 flag=flag+1; 123 } 124 } 125 } 126 } 127 } 128 else //无乘除部分 129 { 130 131 yunsuan=int(rand()%2); 132 if(judgesign==1) 133 { 134 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 135 flag=flag+1; 136 } 137 else 138 { 139 if(yunsuan==1) 140 { 141 while(op1<op2) 142 { 143 op1=int(rand()%(max-min+1))+min; 144 op2=int(rand()%(max-min+1))+min; 145 } 146 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 147 flag=flag+1; 148 } 149 else 150 { 151 cout<<i+1<<"、"<<op1<<yun[yunsuan]<<op2<<"\t"; 152 flag=flag+1; 153 } 154 } 155 } 156 if(flag==column) //列数设置 157 { 158 for(int p=0;p<=row;p++) //行间隔设置 159 { 160 cout<<endl; 161 } 162 flag=0; 163 } 164 } 165 return 0; 166 }
三:截图
四:psp
一、项目计划总结:
周活动总结表
姓名: 王童博 日期:2015/3/15
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
日总计 |
||
周日 |
|||||||
周一 |
|||||||
周二 |
120 |
120 |
|||||
周三 |
50 |
50 |
|||||
周四 |
50 |
50 |
|||||
周五 |
120 |
60 |
180 |
||||
周六 |
100 |
100 |
|||||
周总结 |
240 |
210 |
50 |
500 |
阶段时间和效率 周数(上一次周活动表的周数+1):1
不包括上一周在内的累计时间
总计 |
|||||||
平均 |
|||||||
最大 |
|||||||
最小 |
以前各周的累计时间
总计 |
240 |
210 |
20 |
500 |
|||
平均 |
240 |
210 |
20 |
500 |
|||
最大 |
240 |
210 |
20 |
500 |
|||
最小 |
240 |
210 |
20 |
500 |
二、时间记录表:
学生 王童博 日期 2015/3/15
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3/11 |
7:00 |
7:50 |
50 |
编程 |
||
3/12 |
9:00 |
9:50 |
50 |
查阅资料 |
||
3/13 |
8:00 |
9:00 |
60 |
编程 |
||
3/14 |
6:50 |
8:30 |
100 |
编程 |
||
三、缺陷记录日志:
学生 王童博
日期 3/15
教员 王建民
程序号 四则运算
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/11 |
1 |
范围 |
编码 |
运行测试 |
2min |
|
输入错误,导致程序崩溃。设置条件,输入错误,则重新输入 |
||||||
3/13 |
2 |
函数 |
编码 |
运行测试 |
2min |
|
Rand函数的随机性。使用srand来进行 |
||||||
3/14 |
3 |
可能性没有考虑周全 |
编码 |
运行测试 |
10min |
|
当无余数时,会产生空题。重新生成运算解决问题, |
||||||
五:总结
此次课堂练习,当然了课堂上 没有完成。在课下通过查找资料,完成了几点功能。但是对于括号和小数的精度则没有实现。完成的过程中遇到许多问题,本想以函数形式展现,可是以我的思路写下来,if else可以完成所需要求。不过丧失了程序的模块化。整个程序看起来有点杂。对于使用链表来存储运算题,最后输出。通过查询有无相同有无重复蛮好的想法,但由于对链表的不熟悉导致失败。在以后的试验中还得强化自己编程能力。来弥补一年的空缺。
时间: 2024-10-16 23:16:52