这个程序是机缘巧合之下,出于某个原因弄的,容错不是很完善,但是功能完整,需者自取
题目大致要求:(1)实现一个加减乘除运算的小型系统,进行整数的加、减、乘、除运算;(2)在每- -种运算下,由系统随机产生两个数( 数值大小建议为两位数以内)参加运算,当用户根据系统提供的公式进行计算,并输入计算结果后,系统判断结果的对错。如果结果正确,则显示“Very Good”, 否则,显示“Wrong!!!”。(3)每次选择一种运算后, 系统随机产生5道题目,当用户运算完毕后,系统给出正确率。如用户5题答对了3题,则显示正确率为60%。( 每道题目可以考虑最多给2次答题机会)。运算完毕后,系统将返回主菜单,供用户再次选择。
#include#include #include #include int Add_Operation(int x, int y); int Substract_Operation(int x, int y); int Multiply_Operation(int x, int y); int Divide_Operation(int x, int y); void SayGoodbye(); void SayHi(); int main() { SayHi(); bool flag = 0;//用来判断是否吃掉练习后输入的回车 while (1) { printf("n请选择一种运算作为练习(+,-,*,/),输入’#‘停止训练: "); char operational_rule; if (flag == 1) { char rubbish = getchar(); } flag = 1; while (1) { scanf("%c", &operational_rule); char rubbish = getchar(); //吃掉输入的回车 if (operational_rule == '#') { return 0; } if (operational_rule != '+' && operational_rule != '-' && operational_rule != '*' && operational_rule != '/') { printf("您输入的不是基本运算符,请重新输入:"); } else break; } int correct_times = 0; for (int i = 0; i < 5; i++) { srand((unsigned int)time(NULL)); int x = rand() % 100; int y = rand() % 100; if (operational_rule == '+') { correct_times += Add_Operation(x, y); } else if (operational_rule == '-') { correct_times += Substract_Operation(x, y); } else if (operational_rule == '*') { correct_times += Multiply_Operation(x, y); } else { correct_times += Divide_Operation(x, y); } } int accuracy = correct_times * 100 / 5; printf("恭喜您完成训练,您本次的正确率为: %d%%n", accuracy); } SayGoodbye(); return 0; } int Add_Operation(int x, int y) { printf("n请计算%d + %dn", x, y); for (int i = 2; i >= 1; i--) { printf("n您还有%d次作答机会!nn", i); printf("%d + %d = ", x, y); int user_ans; scanf("%d", &user_ans); if (user_ans == x + y) { printf("Goodn"); return 1; } else { printf("Wrongn"); continue; } } return 0; } int Substract_Operation(int x, int y) { printf("n请计算%d - %dn", x, y); for (int i = 2; i >= 1; i--) { printf("n您还有%d次作答机会!nn", i); printf("%d - %d = ", x, y); int user_ans; scanf("%d", &user_ans); if (user_ans == x - y) { printf("Goodn"); return 1; } else { printf("Wrongn"); continue; } } return 0; } int Multiply_Operation(int x, int y) { printf("n请计算%d * %dn", x, y); for (int i = 2; i >= 1; i--) { printf("n您还有%d次作答机会!nn", i); printf("%d * %d = ", x, y); int user_ans; scanf("%d", &user_ans); if (user_ans == x * y) { printf("Goodn"); return 1; } else { printf("Wrongn"); continue; } } return 0; } int Divide_Operation(int x, int y) { printf("n请计算%d / %d, 并四舍五入保留小数点后3位n", x, y); for (int i = 2; i >= 1; i--) { printf("n您还有%d次作答机会!nn", i); printf("%d / %d = ", x, y); double user_ans; scanf("%lf", &user_ans); user_ans = (int)(user_ans * 1000); double ans = (double)x / y; ans = (int)(ans * 1000 + 0.5); if (user_ans == ans) { printf("Goodn"); return 1; } else { printf("Wrongn"); continue; } } return 0; } void SayGoodbye() { system("color 0F"); printf("nnn 33[46m*******************感谢使用!******************* 33[0mn"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(200); printf(" 33[45m制作人————————XXX 33[0mn"); printf("n"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(200); printf(" 33[44m取材于————————《课本》 33[0mn"); printf("n"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(200); printf(" 33[41m取材于————————《c语言从入门到入土》 33[0mn"); printf("n"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(200); printf(" 33[42m取材于————————《算法与程序设计寄础》 33[0mn"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(100); printf("n"); Sleep(200); printf(" *******************下次再见!*******************n"); } void SayHi() { //颜色不喜欢可以自己调 system("color E1"); printf(" * 四则运算系统 * n"); printf(" o-------------------------$--------------------------on"); printf(" | 该系统实现了一个简单的加减乘除运算出题功能,系统会 |n"); printf(" | 根据您选择的运算随机产生五道题目,您可以根据相关要 |n"); printf(" | 求进行运算练习。 |n"); printf(" | |n"); printf(" | |n"); printf(" | 每次练习给予您两次作答机会,若第一次作答错误,可以 |n"); printf(" | 重新作答。在练习后会给您提供您这次练习的正确率供您 |n"); printf(" | 参考。 |n"); printf(" | |n"); printf(" | |n"); printf(" | 祝您使用愉快~ |n"); printf(" | |n"); printf(" 0-------------------------$--------------------------0n"); }



