程序設計思路:
1.運算式的輸出格式可以為 數字 運算符 數字,也可以為 數字 運算符 數字 運算符 數字,還可以是更復雜的式子,在此只實現了2-3個數字的運算式。
2.將式子分為兩類,第一類為20個,第二類為10個,分別用FOR循環控制輸出。
3.第一類式子稍簡單,只需通過隨機函數將兩個數字賦值,中間運算符通過數組下標的隨機賦值實現隨機性,再通過格式輸出即可
4.此時還要考慮運算符為 ‘/’,並且除數為0的情況,這時用if語句設置條件排除即可
5.計算第一類式子結果可以參考計算器的功能代碼,用switch語句實現判斷運算並存儲結果。
6.第二類式子參考第一類式子的輸出方式,結果需要考慮 運算符優先級,運算計算順序,因時間關系,計算結果暫未實現,以後再添加。
附上代碼:
1 //練習一,要求實現輸出小學四則運算表達式,能支持一個真分數的四則運算 2 //趙承聖 2016.3.5 3 #include<iostream> 4 #include<ctime> 5 using namespace std; 6 7 void exchange(int &a, int &b) //定義一個交換函數 8 { 9 int temp = a; 10 a = b; 11 b = temp; 12 } 13 14 void main() 15 { 16 srand((int)time(NULL)); //每次執行種子不同,生成不同的隨機數 17 int num1, num2,num3,snum,snum1; //定義變量通過隨機函數來獲得隨機數字num1,num2,num3和隨機符號snum,snum1 18 double result; //用result保存計算結果 19 char symbol[4]; //隨機計算符號數組 20 symbol[0] = '+'; 21 symbol[1] = '-'; 22 symbol[2] = '*'; 23 symbol[3] = '/'; 24 for (int sexp=0; sexp < 20;sexp++) //控制簡單表達式的個數為20個 25 { 26 num1 = rand() % 100; 27 num2 = rand() % 100; 28 snum = rand() % 4; 29 if (num2 == 0 && snum == 3) //除數為0的結果排除 30 break; 31 switch (snum) 32 { 33 case 0:result = num1 + num2; break; 34 case 1:result = num1 - num2; break; 35 case 2:result = num1 * num2; break; 36 case 3:double dnum1 = (int)num1; double dnum2 = (int)num2; result = dnum1 / dnum2; break; //將除的結果顯示為double型 37 } 38 cout << num1 << symbol[snum] << num2 << "="<<result<<endl; 39 } 40 for (int fexp = 0; fexp < 10; fexp++) //控制表達式的個數為10個 41 { 42 num1 = rand() % 100; 43 num2 = rand() % 100; 44 num3 = rand() % 100; 45 snum = rand() % 4; 46 snum1 = rand() % 4; 47 if ((num2 == 0 && snum == 3)||(num3==0&&snum1==3)) //除數為0的結果排除 48 break; 49 if (snum == 3 && num1 > num2) //如為假分數,則分子分母交換,調用exchange函數 50 exchange(num1,num2); 51 if (snum1 == 3 && num2 > num3) 52 exchange(num2, num3); 53 cout << num1 << symbol[snum] << num2 <<symbol[snum1]<<num3<< "="<< endl; 54 } 55 system("pause"); 56 }