博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程第一次作业
阅读量:6910 次
发布时间:2019-06-27

本文共 2497 字,大约阅读时间需要 8 分钟。

一、题目:

      阿超有个儿子上小学二年级,老师每天让家长给孩子出30道加减法题,虽然不多,但是每天都做也算是个负担,阿超作为一个老牌程序员当然想用计算机来解决这个小问题,目前对于这个问题对于任何语言都不是问题,比如:

      C/C++、C#、Java、Python、VB、JavaScript、Perl……

    具体要求如下:

  • 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
  • 除了整数外,还要支持真分数的四则运算

    请大家用任何一种自己擅长的语言来编写这段程序,并把程序的介绍和自己编写的过程写一个博客

二、分析:

      这道题要求的是出题,所以我想到应该用随机数生成来做这道题。在选择编程语言是我选择了C++来实现这个问题。当然除了生成题目,为了方便检查我还直接设置了四则运算,直接生成结果方便阿超检查孩子作业。题目还要求进行真分数运算,为了方便,我将真分数和整数运算分成了两个函数,当输入1时,系统随机生成的为整数,进行整数运算,当输入为其他数时,则生成的是真分数运算。

三、代码:

#include<iostream.h>

#include<stdlib.h>
#include<conio.h>

void DealFenshu(int m, int a[][2])

{
for(int p=0;p<m;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%10;
while(j==0||i>=j)
{
i=(int)rand()%10;
j=(int)rand()%10;
}
int x=(int)rand()%10;
int y=(int)rand()%10;
while(y==0||x>=y)
{
x=(int)rand()%10;
y=(int)rand()%10;
}
int k=(int)rand()%100/25;
switch(k)
{
case 0:
cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*y+x*j;
a[p][1]=j*y;
break;
case 1:
cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*y-x*j;
a[p][1]=j*y;
break;
case 2:
cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*x;
a[p][1]=j*y;
break;
case 3:
a[p][0]=i*y;
a[p][1]=j*x;
cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
}
if(p%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}

}

void DisplayFenshu(int a[][2],int w,int m)
{
if(w==1)
{
for(int q=0;q<m;q++)
{
if(a[q][0]==0)
cout<<"0"<<'\t';
else
cout<<a[q][0]<<"/"<<a[q][1]<<'\t';
if(q%5==4)
{
cout<<endl;
}
}
}
else
{};
}
void DealInt(int m,int a[])
{
for(int p=0;p<m;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%10;
int k=(int)rand()%100/25;
switch(k)
{
case 0:
cout<<i<<"+"<<j<<"=";
a[p]=i+j;
break;
case 1:
cout<<j<<"-"<<i<<"=";
a[p]=j-i;
break;
case 2:
cout<<i<<"*"<<j<<"=";
a[p]=i*j;
break;
case 3:
try
{
a[p]=i/j;
cout<<i<<"/"<<j<<"=";
}
catch(...)
{
p--;
}

}

if(p%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}
}
void DisplayInt(int a[],int w,int m)
{
if(w==1)
{
for(int q=0;q<m;q++)
{
cout<<a[q]<<'\t';
if(q%5==4)
{
cout<<endl;
}
}
}
else
{};
}
void main()
{
int p;
do
{
system("cls");
int a[1000],b[1000][2];
int m,n,w;
cout<<"请输入生成的四则运算题个数:";
cin>>m;
cout<<endl;
cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
cin>>n;
cout<<endl;
if(n==1)
{
DealInt(m,a);
cout<<endl;
}
else
{
DealFenshu(m,b);
cout<<endl;
}
cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
cin>>w;
if(n==1)
{
DisplayInt(a,w,m);
}
else
{
DisplayFenshu(b,w,m);
}
cout<<endl;
cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
cin>>p;
cout<<endl;
}while(1==p);

}

   

转载于:https://www.cnblogs.com/huyifan30/p/5269521.html

你可能感兴趣的文章
header的安全配置指南
查看>>
W3C CSS Transforms摘译
查看>>
Logo设计的简要可行步骤
查看>>
ES6之Set和Map
查看>>
动画-仿微博弹簧动画
查看>>
[译] 单向用户界面架构
查看>>
shell script
查看>>
聊聊rocketmq的KVConfigManager
查看>>
实现立方体旋转
查看>>
学习牵引力UI设计,改变了青春梦想!
查看>>
ES6 系列之 Babel 是如何编译 Class 的(下)
查看>>
CAS 无锁式同步机制
查看>>
前端人员必看周刊和公众号
查看>>
SSProgressHUD - 加载动画提示、文字和图片提示、进度加载提示、可自定义、方便的API调用...
查看>>
实现一个简化版的vue-router
查看>>
Flv封装格式
查看>>
Android RecyclerView实现头部悬浮吸顶效果
查看>>
Python网络爬虫(七) 深度爬虫CrawlSpider
查看>>
使用selenium抓取华尔街见闻和新浪财经数据
查看>>
ListView与EditText冲突问题解决
查看>>