C语言寒假大作战03

1.本次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2019-3
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/10256
这个作业的目标 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数
作业正文 .....
其他参考文献 https://www.runoob.com/cprogramming/c-function-rand.html

1.1.1设计思路和遇到的问题

设计思路:在上次作业代码的基础上进行一些更加实用性的程序函数的添加和修改,用rand()实现数字随机,用rand()%种类进行分段在输出不同种类的字符。
遇到问题:一开始出现了漏洞,不能够确保除数为0,于是我查查阅资料了解到了去解决这一问题的多种方法,我去更改我的代码在自己的一段代码中将void zifu改为了char zifu 从而实现了字符的返回并运用了if条件结构判断是否成立。

1.1.2程序截图



1.1.3程序代码

include<stdio.h>

include<stdlib.h>

include<time.h>

void menu();
void help();
void error();
void operation1();
void rand1();
void operation2();
void rand2();
void operation3();
void rand3();
char zifu1();
char zifu2();
char zifu3();
int main(void)
{

printf("========== 口算生成器 ==========\n");
printf("欢迎使用口算生成器 :\n\n");
help();
int i=1;
while (i)
{
    menu();
    int grade;
    scanf("%d", &grade);
    printf("<执行操作 :)");
    printf("\n\n");
    switch (grade)
    {
    case 1:
        operation1(); 
        break;
    case 2:
        operation2(); 
        break;
    case 3:
        operation3(); 
        break;
    case 4:
        help();
        break;
    case 5:
        printf("程序结束, 欢迎下次使用\n");
        printf("任意键结束……\n\n");
        i = 0;
        break;
    default:
        error();
        break;
    }
}

return 0;

}

void help()
{
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n");
printf("二年级题目为不超过百位的乘除法;\n");
printf("三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
}

void menu()
{

    printf("操作列表:\n");
    printf("1)一年级    2)二年级    3)三年级\n");
    printf("4)帮助      5)退出程序\n");
    printf("请输入操作 >");

}
void error()
{
printf("Error!!!\n");
printf("错误操作指令, 请重新输入\n\n");

}

void operation1()
{
printf("现在是一年级题目:\n");
printf("请输入生成个数 ");
rand1();

}

void operation2()
{
printf("现在是二年级题目:\n");
printf("请输入生成个数 ");
rand2();

}

void operation3()
{
int i,w;
printf("现在是三年级题目:\n");
printf("请输入生成个数 ");
rand3();
}

void rand1()

{
int w,i;
scanf("%d",&w);
printf("\n");
printf("<执行操作 😃\n\n");
for(i=0;i<w;i++)
{
char symbol;
time_t t,a,b;
a=rand()%10;
symbol = zifu1();
b=rand()%10;
printf("%2d %c%2d",a,symbol,b);
printf(" = ___\n");
}
printf("\n\n");
}

void rand2()
{
int w,i;
scanf("%d",&w);
printf("\n");
printf("<执行操作 😃\n\n");
for(i=0;i<w;)
{
char symbol;
time_t t,a,b;
a=rand()%10;
symbol = zifu2();
b=rand()%10;
if(symbol!='/'||b!=0)
{
i++;
printf("%2d %c%2d",a,symbol,b);
printf(" = ___\n");
}
}
printf("\n\n");
}

void rand3()
{
int w,i;
scanf("%d",&w);
printf("\n");
printf("<执行操作 😃\n\n");
for(i=0;i<w;)
{
char symbol_1,symbol_2;
time_t t,a,b,c;
a=rand()%10;
symbol_1 = zifu3();
symbol_2 = zifu3();
b=rand()%10;
c=rand()%10;
if(symbol_1!='/'&&b!=0&&symbol_2!='/'&&c!=0)
{
i++;
printf("%2d %c%2d %c%2d",a,symbol_1,b,symbol_2,c);
printf(" = ___\n");
}
}
printf("\n\n");
}

char zifu3()
{
time_t t;
char symbol;
int s;

s=rand()%4+1;
switch(s)
{
    case 1:
        symbol='+';
        break;
    case 2:
        symbol='-';
        break;
    case 3:
        symbol='x';
        break;
    case 4:
        symbol='/';
        break;
}   
return symbol;

}

char zifu2()
{
time_t t;
char symbol;
int s;

s=rand()%2+1;
switch(s)
{
    case 1:
        symbol='x';
        break;
    case 2:
        symbol='/';
        break;
}   
    return symbol;

}

char zifu1()
{
char symbol;
time_t t;
int s;
s=rand()%2+1;
switch(s)
{
case 1:
symbol='+';
break;
case 2:
symbol='-';
break;
}
return symbol;
}
1.1.4Gitee上传截图与链接


码云链接https://gitee.com/peng_jia_hao

2.参考资料

我看看还有谁不看参考资料!!!
随机数rand

posted @ 2020-02-12 13:23  ThematureJH  阅读(111)  评论(0编辑  收藏  举报