四则运算2扩展---c++

题目:让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。

一、设计思想

1.存储用户输入答案,与正确答案比较得出总共对错数量。

二、源程序代码

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include "time.h"
  4 #include<stdio.h>
  5 int main ()
  6 {    
  7     int a,b,c,f,j,i,t,num,l,jj,cc,fw;//i,j,t是计数变量,a,b是运算数。
  8     int r=0;//正确数目。
  9     int e=0;//错误数目。
 10     char daan;
 11     cout<<"-----------------四则运算题----------------------"<<endl;
 12     cout<<endl;
 13     srand( (unsigned)time( NULL ) );//随机数种子为当前计算机时间。
 14     cout<<"*************请填写题目要求:********************"<<endl;
 15     cout<<"*                                               *"<<endl;
 16     cout<<"* 1.请输入要生成题目数num:                      *"<<endl;//选择题目数量。
 17     cout<<"* 2.请输入打印方式(列数l、行间距jj):          *"<<endl;//选择打印方式。
 18     cout<<"* 3.请选择有无乘除法cc(1代表有或0代表无):     *"<<endl;//有无乘除法。
 19     cout<<"* 4.请选择数的范围fw(fw是指该范围内最大的数):   *"<<endl;//选择数的范围。
 20     cout<<"* 5.请选择除法有无余数c(1代表有或0代表无):      *"<<endl;//选择除法有无余数。
 21     cout<<"* 6.请选择加减有无负数f(1代表有或0代表无):      *"<<endl;//选择加减有无负数。
 22     cout<<"*                                               *"<<endl;
 23     cout<<"*************************************************"<<endl;
 24     cout<<"请输入要生成题目数num:"<<endl;
 25     cin>>num;
 26     int a1[100000];//存储用户输入答案。
 27     int b1[100000];//正确答案。
 28     if(num<0)
 29     {
 30         cout<<"错了!  亲! 题目数量不能小于0,请重输:";
 31         cin>>num;
 32     }
 33     cout<<"请输入打印方式  (列数l):"<<endl;
 34     cin>>l;
 35     if(l<=0)
 36     {
 37         cout<<"错了!  亲! 列数不能小于等于0,请重输:";
 38         cin>>l;
 39     }
 40     cout<<"请输入打印方式  (行间距jj):"<<endl;
 41     cin>>jj;
 42     if(jj<=0)
 43     {
 44         cout<<"错了!  亲! 行间距不能小于等于0,请重输:";
 45         cin>>jj;
 46     }
 47     cout<<"请选择有无乘除法cc(1代表有或0代表无): "<<endl;
 48     cin>>cc;
 49     if(cc!=0&&cc!=1)
 50     {
 51         cout<<"错了!  亲! 请重输:";
 52         cin>>cc;
 53     }
 54     cout<<"请选择数的范围fw(fw是指该范围内最大的数):"<<endl;
 55     cin>>fw;
 56     cout<<"请选择除法有无余数c(1代表有或0代表无):"<<endl;
 57     cin>>c;
 58     if(c!=0&&c!=1)
 59     {
 60         cout<<"错了!  亲! 请重输:";
 61         cin>>c;
 62     }
 63     cout<<"请选择加减有无负数f(1代表有或0代表无):"<<endl;
 64     cin>>f;
 65     if(f!=0&&f!=1)
 66     {
 67         cout<<"错了!  亲! 请重输:";
 68         cin>>f;
 69     }
 70     cout<<endl;
 71     if(cc==1)
 72         cc=cc+3;
 73     else
 74         cc=cc+2;
 75     for(j=0;j<num;j++)
 76     {
 77         //产生随机数。
 78         a=rand()%fw;
 79         b=rand()%fw+1;//保证除数不为0。
 80         i=rand()%cc;
 81         cout<<"<"<<j+1<<">: ";
 82         switch(i)
 83         {
 84         case 0:
 85             cout<<a<<"+"<<b<<"=";
 86             b1[j]=a+b;
 87             break;
 88         case 1:
 89             if(f==0&&a<=b)
 90             { 
 91                 cout<<b<<"-"<<a<<"=";
 92                 b1[j]=b-a;
 93             }
 94             else
 95             {
 96                 cout<<a<<"-"<<b<<"=";
 97                 b1[j]=a-b;
 98             }
 99             break;
100         case 2:
101             cout<<a<<"*"<<b<<"=";
102             b1[j]=a*b;
103             break;
104         case 3:
105             if(a%b!=0&&c==0)
106             {
107                 cout<<a-a%b<<"/"<<b<<"=";
108                 b1[j]=(a-a%b)/b;
109             }
110             else
111             {
112                 cout<<a<<"/"<<b<<"=";
113                 b1[j]=a/b;
114             }
115             break;
116         }
117         cin>>a1[j];
118         if(j%l==l-1)
119         {
120             for(t=0;t<jj;t++)
121             cout<<endl;
122         }
123     }
124     cout<<endl;
125     for(j=0;j<num;j++)
126     {
127         if(b1[j]==a1[j])
128             r++;
129         else
130             e++;
131     }
132     cout<<"恭喜你做对了"<<r<<"道题目"<<endl;
133     cout<<"是否输出正确答案:(Y/N)";
134     cin>>daan;
135     if(daan=='Y')
136             for(j=0;j<num;j++)
137             {    
138                 cout<<"<"<<j+1<<">: "<<b1[j]<<endl;
139             }
140 
141     return 0;
142 }

三、运行截图

四、实验心得

以前写代码不注意添加{}导致修改错误

如:

 case 1:
 89             if(f==0&&a<=b)
 90             
 91                 cout<<b<<"-"<<a<<"=";
 92                 b1[j]=b-a;
 93             
 94             else
 95 

习惯真的很重要,设计中出现了逻辑错误,通过测试用例 得到解决。

五、PSP0级 记录表

                                 周活动记录总表

  姓名:董龙洋                                                   日期:2015.3.21

日期/任务

听课

编程

阅读

准备考试

日总计

周日

周一

周二

20

周三

周四

75

周五

50

周六

125

周总结

270

阶段时间和效率                            周数(上一次周活动表的周数+1):1

  不包括上一周在内的累计时间

总计

平均

最大

最小

  

以前各周的累积时间

时间记录表:

学生:董龙洋                        日期:2015.3.21

教师:王建民                        课程:psp

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3.17

9:30

9:50

0

20

课堂练习

3.19

16:05

19:20

60

75

四则运算

吃饭一小时

3.20

9;20

9:55

0

35

课堂练习

3.21

18:23

20:03

0

100

四则运算

缺陷记录日志:

学生:董龙洋

日期:2015.3.21

教师:王建民

程序员:

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3.20

1

写代码

编译

2min

3.21

2

写代码

执行

30min

逻辑错误

原文地址:https://www.cnblogs.com/dlyxx/p/4356148.html