C语言寒假大作战04
这个作业属于哪个课程? | https://edu.cnblogs.com/campus/zswxy/CST2019-2 |
---|---|
这个作业要求在哪里? | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10279 |
这个作业的目标 | 利用程序编程完成“口算题菜单”,并使其能够完成简单的加减乘除,且求出正确答案,最后将其上传至码云上 |
作业正文 | https://i-beta.cnblogs.com/posts/edit |
参考文献 | 随机数rand,码云gitee,学长写的Git操作快速入门,百度(%d与%g)(如何在码云上添加文件夹)等。 |
2.2.2 设计思路和遇到的问题
思路:在制作“口算题菜单”这个程序时,由于前面的设计与上一次作业类似,只需要的出答案即可,便在循环内引入新的函数以此来表现所求出结果即可。 问题 :1.在输入乘除时没有考虑0的情况; 2.乘除时没有使用%lf函数导致编写错误; 3.乘除时没有使用float导致只能求乘法而作不出除法。
2.2.3 程序结果截图
2.2.4 程序代码
#include<stdio.h> #include<stdlib.h> #include<time.h> int first(int a) { char op; for (int i = 0; i < a; i++) { int a1 = rand() % 10, a2 = rand() % 10; if (rand() % 10 % 2 == 0) op = '+'; else op = '-'; if (op == '+') printf("%d %c %d = %d\n", a1, op, a2, a1 + a2); else printf("%d %c %d = %d\n", a1, op, a2, a1 - a2); } return 0; } int second(int b) { char op; for (int i = 0; i < b; i++) { int b1 = rand() % 10, b2 = rand() % 10; double b3 = (float)b1 /b2; if (rand() % 10 % 2 == 0) op = '/'; else op = '*'; if (b1 == 0 || b2 == 0) printf("%d %c %d = 0\n", b1, op, b2); else if (op == '/') printf("%d %c %d = %lf\n", b1, op, b2, b3); else printf("%d %c %d = %d\n", b1, op, b2, b1 * b2); } return 0; } int thrid(int d) { int i, op1, op2; for (i = 0; i < 10; i++) { int c1 = rand() % 100; int c2 = rand() % 100; int c3 = rand() % 100; int c4, result1; double result2, result3, result4; c4 = rand() % 4 + 1; switch (c4) { case 1:result1 = c1 + c2 * c3; printf("%d + %d * %d = %d\n", c1, c2, c3, result1); break; case 2:result2 = c1 * c2 / (float)c3; printf("%d * %d / %d = %lf\n", c1, c2, c3, result2); break; case 3:result3 = (float)c1 / c2 - c3; printf("%d / %d - %d = %lf\n", c1, c2, c3, result3); break; case 4:result4 = (float)c1 / c2 * c3; printf("%d / %d * %d = %lf\n", c1, c2, c3, result4); break; } } return 0; } int help(int opt) { opt = -1; while (opt != 0) { printf("操作列表:\n"); printf("1)一年级 2)二年级 3)三年级\n"); printf("4)帮助 5)退出程序\n"); return opt; } } int menu(int c) { if (c == 1)printf("现在是一年级题目:\n请输入生成的个数>"); else if (c == 2)printf("现在是二年级题目:\n请输入生成的个数>"); else printf("现在是三年级题目:\n请输入生成的个数>"); return 0; } int main() { printf("========== 口算生成器 ==========\n"); printf("欢迎使用口算生成器 :\n \n"); printf("帮助信息:\n您需要输入命令代号来进行操作, 且\n一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n"); printf("\n"); printf("操作列表:\n"); printf("1)一年级 2)二年级 3)三年级\n"); printf("4)帮助 5)退出程序\n"); int opt, n; time_t t; srand((unsigned)time(&t)); b: printf("请输入操作\n\n\n"); scanf_s("%d", &opt); while (opt != 0) { switch (opt) { case 1:menu(opt); scanf_s("%d", &n); first(n); goto b; case 2:menu(opt); scanf_s("%d", &n); second(n); goto b; case 3:menu(opt); scanf_s("%d", &n); thrid(n); goto b; case 4:help(opt); goto b; case 5:printf("程序结束,欢迎下次使用任意键结束......"); return 0; default:printf("Error!!!\n错误操作指令,请重新输入\n"); goto b; } } }
2.2.5 Gitee上传截图与链接
码云链接:
https://gitee.com/ouyang_yuanyuan/C-20199262
来源:https://www.cnblogs.com/a183445395/p/12298899.html