信仰2016

导航

 

实验要求:

像二柱子那样,花二十分钟写一个能自动生成小学四则运算题目的 软件,要求:除了整数以外,还要支持真分数的四则运算。

主要思路:

利用随机数 产生整数 真分数 以及四个代表运算符号的数字,唯一的复杂点事要判断除数是否为零,整数运算使用重新生成随机数的方法,当真分数运算中除数为零时使用分子分母同时加1的方法处理。

#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;
int main()
{
int num1, num2, sym;
srand((int)time(NULL));
for (int i = 1; i < 30; i++)
{
num1 = rand() % 100;
num2 = rand() % 100;
int k = rand() % 2;
sym = rand() % 4;

if (k == 1) //-------------------整数运算
{
if (sym == 0)
{
cout << num1 << "+" << num2 << "=" << endl;
}
if (sym == 1)
{
cout << num1 << "-" << num2 << "=" << endl;
}
if (sym == 2)
{
cout << num1 << "*" << num2 << "=" << endl;
}
if (sym == 3)
{
if (num2 == 0)
{
num2 = rand() % 100 + 1;
cout << num1 << "/" << num2 << "=" << endl;
}
else
cout << num1 << "/" << num2 << "=" << endl;
}
}

if (k == 0) //-------------------真分数运算
{
int a, b, c, d;
a = rand() % 100;
b = rand() % 100;
c = rand() % 100;
d = rand() % 100;
for (;;)
{
if ((a > b&&b !=0)&&(c>d&&d!=0))
{
num1 = b / a;
num2 = d / c;
break;
}
else
a = rand() % 100;
b = rand() % 100;
c = rand() % 100;
d = rand() % 100;

}
if (sym == 0)
{
cout <<b<<"/"<<a<< "+" << d<<"/"<<c << "=" << endl;
}
if (sym == 1)
{
cout << b << "/" << a << "-" << d << "/" << c << "=" << endl;
}
if (sym == 2)
{
cout << b << "/" << a << "*" << d << "/" << c << "=" << endl;
}
if (sym == 3)
{
if (d == 0)
{
num2 = (d+1)/(c+1);
cout << b << "/" << a << " / " << d << "/" << c << "=" << endl;
}
else
cout << b << "/" << a << " / " << d << "/" << c << "=" << endl;
}
}
}
return 0;
}

实验截图:

总结:(上课未完成的原因)

这是软件工程课留的第一个程序作业,没有在课上及时完成的原因经过分析有以下几个方面;

一,编程经验太少,编程思路不清晰,没有一个明确的思路,上来就编写 导致完成了80%的时候后头看发现后面继续不下去了,所以只能推翻重新编写;

二,第一次面对这样现场出题要求立刻写设计思路的情况,有点慌乱不知所措;

 

本程序主要运用了

rand()%100产生随机数
srand((int)time(NULL));做时间种子

课上写思路用时30分钟  实际编写过程中通过网上查资料 问同学 学习以上两个代码 编写时间一个半小时。

posted on 2016-03-06 13:01  信仰2016  阅读(226)  评论(1)    收藏  举报