C语言寒假大作战03
问 | 答 |
---|---|
这个作业属于那个课程 | 2019级计算机4班 |
这个作业要求在哪里 | C语言寒假大作战03 |
这个作业的目标 | 学会简单菜单的制作以及gitee基本操作的运用 |
作文正文 | https://www.cnblogs.com/zengghao/p/12296474.html |
其它参考文献 | https://www.runoob.com/cprogramming/c-function-rand.html |
1.1 设计思路和遇到的问题
设计思路:
根据上次作业所制作的菜单,此次主要是设计生成题目代码的编写,利用for循环实现题目的个数,在利用rand()函数生成随机数,用if语句判断符号的随机选用,三年级题目可以建立数组存下四个符号,用rand控制输出。需注意输入题目的格式以及除号后面不能为0的情况。
遇到的问题:
此次主要遇到的问题在三年级的题目方面,开始的时候没有用数组,把所有的符号组合情况都写了下来,这个时候除号后面为0的情况不好解决。后来通过朋友的帮助,建立数组存下四个符号用rand控制输出,由于不太熟悉其使用方法,还是没有解决三年级题目除号后不为0的情况,后来我干脆使所有生成的随机数都不为0,也就不会出现除号后为0的情况了。
1.2 程序结果截图
1.3 程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu();
void help();
void A();
void B();
void C();
void error();
int main()
{
int n=1,x;
printf("==========口算生成表==========\n");
printf("欢迎使用口算生成器\n");
printf("\n");
help();
printf("\n");
while(n!=0)
{
menu();
printf("请输入操作>");
scanf("%d",&x);
printf("<执行操作:)\n");
printf("\n");
printf("\n");
switch(x)
{
case 1:A();break;
case 2:B();break;
case 3:C();break;
case 4:help();break;
case 5:
n=0;
printf("程序结束, 欢迎下次使用\n");
printf("请按任意键继续...\n");
break;
default:error();break;
}
}
return 0;
}
void menu()
{
printf("操作列表:\n");
printf("1)一年级 2)二年级 3)三年级\n");
printf("4)帮助 5)退出程序\n");
}
void help()
{
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n");
printf("二年级题目为不超过百位的乘除法;\n");
printf("三年级题目为不超过百位的加减乘除混合题目.\n");
}
void A()
{
int o,a,b,c;
time_t t;
srand((unsigned) time(&t));
printf("现在是一年级题目:\n");
printf("请输入生成个数>\n");
scanf("%d",&o);
printf("<执行操作:)\n");
for (int i=0;i<o;i++)
{
a=rand() % 10;
b=rand() % 10;
c=rand() % 2;
if (c==0)
printf("%d + %d = ___\n",a,b);
else
printf("%d - %d = ___\n",a,b);
}
}
void B()
{
int o,a,b,c;
time_t t;
srand((unsigned) time(&t));
printf("现在是二年级题目:\n");
printf("请输入生成个数>\n");
scanf("%d",&o);
printf("<执行操作:)\n");
for (int i=0;i<o;i++)
{
a=rand() % 10;
b=rand() % 10;
c=rand() % 2;
if (c==0)
printf("%d * %d = ___\n",a,b);
else
while(b==0)
{
b=rand() % 10;
}
printf("%d / %d = ___\n",a,b);
}
}
void C()
{
int o,a,b,c,d;
time_t t;
srand((unsigned) time(&t));
printf("现在是三年级题目:\n");
printf("请输入生成个数>\n");
scanf("%d",&o);
printf("<执行操作:)\n");
char fh[4][6] = {"*","/","+","-"};
for (int i=0; i<o; i++)
{
a=rand() % 100;
b=rand() % 100;
c=rand() % 100;
while (a==0||b==0||c==0)
{
a=rand() % 100;b=rand() % 100;c=rand() % 100;
}
printf("%2d %s %2d %s %2d = ___\n",a,fh[rand() % 3],b,fh[rand() % 3],c);
}
}
void error()
{
printf("Error!!!\n");
printf("错误操作指令, 请重新输入\n");
printf("\n");
printf("\n");
}