日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四则运算2+psp0

發布時間:2023/12/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四则运算2+psp0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序要求:

1.題目避免重復

2.可定制(數量\打印方式)

3.可以一下控制參數 ??

? ① 是否有乘除法

??② 是否有括號(最多支持十個數參與運算)

??③ 數值范圍

??④加減有無負數 ??

? ⑤除法有無余數

分析:① 如果是兩個數的算式很容易就可以輸出,但是多個數就有點兒難住我了,仔細想想可以將一個算式看作為一個數再加上一個符號和一個數就可以輸出,但int型和char型無法一起輸出,于是我就去網上尋找解決辦法,找到了itoa()函數,這個函數可以將int型轉為字符型,這樣就可以將一個算式作為一個string字符串輸出,具體的用法我是在? http://www.cnblogs.com/lidabo/archive/2012/07/10/2584706.html??和http://blog.csdn.net/lwj103862095/article/details/12005105?? 這個博客上學習的。將整數型轉為字符型后加入括號也就容易了許多,我是用這樣一個語句加入的:str_num1 = '(' + str_num1 + ')',在字符串str_num的左右添加括號。

????? ? ② 選擇是否添加乘除法,首先建立一個存儲符號的數組,如果不添加乘除就隨機生成1或2兩個數,1代表“+”,2代表“-”,如果添加乘除就隨機生成1-4四個數,1代表“+”,2代表“-”,3代表“*”,4代表“÷”

??????? ③數值范圍的控制:num1 = rand() % (max - min + 1) + min;// 隨機生成min-max的整數

??????? ④加減有無負數和除法有無余數這兩個功能目前還沒有實現,我感覺這兩個功能的實現如果我一開始用二維數組寫這個程序會容易很多,現在我用itoa()函數沒有寫出來,不過我會繼續改進一下,不然我就用二維數組嘗試重新寫一個。

?

1 #include <iostream> 2 #include <time.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <math.h> 6 #include <fstream> 7 #include <string> 8 using namespace std; 9 10 11 //數字轉換為字符串 12 string int_string(int number) 13 { 14 int temp = abs(number);//取絕對值 15 char str[100]; 16 _itoa_s(temp, str, 10); //運用itoa()函數將int型整數轉換為字符串 17 string str_= str; 18 return str_; 19 } 20 //算式轉換為字符串 21 string group(string str1, string str2, char m) // group:算式組合 22 { 23 string Equation; // equation:算式 24 Equation = str1 + m + str2; 25 return Equation; 26 } 27 //生成運算符 28 char mark(int opt) 29 { 30 int opt1, a; 31 char symbol[1]; // 符號數組 32 if (opt == 0) 33 { 34 opt1 = 2; 35 } 36 if (opt == 1) 37 { 38 opt1 = 4; 39 } 40 a = rand() % opt1+1; //隨機生成1-2或1-4的數,隨opt的值而定,opt意為是否含有乘除法 41 if (a == 1) symbol[0] = '+'; 42 if (a == 2) symbol[0] = '-'; 43 if (a == 3) symbol[0] = '*'; 44 if (a == 4) symbol[0] = '÷'; 45 return symbol[0]; 46 } 47 //主函數 48 void main() 49 { 50 int num1, num2, minus, remainder; 51 int opt, bracket, output, max, min, amount, control, b, c; 52 string str_num1, str_num2, value; //數字-字符串 53 cout << "是否需要包含乘除法?1(有),0(沒有):" << endl; 54 cin >> opt; //opt:選擇是否含有乘除法 55 cout << "是否含有括號?1(有),0(沒有):" << endl; 56 cin >> bracket; 57 cout << "是否需要包含負數1(有),0(沒有):" << endl; 58 cin >> minus; 59 cout << "題目是否要在文件中輸出?1(是),0(不是):" << endl; 60 cin >> output; 61 cout << "請輸入數字范圍:(格式為:最小數 空格 最大數)" << endl; 62 cin >> max>>min; 63 cout << "請輸入出題數量:" << endl; 64 cin >> amount; 65 string equation[100]; //定義數組 66 char symbol; 67 ofstream fout; 68 if (opt == 1) 69 { 70 cout << "除法有無余數,1(有),0(無)" << endl; 71 cin >> remainder; 72 } 73 if ( output == 1 ) 74 { 75 fout.open("output.txt"); 76 fout << amount << "道四則運算題如下:" << endl; 77 } 78 else 79 { 80 cout << amount << "道四則運算題如下:" << endl; 81 } 82 for (int i = 0; i<amount; i++) //為輸出規定題數 83 { 84 srand((int)time(NULL)); //設置時間種子,每次執行種子不同,生成不同的隨機數 85 num1 = rand() % (max - min + 1) + min;// 隨機生成min-max的整數 86 num2 = rand() % (max - min + 1) + min;// 隨機生成min-max的整數 87 control = rand() % 9 + 2; //控制是幾個數的運算式,最多支持10個數的運算式 88 symbol = mark(opt); 89 if (minus == 0) 90 { 91 if (remainder == 0) 92 { 93 str_num1 = int_string(num1); 94 str_num2 = int_string(num2); 95 } 96 if (remainder == 1)//?????????? 97 { 98 str_num1 = int_string(num1); 99 str_num2 = int_string(num2); 100 } 101 } 102 if (minus == 1)//??????????????錯誤! 103 { 104 if (remainder == 0) 105 { 106 str_num1 = int_string(num1); 107 str_num2 = int_string(num2); 108 } 109 if (remainder == 1)//?????????? 110 { 111 str_num1 = int_string(num1); 112 str_num2 = int_string(num2); 113 } 114 } 115 if (remainder == 0) 116 { 117 str_num1 = int_string(num1); 118 str_num2 = int_string(num2); 119 } 120 equation[i] = group(str_num1, str_num2, symbol); 121 if (control >= 2) 122 { 123 for (; control >= 2; control--) 124 { 125 symbol = mark(opt); 126 str_num1 = equation[i]; 127 if (bracket == 1) 128 { 129 b = rand() % 2; //隨機生成0-2的數 130 if (b == 0) //如果b=2,就在字符串str_num1的左右加上括號 131 { 132 str_num1 = '(' + str_num1 + ')'; 133 } 134 } 135 symbol = mark(opt); 136 str_num2 = int_string(num2); 137 b = rand() % 2; 138 if (b == 0) 139 { 140 value = str_num1; 141 str_num1 = str_num2; 142 str_num2 = value; 143 } 144 equation[i] = group(str_num1, str_num2, symbol); 145 } 146 } 147 //判斷是否重復 148 int repeat = 0; //repeat:重復 149 for (c = 0; c<i; c++) 150 { 151 if (equation[c] == equation[i]) 152 { 153 i = i - 1; 154 repeat = 1; 155 break; 156 } 157 } 158 if (repeat != 1)//若不重復,則輸出 159 { 160 if (output == 1) 161 { 162 fout << equation[i] << "=" << endl; 163 } 164 else 165 { 166 cout << equation[i] << "=" << endl; 167 } 168 } 169 170 } 171 if (output == 1) //輸出到文件 172 { 173 fout.close(); 174 } 175 }

?程序運行截圖:

問題(錯誤)1:num2每次生成的數都一樣

?

錯誤2:無法生成含乘除法的算式

?

總結:通過本次編程我發現我還有太多的不足,對于很多編程的基本知識還沒有掌握,現在想想以前總是對編程不上心,得過且過,真的很后悔,現在大三我一定積極努力,努力把編程水平提升上去。

項目計劃總結:

日期\任務聽課/時編寫程序/時查閱資料/時日總計/時
星期一210.53.5
星期二?2?2
星期三?314
星期四22?4
星期五?2.513.5
星期六?5?27
星期日????
周總計415.54.5

24

?時間記錄日志:

日期開始時間結束時間中斷時間凈時間活動備注
3/714:0015:5010100聽課軟件工程上課
?16:3017:30?60編寫程序作業
?21:0021:30?30閱讀書籍《構建之法》
3/819:0021:00?2090查資料,編寫程序作業
3/9?14:25?16:30?15?110編寫程序?作業
??17:00?18:00??60?查閱資料和閱讀構建之法?
??21:00?22::00?60??編寫程序?作業
3/1014:0015:50?10100聽課軟件工程上課
?21:2022:10?50查資料,編寫程序聊天+作業
3/1116:2018:30?10120繼續編程...?
?19:4020:30?50閱讀《構建之法》?
?21:0021:45?45查閱資料聊天+上網查閱資料
3/129:0011:40?160編程作業
??12:20?15:00??160?調試程序?
??15:00????寫博客?

?缺陷記錄日志:(錯誤很多,沒有專門去記錄,以后會注意養成這個習慣的)

日期編號引入階段排除階段修復時間&問題描述
3/71編碼編譯?
3/8????
3/9????
3/10-3/112編碼編譯?
3/11-3/123編碼編譯?
?????

轉載于:https://www.cnblogs.com/me-tts/p/5268771.html

總結

以上是生活随笔為你收集整理的四则运算2+psp0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。