軟體工程——四則運算Ⅱ(還有很大缺陷,忘指教)

來源:互聯網
上載者:User

標籤:

題目要求:隨機產生四則運算題目

//隨機四則運算要求:題目避免重複可定製數量,數值範圍、加減有無負數、除法有無餘數等

#include<iostream>
#include<time.h>
using namespace std;
void basic(int num,int cc,int mhs,int kgs,int pyu,int max,int nnum)       //基礎四則運算函數
{
 srand(time(NULL));
 int a[100];     //存放第一個運算元的數組
 int b[100];     //存放第二個運算元的數組
 int c[100];     //存放運算子的數組
 int n,o,p,q,m;
 int repet;      //控制是否重複  
 for(int i=0;i<num;i++)
 {
  n=rand()%max;
  a[i]=n;
  o=rand()%max;
  b[i]=o;
  p=rand()%cc;
  c[i]=p;
  q=rand()%2;
  m=rand()%2;
  while(nnum)
  {
   switch(q)
   {
   case(0):
    a[i]=-a[i];
    break;
   case(1):
    break;
   }
   break;
  }
  while(nnum)
  {
   switch(m)
   {
   case(0):
    b[i]=-b[i];
    break;
   case(1):
    break;
   }
   break;
  }
  repet=1;
  for(int j=0;j<i;j++)
  {
   if(a[i]==a[j]&&b[i]==b[j]&&c[i]==c[j])    //判斷是否有重複
   {
    i=i-1;
    repet=0;
   }
  }
  while(repet)
  {
   if(i%mhs==0)
   {
    cout<<endl;
   }
   switch(c[i])
   {
   case(0):
    cout<<"("<<i+1<<") "<<a[i]<<"+ "<<b[i]<<"=";
    break;
   case(1):
    cout<<"("<<i+1<<") "<<a[i]<<"- "<<b[i]<<"=";
    break;
   case(2):
    cout<<"("<<i+1<<") "<<a[i]<<"* "<<b[i]<<"=";
    break;
   case(3):
    {
     while(pyu)
     {
      if(a[i]%b[i]!=0)
       i=i-1;
      repet=0;
     }
     if(b[i]==0)       //判斷被除數是否為0,是0則不輸出
     {
      i=i-1;
      break;
     }
     else
     {
      cout<<"("<<i+1<<") "<<a[i]<<"/ "<<b[i]<<"=";
      break;
     }
    }
   }
   for(int k=0;k<kgs;k++)
   {
    cout<<"\t";
   }
   break;
  }
 }
 cout<<endl;
}

void main()
{
 int num1,cc1,m,n;
 int mhs1,kgs1,pyu1,max1,nnum1;
 while(n)
 {
  cout<<"                  隨機四則運算"<<endl;
  cout<<"--------------------------------------------------------"<<endl;
  cout<<"1、請輸入運算題的數目:";
  cin>>num1;
  cout<<endl;
  while(1)
  {
   cout<<"2、有乘除法請輸入0,沒有輸入1:";
   cin>>m;
   cout<<endl;
   if(m==0)
   {
    cc1=4;
    break;
   }
   else if(m==1)
   {
    cc1=2;
    break;
   }
   else
    cout<<"  輸入有誤,請重新輸入:1代表有乘除法,2代表無乘除法:";
  }
  if(m==0)
  {
   cout<<"  請選擇除法是否有餘數,有餘數則輸入0,沒有餘數輸入1:";
   cin>>pyu1;
   cout<<endl;
  }
  cout<<"3、請輸入是否有負數(0代表無負數,1代表有負數):";
  cin>>nnum1;
  cout<<endl;
  cout<<"4、請輸入數值範圍(最大值,預設從0開始,若有負數則從最大值的負數開始):";
  cin>>max1;
  cout<<endl;
  cout<<"5、請輸入列印方式:每行運算題的個數(建議3或4):";
  cin>>mhs1;
  cout<<endl;
  cout<<"    每列運算題之間的間隔(建議1或2):";
  cin>>kgs1;
  cout<<endl;
  cout<<"結果為:";
  basic(num1,cc1,mhs1,kgs1,pyu1,max1,nnum1);
  cout<<endl;
  cout<<"繼續請輸入1,退出輸入0:";
  cin>>n;
  cout<<endl;
 }
}

結果:

 

總結:

看到題目,初始想的是寫若干個函數區分別實現題目要求,但在編寫的過程中遇到了難題,有些地方拆分不開,便在一個函數中增加修改代碼實現新的要求導致本程式除了主函數外唯寫了一個函數,所有的要求都在這一個程式中完成,導致程式的擴充性很不好,編寫時找錯也不太好找。在編寫的過程中會有一些語句搭配忘記,比如while和break等。編寫代碼基礎知識不牢,之前練得比較少,導致有些語句要反覆實驗才能確定。題目還有不完善的地方,比如輸出的負數沒用括弧括起等。

軟體工程——四則運算Ⅱ(還有很大缺陷,忘指教)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.