C语言寒假大作战04

作业头

问题 答案
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-2
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10279
这个作业的目标 使用上次作业的菜单框架,并在其基础上增加各年级题目的答案函数
作业正文 https://www.cnblogs.com/abcd123456/p/12260027.html
其他参考文献 C语言程序设计,百度

主要内容

使用上次作业的菜单框架,在其基础上增加各年级题目的答案函数

1.菜单程序函数调用图如下:

2.设计思路和遇到的问题

  • 设计思路同作业2,本次作业需要加答案函数
    遇到的问题:在三年级的三个随机数两个运算符不知如何判断0的情况。

3.程序结果截图

4.程序代码

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int help(int opt)
{
    printf("
操作列表:
    1)一年级    2)二年级    3)三年级
     4)帮助     5)退出程序
");
    printf("请输入操作> ");
    return 0;
}

void operation1(int opt)
{
   int i;
   printf("< 执行操作 :)

现在是一年级题目:
请输入生成数> 10
< 执行操作 :)

");
   for(i=0;i<10;i++)
   {
       int divisor1=rand()%10;
       int divisor2=rand()%10;
       int kind;
       int result1;
       int result2;
       kind=rand()%2+1;
       
       switch(kind)
       {
         case 1:result1=divisor1+divisor2;
            printf("%d + %d=%d
",divisor1,divisor2,result1);break;
         case 2:result2=divisor1-divisor2;   
            printf("%d - %d=%d
",divisor1,divisor2,result2);break;
       }
    }
}

void operation2(int opt)
{
    int i,op;
    printf("< 执行操作 :)

现在是二年级题目:
请输入生成数> 10
< 执行操作 :)

");
    for(i=0;i<10;i++)
    {
       int divisor1=rand()%101;
       int divisor2=rand()%101;
       int kind;
       int result1;
       double result2;
       kind=rand()%2+1;
       
       if(divisor2==0)printf("%2d * 0=0
",divisor1);
       else 
       switch(kind)
       {
         case 1:result1=divisor1*divisor2;
            printf("%2d * %2d=%d
",divisor1,divisor2,result1);break;
         case 2:result2=(float)divisor1/divisor2;   //强制转化浮点型 
            printf("%2d / %2d=%f
",divisor1,divisor2,result2);break;
       }
    }
}

void operation3(int opt)
{
    int i,op1,op2;
    printf("< 执行操作 :)

现在是三年级题目:
请输入生成数> 10
< 执行操作 :)

");
    for(i=0;i<10;i++)
    {
       int divisor1=rand()%101;
       int divisor2=rand()%101;
       int divisor3=rand()%101;
       int kind,result1;
       double result2,result3,result4;
       kind=rand()%4+1;
       
       switch(kind)
       {
          case 1:result1=divisor1+divisor2*divisor3;
            printf("%d + %d * %d=%d
",divisor1,divisor2,divisor3,result1);break;
          case 2:result2=divisor1*divisor2/(float)divisor3;    //强制转化浮点型  
            printf("%d * %d / %d=%lf
",divisor1,divisor2,divisor3,result2);break;
          case 3:result3=(float)divisor1/divisor2-divisor3;       //强制转化浮点型 
            printf("%d / %d - %d=%lf
",divisor1,divisor2,divisor3,result3);break;
          case 4:result4=(float)divisor1/divisor2*divisor3;      //强制转化浮点型 
            printf("%d / %d * %d=%lf
",divisor1,divisor2,divisor3,result4);break;
       }
    }
}
int main() 
{   
    printf("========== 口算生成器 ==========
");
    printf("欢迎使用口算生成器 :
 
 
帮助信息
您需要输入命令代号来进行操作, 且
");
    printf("一年级题目为不超过十位的加减法;
二年级题目为不超过百位的乘除法;
三年级题目为不超过百位的加减乘除混合题目.


");
    
    int opt=-1;
    
    while(opt!=0)
    {
       help(opt);
       scanf("%d",&opt);
       
    switch(opt)
    {
        case 1:operation1(opt);break;
        case 2:operation2(opt);break;
        case 3:operation3(opt);break;
    }
    }
 return 0;
}

5.Gittee上传截图与链接

截图:

链接:
https://gitee.com/ning_pei

原文地址:https://www.cnblogs.com/abcd123456/p/12260027.html