題目:編寫一個四則運算測試題的程序,要求每道題都要隨機產生
解題思路:
1.編寫測試題,且為30道,就要用到循環函數,因此想到用for()函數
2.隨機產生兩個數,就想到用rand()函數。
注:1.rand()函數在使用時應有頭文件#include<stdlib.h>,我上課時由於沒有用此頭文件,程序一直無法運行
2.我在調試程序的過程中,隨機數一直不變,通過查資料我了解到,要想讓隨機數改變,需要提供一個種子,相同的種子會產生相同的隨機數,因此必須在rand()函數前 加上 srand(time(NULL));語句,且頭文件中加上#include<time.h>,這樣就能保證兩個隨機數能夠該變了。
3.隨機纏上四則運算要想每道題+ ,-,*,/都是隨機的,我就想到了用分支函數,通過用if 語句,我感覺有點麻煩,然后我就想到了switch()函數,且通過隨機產生0,1,2,3 四個數來進行分支,比較方便一點
4.考慮到小學生沒有學過負數,所以在做減法時,我想到了,要讓大數減小數來計算。還有就是除法,除數不能是0,因此我想到了如果除數是0,則重新出一道題,為了 保證題目為30道題,要讓i+1才行。
下面是我編寫的一個小程序:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int x,y,z,t;
srand(time(NULL));
cout<<"小學二年級四則運算測試題"<<endl;
for(int i=0;i<30;i++)
{
x=rand()%100;
y=rand()%100;
z=rand()%4;
switch(z)
{
case 0:
cout<<x<<"+"<<y<<"="<<endl;
break;
case 1:
if(x<y)
{
t=x;
x=y;
y=t;
}
cout<<x<<"-"<<y<<"="<<endl;
break;
case 2:
cout<<x<<"*"<<y<<"="<<endl;
break;
case 3:
if(y!=0)
{
cout<<x<<"/"<<y<<"="<<endl;
}
else
{
i=i-1;
}
break;
default:
cout<<"超出測試范圍"<<endl;
break;
}
}
cout<<"恭喜你已經完成了30道數學測試題"<<endl;
return 0;
}
運行截圖:
心得體會:
上課時由於自己的編程水平比較低,導致未能及時完成作業,課后認真完成了此次作業。