C语言寒假大作战04

这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10269
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10269
这个作业的目标是 熟悉用函数和switch语句编程口算题菜单,还有随机数rand的使用,并算出生成口算题的结果
作业正文 在上次作业中加个答案函数即可,生成随机数的结果
参考文献 https://zhidao.baidu.com/question/271899014.html,百度c语言中%g的使用和含义

2.2.2设计思路和遇到的问题

设计思路:和前面的第三次作业相似,添加答案函数即可。
遇到的问题:不知道生成答案,还有%g的意思不理解。

2.2.3程序结果截图

2.2.4程序代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void menu(); 
void help();
void one();void operation_1(); 
void two();void operation_2();
void three();void operation_3(); 
void error();
int main()
{
int i=1,n;
printf("==========口算生成器==========\n");
printf("欢迎使用口算生成器:\n");
printf("\n");
help();
while(i!=0)
{
menu();
printf("请输入操作> ");
scanf("%d",&i);
printf("<执行操作:)\n");
printf("\n");
switch(i)
{
case 1:operation_1();break;
case 2:operation_2();break;
case 3:operation_3();break;
case 4:help();break;
case 5:printf("程序结束, 欢迎下次使用\n");
printf("任意键结束……");
i=0;
default:error();break;
}
}
return 0;
}
void menu()
{
printf("\n");
printf("操作列表:\n");
printf("1)一年级 2)二年级 3)三年级\n");
printf("4)帮助 5)退出程序\n");
}
void help()
{
printf("\n");
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作,且\n");
printf("一年级题目为不超过十位的加减法\n二年级题目为不超过百位的乘除法\n三年级题目为不超过百位的加减乘除混合题目\n");
}
void operation_1() 
{
printf("请输入生成个数>");
one();
}
void operation_2()
{
printf("请输入生成个数>");
two();
}
void operation_3()
{
printf("请输入生成个数>");
three();
}
void one()
{
int n,a,b,c,d;
time_t t;
srand((unsigned) time(&t));
printf("现在是一年级题目:\n");
scanf("%d",&n);
printf("<执行操作:)\n");
for (int i=0;i<n;i++)
{
    a=rand() % 10;
    b=rand() % 10;
    c=rand() % 4;
    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 two()
{
int n,a,b,c;
float d;
time_t t;
srand((unsigned) time(&t));
printf("现在是二年级题目:\n");
scanf("%d",&n);
printf("<执行操作:)\n");
for (int i=0;i<n;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 three()
{
 int n,m,i,a,b,c;
float z;
char fh1[2],fh2[2];
time_t t;
srand((unsigned) time(&t));
printf("现在是三年级题目:\n");
scanf("%d",&n);
printf("<执行操作:)\n");
char fh[4][6] = {"*","/","+","-"};
 for (int i=0; i<n; 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");
}

2.2.5Gitee上传截图与链接


https://gitee.com/deng_zhi_zhu/deng-zhizhuo

posted @ 2020-02-15 16:57  邓志卓  阅读(107)  评论(0编辑  收藏  举报