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上传截图与链接


谭琪雅的gitte链接

posted @ 2020-02-12 19:18  恣矜  Views(115)  Comments(0Edit  收藏  举报