C语言寒假大作战04

这个作业属于那个课程 2019级计算机4班
这个作业要求在哪里 C语言寒假大作战04
这个作业的目标 学会编写随机生成计算题并得出答案的程序
作文正文
其它参考文献 https://zhidao.baidu.com/question/271899014.html

1.1 设计思路和遇到的问题

设计思路:

在之前的基础上算出答案来,看似比较简单,实际还是有一些小复杂的,一二年级题目很平常用正常思维去编写就可,三年级题目我是通过给字符赋值然后把16种所有符号情况都用if语句连贯起来,得出不同情况下的计算题答案。注意一些需要使用%g的地方。

遇到的问题:

一二年级题目较简单没有什么问题,主要就是三年级题目有些难度,我之前是建立了数组,把四种符号放了进去,这样虽然很容易就把题目随机生成出来了,但是答案确比较难得出,想了挺久实在没有想到什么简便得方法,只好通过给字符赋值然后用if语句把所有符号组合的情况都列出来了。最后的一个问题是得不出小数点后面的数字,那是由于没有给除号后面的数乘1.0。

1.2 程序结果截图

1.3 程序代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<string.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,D;
	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)
    	{
		
    	   D=a+b;
    	   printf("%d + %d = %d\n",a,b,D);
		}
    	else
    	{
		   D=a-b;
    	   printf("%d - %d = %d\n",a,b,D);
		   }
	}
}
void B()
{
	int o,a,b,c;
	float D;
	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)
    	{
    	   D=a*b;
    	   printf("%d * %d = %g\n",a,b,D);
		   }
    	else{
		while(b==0)
		{
			b=rand() % 10;
		 } 
		   D=a/(b*1.0);
    	   printf("%d / %d = %g\n",a,b,D);
		   }
	}
}
void C()
{
	int o,d,i,a,b,c;
	float z;
	char fh1[2],fh2[2];
	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; 
		}
 		strcpy(fh1,fh[rand() % 3]);
 		strcpy(fh2,fh[rand() % 3]);
		if(strcmp(fh1,"*")==0&&strcmp(fh2,"*")==0)
		{
			z = a * b * c;
		printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"*")==0&&strcmp(fh2,"/")==0)
		{
			z = a * b / (c*1.0);
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"*")==0&&strcmp(fh2,"+")==0)
		{
			z = a * b + c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"*")==0&&strcmp(fh2,"-")==0)
		{
			z = a * b - c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"/")==0&&strcmp(fh2,"+")==0)
		{
			z = a / (b*1.0) + c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"/")==0&&strcmp(fh2,"-")==0)
		{
			z = a / (b*1.0) - c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"/")==0&&strcmp(fh2,"/")==0)
		{
			z = a / (b*1.0) / (c*1.0);
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"+")==0&&strcmp(fh2,"-")==0)
		{
			z = a + b - c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"+")==0&&strcmp(fh2,"+")==0)
		{
			z = a + b + c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"-")==0&&strcmp(fh2,"-")==0)
		{
			z = a - b - c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"/")==0&&strcmp(fh2,"*")==0)
		{
			z = a / (b*1.0) * c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"+")==0&&strcmp(fh2,"/")==0)
		{
			z = a + b / (c*1.0);
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"+")==0&&strcmp(fh2,"*")==0)
		{
			z = a + b * c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"-")==0&&strcmp(fh2,"/")==0)
		{
			z = a - b / (c*1.0);
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"-")==0&&strcmp(fh2,"+")==0)
		{
			z = a - b + c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
		else if(strcmp(fh1,"-")==0&&strcmp(fh2,"*")==0)
		{
			z = a - b * c;
			printf("%2d %s %2d %s %2d = %g\n",a,fh1,b,fh2,c,z);
		}
    }
    
}
void error()
{
    printf("Error!!!\n");
    printf("错误操作指令, 请重新输入\n");
    printf("\n");
    printf("\n");
}

1.5 Gitee上传截图与链接

https://gitee.com/zenghao67/winter_vacation_battle_02

posted on 2020-02-12 22:48  酴灵  阅读(144)  评论(0编辑  收藏  举报

导航