C语言寒假大作战03
这个作业属于哪个课程 | 2019级计算机1班 (中南林业科技大学涉外学院) |
---|---|
这个作业要求在哪里 | C语言寒假大作战03作业要求 |
这个作业的目标 | 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数,熟悉随机数的操作 |
作业正文 | C语言寒假大作战03 |
其他参考文献 | 翁恺老师C语言猜数游戏随机数rand |
3.1 设计思路和遇到的问题
心路历程:我之前以为这个会很简单然鹅打脸来的太快,虽然它的操作的确是很简单,但是哈了吧唧的我一直想搞明白到底随机数它到底是个什么玩意儿,看了好多好多资料,历史记录占了一页。最后我在B站上面找到了翁恺老师的“猜数游戏”讲解,老师说,现在还不用太在意这到底是什么,只需要知道怎么做就行了,于是听话的我就照做,最后一下就搞定了。o( ̄▽ ̄)d
程序设计思路:头文件那里加上stdlib.h和time.h,还有我的自定义函数的开始都加上srand ((unsigned)time(NULL)),直接调用函数rand就成啦!关于整体的思路,就是用循环和if-else判定。一个萝卜一个坑,一个循环一道题,反正就是通过循环把题目打印出来。遇见的难题倒是有一个,三年级的题目那里,因为我用的continue会直接跳出循环,然后最后的打印结果总是少于10.我就把i++放到了printf函数的后面,这样打印出来的就绝对是十道题目啦。
3.2 程序结果截图
3.3 程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void help (void)
{
printf ("帮助信息:\n");
printf ("您需要输入命令代号来进行操作,且\n");
printf ("一年级题目为不超过十位的加减法:\n");
printf ("二年级题目为不超过百位的乘除法:\n");
printf ("三年级题目为不超过百位的加减乘除混合题目.\n");
printf ("\n");
}
void menu (void)
{
printf ("操作列表:\n");
printf ("1)一年级 2)二年级 3)三年级\n");
printf ("4)帮助 5)退出程序\n");
printf ("请输入操作> ");
}
void execute (void)
{
printf ("< 执行操作 :)\n");
printf ("\n");
}
void error (void)
{
printf ("Error!!!\n");
printf ("错误操作指令,请重新输入\n");
printf ("\n");
}
int grade1 ()
{
int i, a;
char op;
srand((unsigned)time(NULL));
printf ("现在是一年级题目:\n");
printf ("请输入生成个数> ");
scanf ("%d", &a);
for (i=1;i<=a;i++)
{
int x, y;
x=rand();
y=rand();
op=rand();
while (x>=10)
{
x=x/10;
}
while (y>=10)
{
y=y/10;
}
if (op>45)
{
while (op!=45)
{
op--;
}
}
else
{
while (op!=43)
{
op++;
}
}
printf ("%d %c %d = ___\n", x, op, y);
}
printf ("执行完了\n\n");
}
int grade2 ()
{
int i, a;
char op;
srand((unsigned)time(NULL));
printf ("现在是二年级题目:\n");
printf ("请输入生成个数> ");
scanf ("%d", &a);
for (i=1;i<=a;i++)
{
int x, y;
x=rand();
y=rand();
op=rand();
while (x>=100)
{
x=x/10;
}
while (y>=100)
{
y=y/10;
}
if (op>47)
{
while (op!=47)
{
op--;
}
}
else
{
while (op!=42)
{
op++;
}
}
printf ("%d %c %d = ___\n", x, op, y);
}
printf ("执行完了\n\n");
}
int grade3 ()
{
int i, a;
srand((unsigned)time(NULL));
printf ("现在是三年级题目:\n");
printf ("请输入生成个数> ");
scanf ("%d", &a);
for (i=1;i<=a;)
{
int x, y, z;
char op1, op2;
x=rand();
y=rand();
z=rand();
op1=rand()%6+42;
op2=rand()%6+42;
while (x>=100)
{
x=x/10;
}
while (y>=100)
{
y=y/10;
}
while (z>=100)
{
z=z/10;
}
if (op1==44||op1==46||op2==44||op2==46)
continue;
if (op1==47&&y==0||op2==47&&y==0)
continue;
else
printf ("%d %c %d %c %d = ___\n", x, op1, y, op2, z);
i++;
}
printf ("执行完了\n\n");
}
int answer (int n)
{
switch (n) {
case 1: grade1 (); break;
case 2: grade2 (); break;
case 3: grade3 (); break;
case 4: help (); break;
case 5: printf ("程序结束,欢迎下次使用,按任意键结束......"); break;
}
}
int main (void)
{
int n;
printf ("=======口算生成器=======\n");
printf ("欢迎使用口算生成器 :)\n");
printf ("\n");
help ();
menu ();
scanf ("%d", &n);
execute ();
while (n!=5)
{
answer (n);
menu ();
scanf ("%d", &n);
execute ();
if (n>5||n<1)
error ();
}
answer (5);
return 0;
}
3.4 Gitee上传截图与链接