四则运算终结版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算终结版相关的知识,希望对你有一定的参考价值。

一、题目

每个同学选一个方向,把程序扩展一下:
1、让程序能接受用户输入答案,并判定对错。并输出正确的错题数
2、把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目。
3、把程序变成一个Windows 图形界面的程序。
4、把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序)。(可以延期3周后)
5、选一个你从来没有学过的编程语言,试一试实现基本功能。

选择1

二、思路:1 用一个数组把结果存到里面去,用以计算结果

         2 用户输入的结果与正确答案相比对,给出提示信息并输出正确答案。

         3 有余数的情况是,先判断是否是除法,然后是的话就输入两个数,一个是商,一个是余数,判断答案是否正确。

三、源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
 
 void main( )
 {
     srand(time(NULL));//避免题目重复
     int i,j, x,y,t[100],b;//x,y表示两个数随机数,i表示题目的数量,t,b是在两个数相减中保证结果为正定义的变量
     int a[7];
      cout<<"请输入要打印的题目数:"<<endl;  
      cin>>a[0];
      while(a[0]<=0)  //题目数必须为正数
      {
          cout<<"请重新输入有效的题目数:"<<endl;
          cin>>a[0];
      };
      cout<<"请选择否有乘除法(是1;否0):"<<endl;
      cin>>a[1];
      while((a[1]!=1)&&(a[1]!=0)) //只能选择1或0
      {
          cout<<"请重新输入有效的数值:"<<endl;
          cin>>a[1];
      };
      cout<<"请输入运算数的范围:"<<endl;
      cin>>a[2];
      while(a[2]<=0)  //运算数必须为正数
      {
          cout<<"请重新输入有效的范围:"<<endl;
          cin>>a[2];
      };
     cout<<"请选择结果有无负数(是1;否0):"<<endl;
     cin>>a[3];
     while((a[3]!=1)&&(a[3]!=0))  //只能选择1或0
     {
         cout<<"请重新输入有效的数值:"<<endl;
         cin>>a[3];
     };
     cout<<"请选择结果有无余数(是1;否0):"<<endl;
     cin>>a[4];
     while((a[4]!=1)&&(a[4]!=0))  //只能选择1或0
     {
         cout<<"请重新输入有效的数值:"<<endl;
         cin>>a[4];
     };
     cout<<"请输入要打印的列数: "<<endl;
     cin>>a[5];
     while(a[5]<=0)
     {
         cout<<"请重新输入有效列数:  "<<endl;
         cin>>a[5];
     };
     cout<<"请输入每行间隔数: "<<endl;
     cin>>a[6];
     
     int result[100],resulty[100]={0},daan[100],yushu[100]={0};
    for(i=0;i<a[0];i++)
    {
        if(a[1]==1)//有乘除法的运算
        {
            t[i]=rand()%4;
        }
        else//无乘除法的运算
        {
            t[i]=rand()%2;
        }
        x=rand()%a[2]+1;
        y=rand()%a[2]+1;
        if(t[i]==0)//加法
        {
             
           
           if((i+1)%a[5]==0)//判断是否换行
           {
               cout<<i+1<<"·"<<x<<"+"<<y<<"=";
               result[i]=x+y;
           if(a[6]!=0)
           {
               for(j=0;j<a[6];j++)
               {
                  cout<<endl;
               }
           }
           }
           else
           {
           cout<<i+1<<"·"<<x<<"+"<<y<<"="<<‘\\t‘;
            
           }
            
        }
        if(t[i]==1)//减法,考虑是否存在负数
        {
            if(a[3]==0)//不存在结果负数
            {
                b=x;
                x=y;
                y=b;
 
            }
            if(a[3]==1)//存在结果是负数
            {
 
            }
             
             
             if((i+1)%a[5]==0)//判断是否换行
             {
                 cout<<i+1<<"·"<<x<<"-"<<y<<"=";
                 result[i]=x-y;
              
                
               if(a[6]!=0)//如果间隔数不是零
               {
 
                   for(j=0;j<a[6];j++)
                   {
                       cout<<endl;
                   }
               }
             }
             else
             {
             cout<<i+1<<"·"<<x<<"-"<<y<<"="<<‘\\t‘;
 
             }
        }
        if(t[i]==2)//乘法
        {
             
             
             if((i+1)%a[5]==0)//判断是否换行
           {
              cout<<i+1<<"·"<<x<<"*"<<y<<"=";
              result[i]=x*y;
               if(a[6]!=0)
               {
                    
                
                   for(j=0;j<a[6];j++)
                   {
                       cout<<endl;
                   }
               }
             }
             else
             {
             cout<<i+1<<"·"<<x<<"*"<<y<<"="<<‘\\t‘;
             }
 
        }
        if(t[i]==3)//除法,考虑结果是否有余数
        {
            if(a[4]==1)//结果有余数
            {}
            else
            {
                while(x%y!=0)//不能整除,重新生成随机函数
                {
                    x=rand()%a[2]+1;
                    y=rand()%a[2]+1;
                };
 
            }
         
             
             if((i+1)%a[5]==0)//判断是否换行
           {
                
                cout<<i+1<<"·"<<x<<"/"<<y<<"=";
                result[i]=x/y;
                resulty[i]=x%y;
               if(a[6]!=0)
               {
                   for(j=0;j<a[6];j++)
                   {
                       cout<<endl;
                   }
               }
             }
             else
             {
        cout<<i+1<<"·"<<x<<"/"<<y<<"="<<‘\\t‘;
             }
        }
    }
    cout<<"请输入解题答案"<<endl;
    for(i=0;i<a[0];i++)
    {
        cout<<i+1<<".";
        if(t[i]==3)
        {
            cout<<"请输入商:";
            cin>>daan[i];
            cout<<"请输入余数:";
            cin>>yushu[i];
        }
        else
        {
            cin>>daan[i];
        }
        if(t[i]==3)
        {
            if(daan[i]==result[i]&&yushu[i]==resulty[i])
            {
                cout<<"答案正确,请输入下一题答案"<<endl;
            }
            else
            {
                cout<<"答案错误,正确答案为:"<<result[i]<<"  "<<resulty[i]<<endl;
            }
        }
        else
        {
            if(daan[i]==result[i])
            {
                cout<<"答案正确"<<endl;
            }
            else
            {
                cout<<"答案错误,正确答案为:"<<result[i]<<endl;
            }
        }
    }
    cout<<"结束,欢迎使用"<<endl;
}

 四、结果

技术分享

技术分享

五、实验总结

通过此次实验我收获颇多。第一,首先考虑结果的存放,我把她放到一个整形数组里,但是结果可能是有余数的,所以我就定义了两个数组一起作为结果

第二,然后我又想,只有除法的时候需要用到两个结果,一个用来存商,一个用来存余数,所以还得判断题目是否为除法

第三,此程序存在一定的不健壮性,因为我定义的数组为100,所以超过边界值就会出现溢出状况,会出现乱码

 第四,次程序存在一定的问题,还需继续改进。

六、

项目计划总结

周活动总结表

姓名:张瑶                                                       日期:2015/3/22

任务

日期

听课

编程

阅读课外数目

锻炼身体

写老师留得作业

业余活动

日总计

(分钟)

周日

 

180

 

120

 

300

600

周一

400

 

60

 

60

 

520

周二

300

 

30

120

 

 

450

周三

100

60

30

 

 

240

430

周四

200

30

30

120

 

 

380

周五

200

100

30

 

120

 

450

周六

 

400

 

&n

以上是关于四则运算终结版的主要内容,如果未能解决你的问题,请参考以下文章

某东搜索框终结版!!!

SQL Server数据全同步及价值分析[终结版]

裙子飞终结版(android)

设计模式+原型理解第四章:函数的三种角色+原型链终结版

计算器核心算法——终结版

oracle 11g安装教程终结版