C语言寒假大作战04
2.2.1 作业头:
这个作业属于哪个课程 | 计科一班 |
---|---|
这个作业要求在哪里 | C语言寒假大作战04 |
这个作业的目标 | 生成答案 |
作业正文 | 使用上次作业的菜单框架,并在其基础上增加各年级题目的答案 |
其他参考文献 | 无 |
2.2.2 设计思路和遇到的问题
设计思路:把原先(rand()%(9-0+1)+0)这样类型的用变量代替,方便计算。
遇到的问题:无。
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;
int middle,x,y;
char ch;
x=rand()%(9-0+1)+0;
y=rand()%(9-0+1)+0;
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;
x=rand()%(9-0+1)+0;
y=rand()%(9-0+1)+0;
}
if(ch==44)
goto A;
printf("%d %c %d = ",x,ch,y);
if(ch==43)
middle=x+y;
else
middle=x-y;
printf("%d\n",middle);
}
}
void f2()
{
int n;
char ch;
int x,y;
double middle;
ch=rand()%(47-42+1)+42;
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()%(47-42+1)+42;
x=rand()%(99-0+1)+0;
y=rand()%(99-0+1)+0;
}
if((ch!=47&&ch!=42)||(ch==47&&y==0))
goto A;
printf("%2d %c %2d = ",x,ch,y);
if(ch==47)
{
middle=1.0/y*x;
printf("%lf\n",middle);
}
else
{
middle=x*y;
printf("%.0lf\n",middle);
}
}
}
void f3()
{
int n;
char ch1,ch2;
int x,y,z;
double middle;
x=rand()%(99-0+1)+0;
y=rand()%(99-0+1)+0;
z=rand()%(99-0+1)+0;
ch1=rand()%(47-42+1)+42;
ch2=rand()%(47-42+1)+42;
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;
z=rand()%(99-0+1)+0;
ch1=rand()%(47-42+1)+42;
ch2=rand()%(47-42+1)+42;
}
if((ch1!=47&&ch1!=42&&ch1!=43&&ch1!=45)||(ch2!=47&&ch2!=42&&ch2!=43&&ch2!=45)||(ch1==47&&x==0)||(ch2==47&&y==0))
goto A;
printf("%2d %c %2d %c %2d = ",z,ch1,x,ch2,y);
switch(ch1)
{
case 42:switch(ch2)
{
case 42:middle=z*x*y;printf("%g\n",middle);break;
case 43:middle=z*x+y;printf("%g\n",middle);break;
case 45:middle=z*x-y;printf("%g\n",middle);break;
case 47:middle=z*x*(1.0/y);printf("%g\n",middle);break;
}break;
case 43:switch(ch2)
{
case 42:middle=z+x*y;printf("%g\n",middle);break;
case 43:middle=z+x+y;printf("%g\n",middle);break;
case 45:middle=z+x-y;printf("%g\n",middle);break;
case 47:middle=z+x*(1.0/y);printf("%g\n",middle);break;
}break;
case 45:switch(ch2)
{
case 42:middle=z-x*y;printf("%g\n",middle);break;
case 43:middle=z-x+y;printf("%g\n",middle);break;
case 45:middle=z-x-y;printf("%g\n",middle);break;
case 47:middle=z-x*(1.0/y);printf("%g\n",middle);break;
}break;
case 47:switch(ch2)
{
case 42:middle=z*(1.0/x)*y;printf("%g\n",middle);break;
case 43:middle=z*(1.0/x)+y;printf("%g\n",middle);break;
case 45:middle=z*(1.0/x)-y;printf("%g\n",middle);break;
case 47:middle=z*(1.0/x)*(1.0/y);printf("%g\n",middle);break;
}break;
}
}
}
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上传截图与链接