程式實現自動生成30道四則運算題目(2)

2022-04-21 08:56:42 字數 2600 閱讀 6109

繼上一次的任務後,本週老師又給自動出題系統提出了新的要求,我感覺我跟二柱子

一樣可憐,本次老師的要求是

1.題目避免重複

2.題目可以定製(數量/列印方式)

3.可以控制一下引數

(1)是否有乘除法

(2)是否有括號(最多可以支援十個數參與運算)

(3)數值範圍

(4)加減有無負數

(5)除法有無餘數

針對本次任務,我們逐個要求,逐個分析

對於題目避免重複可以用建立字串陣列,進行字串之間相互比較來解決,另外題目

可以定製通過隨機數生成題目數並帶入迴圈解決,同時列印方式可以用檔案輸入輸出流

把資料存到檔案裡。對於是否有乘除法,可以把+ - * /存到陣列裡,隨機呼叫

數值範圍可以用隨機數進行範圍控制,本題的難點在是否能生成括號,

括號是用來提公升優先順序,對於這個問題我們可以用迴圈呼叫來實現,具體含義是

四則運算表示式可以看成 表示式1+符號+表示式2的模式,在進入迴圈開表示式

可以隨機選擇放在表示式1或表示式2上,也可以決定有無括號,這樣用隨機生成

的運算數的個數決定迴圈的次數,加減有無負數和除法有無餘數,這裡只對兩個

運算數的表示式進行了操作。

下面是本次實驗源**:

//

隨機生成四則運算表示式 楊超群 2016.3.12

#include#include

#include

#include

#include

using

namespace

std;

string str1[4]=;

intnum1,num2,num3,num4,num5,num6,num7,num8,num9,num10,n,m,a,b;

char str2[25

];char str3[25

];string str4[100

];void input(int n,int

p) num1=rand()%100+1

; num2=rand()%100+1

; num3=rand()%4

; num8=num1;

num9=num2;

num10=num3;

itoa(num1,str2,

10);

itoa(num2,str3,

10);

str=str2+str1[num3]+str3;

n=n-2

;

while(n!=0) //

當n不等於0時,迴圈生成str,即表示式+符號+表示式的形式

else

//上乙個str加括號

}else

//上乙個str放在符號的右邊

else

//上乙個str加括號

}n--;

}str4[p]=str; //

把str存入字串陣列str4中

for(int i=0;i//

查詢四則表示式是否有重複

if(str4[i]==str4[p])

input(m,p);

cout

outfile

if(m==2

)

else

if(num10==1) //

減法有無負數

else

if(num10==2

)

else

if(num10==3) //

除法有無餘數

}cout

<

}void changenum(int

n) }

}void

main()

srand((unsigned)time(null));

//隨機種子

cout<

輸入你想做的題目數:";

cin>>n;

changenum(n);

cout

<

四則表示式沒有重複

"<

}

如下是不同題目數量的結果截圖:

題目數量為5

相應的檔案輸出

題目數量為30

相應的檔案輸出

總結:本次實驗有點倉促,勉勉強強符合,有很多瑕疵的地方,真分數沒有弄

0值判斷沒有寫,大於兩個數的運算結果沒有計算,以後逐個完善,希望做的更好。

自動生成四則運算

軟體工程導論 作業要求 homework 11376 這個作業的目標 生成乙個自動生成四則運算的程式 學號3190704110 include int right 0 int wrong 0 void add else void minu else void mul else void di els...

四則運算自動生成

1 能夠自動生成四則運算練習題 2 可以定製題目數量 3 使用者可以選擇運算子 4 使用者設定最大數 如十以內 百以內等 5 使用者選擇是否有括號 是否有小數 6 使用者選擇輸出方式 codeblocks 姓名班級 位址 牛斌帥1605班 房旭1604班 在程式設計過程中我們也遇到了種種問題並進行解...

自動生成四則運算

import random list1 a int input 計算數字最大是 sym def szys f random.randint 0,3 n1 random.randint 1,10 n2 random.randint 1,10 n1,n2 max n1,n2 min n1,n2 resu...