C语言寒假大作战03
2.2.1 作业头:
这个作业属于哪个课程 | 计科一班 |
---|---|
这个作业要求在哪里 | C语言寒假大作战03 |
这个作业的目标 | 随机生成各年级计算题目 |
作业正文 | 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数 |
其他参考文献 | rand函数 |
2.2.2 设计思路和遇到的问题
设计思路:因为题目要求随机生成各年级计算题目,看到随机俩字,首先想到rand函数,数字处理完后就是符号了;先找到加减乘除的ASCII码,然后用if语句与goto语句找出加减乘除;对于除号后面的数不为零这个问题,用if与goto也可以办到,如果该字符为%并且该字符后面的数为零,就用goto跳到上一个语句,重新赋值,最后打印就好了。
遇到的问题:无。
2.2.3 程序结果截图
2.2.4 程序代码
#include<stdio.h>
#include<stdlib.h>
int rand(void);
void f1();
void f2();
void f3();
void f4();
void f5();
void f6();
int main(void)
{
printf("========== 口算生成器 ==========\n");
printf("欢迎使用口算生成器 :\n\n\n");
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n");
printf("二年级题目为不超过百位的乘除法;\n");
printf("三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
int n;
while(1)
{
printf("操作列表:\n");
printf("1)一年级\t2)二年级\t3)三年级\n");
printf("4)帮助\t5)退出程序\n");
printf("请输入操作>");
scanf("%d",&n);
switch(n)
{
case 1:f1();break;
case 2:f2();break;
case 3:f3();break;
case 4:f4();break;
case 5:f5();break;
default:f6();break;
}
if(n==5)
break;
}
return 0;
}
void f1()
{
int n;
char ch;
ch=rand()%(45-43+1)+43;
printf("<执行操作 :)\n\n");
printf("现在是一年级题目:\n");
printf("请输入生成个数>");
scanf("%d",&n);
printf("<执行操作:)\n\n");
for(int i = 1;i <= n;i ++)
{
A:
ch=rand()%(45-43+1)+43;
if(ch==44)
goto A;
printf("%d %c %d = ___\n",rand()%(9-0+1)+0,ch,rand()%(9-0+1)+0);
}
}
void f2()
{
int n;
char ch;
int x,y;
ch=rand()%(42-37+1)+37;
y=rand()%(99-0+1)+0;
x=rand()%(99-0+1)+0;
printf("<执行操作 :)\n\n");
printf("现在是二年级题目:\n");
printf("请输入生成个数>");
scanf("%d",&n);
printf("<执行操作:)\n\n");
for(int i = 1;i <= n;i ++)
{
A:
{
ch=rand()%(42-37+1)+37;
x=rand()%(99-0+1)+0;
y=rand()%(99-0+1)+0;
}
if((ch!=37&&ch!=42)||(ch==37&&y==0))
goto A;
printf("%2d %c %2d = ___\n",x,ch,y);
}
}
void f3()
{
int n;
char ch1,ch2;
int x,y;
x=rand()%(99-0+1)+0;
y=rand()%(99-0+1)+0;
ch1=rand()%(45-37+1)+37;
ch2=rand()%(45-37+1)+37;
printf("<执行操作 :)\n\n");
printf("现在是三年级题目:\n");
printf("请输入生成个数>");
scanf("%d",&n);
printf("<执行操作:)\n\n");
for(int i = 1;i <= n;i ++)
{
A:
{
x=rand()%(99-0+1)+0;
y=rand()%(99-0+1)+0;
ch1=rand()%(45-37+1)+37;
ch2=rand()%(45-37+1)+37;
}
if((ch1!=37&&ch1!=42&&ch1!=43&&ch1!=45)||(ch2!=37&&ch2!=42&&ch2!=43&&ch2!=45)||(ch1==37&&x==0)||(ch2==37&&y==0))
goto A;
printf("%2d %c %2d %c %2d = ___\n",rand()%(99-0+1)+0,ch1,x,ch2,y);
}
}
void f4()
{
printf("<执行操作 :)\n\n");
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n");
printf("二年级题目为不超过百位的乘除法;\n");
printf("三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
}
void f5()
{
printf("程序结束, 欢迎下次使用\n\n");
printf("任意键结束……\n");
}
void f6()
{
printf("Error!!!\n\n");
printf("错误操作指令,请重新输入\n\n");
}
2.2.5 Gitee上传截图与链接