问题 | 回答 |
---|---|
这个问题属于哪个课程 | 2019级计算机4班 (中南林业科技大学涉外学院) |
这个作业要求在哪里 | 寒假大作战04 |
作业正文 | 利用原本的代码使用其他数据类型(%d %g %d)来实现更多的功能 |
参考文献 | 百度 C Prime Plus %g和%d |
提交内容
设计思路和遇到的问题
设计思路:
还是三年级的问题,情况太多了,之后使用最笨的方法“枚举”,就是把所以的情况一个个例举出来
问题:
还是没有明白%g和%d之间的区别,以及怎么样才能简单的满足题目的所以要求
程序结果截图
一年级题运算过程
二年级题运算过程
三年级题运算过程
程序代码
#include
#include
int gradeone();int one_1();
int gradetwo();int two_1();
int gradethree();int three_1();
int help();
int end();
int error();
int main()
{
printf("\t\t\t\t\t========口算生成器========\n欢迎使用口算生成器:\t\t\t\t\n");
printf("\n\n帮助信息:\n\n您需要输入命令行代号来进行操作,且\n一年级题目为不超过位的加减法;\n");
printf("二年级题目为不超过百位的加减法;\n三年级题目为不超过百位的加减乘除混合题目.\n");
while (1)
{
printf("操作列表:\n1)一年级 2)二年级 3)三年级 \n 4)帮助 5)退出程序\n请入操作> ");
int input;
scanf("%d", &input);
printf("<执行操作 :)\n\n");
switch (input)
{
case 1:gradeone(); break;
case 2:gradetwo(); break;
case 3:gradethree(); break;
case 4:help(); break;
case 5:end();break;
default:error();continue;
}
printf("\n\n执行完了\n\n");
}
system("pause");
exit(0);
}
int end()
{
printf("程序结束,欢迎下次使用\n按任意键结束......\n");
exit(0);
}
int error()
{
printf("error!!!!\n请重新输入!\n\n\n\n\n\n");
}
int gradeone()
{
printf("现在是一年级题目:\n");
printf("请输入生成个数> ");
one_1();
}int one_1()
{
int n,i;
int a,b,c;
scanf("%d",&n);
printf("\n<执行操作 :)\n");
for(i=0;i
a=rand() % 10+1;
b=rand() % 10+1;
c=rand() % 2;
if(c==0)
printf("%2d + %2d = %2d\n",a,b,a+b);
else
printf("%2d -%2d = %2d\n",a,b,a-b);
}
}
int gradetwo()
{
printf("现在是二年级题目:\n");
printf("请输入生成个数> ");
two_1();
}
int two_1()
{
int n,i;
int a,b,c;
float d;
scanf("%d",&n);
printf("\n<执行操作 :)\n");
for(i=0;i
a=rand() % 10+1;
b=rand() % 10+1;
c=rand() % 2;
if(c==0)
{
d=a/(b1.0);
printf("%2d / %2d = %2g\n",a,b,d);
}
else
{
d=a b;
printf("%2d * %2d = %2g\n",a,b,d);
}
}
}
int gradethree()
{
printf("现在是三年级题目:\n");
printf("请输入题目数n:");
three_1();
}
int three_1()
{ int n;
scanf("%d",&n);
for(int i=0;i
int t1,t2,t3;
t1=rand()%100;
t2=rand()%100;
t3=rand()%100;
char s1=(rand() % 2 == 0) ? '+' : '-';
char s2=(rand() % 2 == 0) ? '+' : '-';
char s3=(rand() % 2 == 0) ? '/' : '';
char s4=(rand() % 2 == 0) ? '/' : '';
switch(rand()%4)
{
case 0://先加减后乘除
if(s1=='+')
{
if(s3=='')
printf("%2d %c %2d %c %2d =%d\n",t1,s1,t2,s3,t3,(t2t3)+t1);
if(s3=='/')
printf("%2d %c %2d %c %2d =%f\n",t1,s1,t2,s3,t3,(float)(t21.0/t31.0)+t1);
}
if(s1=='-')
{
if(s3=='')
printf("%2d %c %2d %c %2d =%d\n",t1,s1,t2,s3,t3,t1-(t2t3));
if(s3=='/')
printf("%2d %c %2d %c %2d =%f\n",t1,s1,t2,s3,t3,(float)(t1-(t21.0/t31.0)));
}
break;
case 1://纯加减法
if(s1=='+')
{
if(s2=='+')
printf("%2d %c %2d %c %2d = %d\n",t1,s1,t2,s2,t3,(t1+t2+t3));
if(s2=='-')
printf("%2d %c %2d %c %2d = %d\n",t1,s1,t2,s2,t3,(t1+t2-t3));
}
if(s1=='-')
{
if(s2=='+')
printf("%2d %c %2d %c %2d = %d\n",t1,s1,t2,s2,t3,(t1-t2+t3));
if(s2=='-')
printf("%2d %c %2d %c %2d = %d\n",t1,s1,t2,s2,t3,(t1-t2-t3));
}
break;
case 2://先乘除后加减
if(s3=='')
{
if(s1=='+')
printf("%2d %c %2d %c %2d =%d\n",t1,s3,t2,s1,t3,t1t2+t3);
if(s1=='-')
printf("%2d %c %2d %c %2d =%d\n",t1,s3,t2,s1,t3,t2t3-t1);
}
if(s3=='/')
{
if(s1=='+')
printf("%2d %c %2d %c %2d =%f\n",t1,s3,t2,s1,t3,(float)((t11.0/t21.0)+t3));
if(s1=='-')
printf("%2d %c %2d %c %2d =%f\n",t1,s3,t2,s1,t3,(float)(t11.0/t21.0-t3));
}
break;
case 3://纯乘除法
if(s3=='')
{
if(s4=='')
printf("%2d %c %2d %c %2d =%d\n",t1,s3,t2,s4,t3,(t1t2t3));
if(s4=='/')
printf("%2d %c %2d %c %2d =%f\n",t1,s3,t2,s4,t3,(float)(t1t21.0/t31.0));
}
if(s3=='/')
{
if(s4=='')
printf("%2d %c %2d %c %2d =%f\n",t1,s3,t2,s4,t3,(float)((t11.0/t21.0)t3));
if(s4=='/')
printf("%2d %c %2d %c %2d =%f\n",t1,s3,t2,s4,t3,(float)(t11.0/t21.0/t3*1.0));
}
break;
default:continue;
}
}
}
int help()
{
printf("帮助信息:\n您需要输入命令行代号来进行操作,且\n一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的加减法;\n ");
printf("三年级题目为不超过百位的加减乘除混合题目.\n");
}
Gitee上传截图与个人主页链接
远程仓库
本地仓库
码云个人主页:https://gitee.com/wang_xiang_zhen)