zoukankan      html  css  js  c++  java
  • 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("==========口算生成表==========
    ");
        printf("欢迎使用口算生成器
    ");
        printf("
    ");
        help();
        printf("
    ");
        while(n!=0)
        {
            menu();
            printf("请输入操作>");
            scanf("%d",&x);
            printf("<执行操作:)
    ");
            printf("
    ");
            printf("
    ");
            switch(x)
            {
                case 1:A();break;
                case 2:B();break;
                case 3:C();break;
                case 4:help();break;
                case 5:
                    n=0;
                    printf("程序结束, 欢迎下次使用
    ");
    				printf("请按任意键继续...
    ");
                    break;
                default:error();break;  
            }
        }
        return 0;
    }
    
    void menu()
    { 
        printf("操作列表:
    ");
        printf("1)一年级    2)二年级    3)三年级
    ");
        printf("4)帮助      5)退出程序
    ");
    }
    void help()
    {
        printf("帮助信息
    ");
        printf("您需要输入命令代号来进行操作, 且
    ");
        printf("一年级题目为不超过十位的加减法;
    ");
        printf("二年级题目为不超过百位的乘除法;
    ");
        printf("三年级题目为不超过百位的加减乘除混合题目.
    ");
    }
    void A()
    {
    	int o,a,b,c,D;
    	time_t t;
    	srand((unsigned) time(&t));
        printf("现在是一年级题目:
    ");
        printf("请输入生成个数>
    ");
        scanf("%d",&o);
        printf("<执行操作:)
    ");
        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
    ",a,b,D);
    		}
        	else
        	{
    		   D=a-b;
        	   printf("%d - %d = %d
    ",a,b,D);
    		   }
    	}
    }
    void B()
    {
    	int o,a,b,c;
    	float D;
    	time_t t;
    	srand((unsigned) time(&t));
        printf("现在是二年级题目:
    ");
        printf("请输入生成个数>
    ");
        scanf("%d",&o);
        printf("<执行操作:)
    ");
        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
    ",a,b,D);
    		   }
        	else{
    		while(b==0)
    		{
    			b=rand() % 10;
    		 } 
    		   D=a/(b*1.0);
        	   printf("%d / %d = %g
    ",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("现在是三年级题目:
    ");
        printf("请输入生成个数>
    ");
        scanf("%d",&o);
        printf("<执行操作:)
    ");
        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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",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
    ",a,fh1,b,fh2,c,z);
    		}
        }
        
    }
    void error()
    {
        printf("Error!!!
    ");
        printf("错误操作指令, 请重新输入
    ");
        printf("
    ");
        printf("
    ");
    }
    

    1.5 Gitee上传截图与链接

    https://gitee.com/zenghao67/winter_vacation_battle_02

  • 相关阅读:
    虚拟机中对centOS7.4配置静态ip
    mybatis使用中出现的错误!
    http中get和post方法区别
    java中堆和栈的区别
    struts2工作流程
    springmvc工作流程
    JDBC访问数据库流程
    并行程序设计模式-Master-Worker模式-Guarded Suspension模式-不变模式-生产者-消费者模式的理解
    Future模式个人理解
    分布式系统一致性问题和Raft一致性算法
  • 原文地址:https://www.cnblogs.com/zengghao/p/12301482.html
Copyright © 2011-2022 走看看