C语言寒假大作战04
这个作业属于哪个课程 | 班级链接 |
---|---|
这个作业的要求 | 作业要求 |
这个作业的目标 | 完善口算题菜单的功能,学习%g的功能 |
参考文献 | %g在C语言中的意思 |
作业正文 | 此篇博客 |
2.2.2设计思路和遇到的问题
设计思路:
1.在上一次的作业的基础上完善答案随着题目一起输出。
2.利用%g的学习,代替%f的直接输出,减少不必要数字的输出,节约空间。
3.完善上次的代码,该减减该加加,特别扩充了几个浮点变量。
心路历程:
自信(想出这个挺简单的,首先要给自己足够的自信心)→困惑(%g的输出和 %f 到底有什么区别?)→豁然开朗(在打印输出的时候,%g会自动选择宽度较小的输出,例如:要输出654.321的单精度浮点值,此时%f输出的是654.320984,而%g输出的就是654.321,另外输出的654.320984是因为在内存中的存储误差引起的)→有些懊恼(秉承节约空间的思想,我在前一个作业中使用的变量甚少,在此次作业中无法继续利用,需要定义变量来接收这些随机值,随后再进行计算)→平常心(顺利写出符合要求的代码)
2.2.3程序结果截图
2.2.4程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int help(int m);
int main(void)
{
time_t t;
srand((unsigned) time(&t));
printf("====口算生成器====\n");
printf("欢迎使用此生成器(笑\n");
int a=-1;
int i,m,b,j;
double c1,c2,c3;
int HELP,EXIT,n,x;
char ch,ch2;
while(a!=0)
{
printf(" \n");
printf(" \n");
printf("操作列表:\n");
printf("1>壹年级 2>贰年级 3>叁年级\n");
printf("4>HELP 5>EXIT\n");
printf("请选择:\n");
scanf("%d",&a);switch (a)
{
case 1:
printf("现在是壹年级时间\n");
printf("请给出需要生成的题目个数:");
scanf("%d",&m);
printf("题目如下:\n");
printf("\n");
for(i=0;i<m;i++)
{
c1=rand()%11;
c2=rand()%11;
b=rand()%2;
if(b==1)
printf(" %.f + %.f = %g\n", c1,c2,c1+c2);
else
printf(" %.f - %.f = %g\n", c1,c2,c1-c2);
}
break;
case 2:
printf("现在是贰年级时间\n");
printf("请给出需要生成的题目个数:");
scanf("%d",&m);
printf("题目如下:\n");
printf("\n");
for(i=0;i<m;i++)
{
c1=rand()%101;
c2=rand()%101;
c3=rand()%100+1;
b=rand()%2;
if(b==1)
printf(" %.f * %.f = %g\n", c1,c2,c1*c2);
else
printf(" %.f / %.f = %g\n", c1,c3,c1/c3);
}
break;
case 3:
printf("现在是叁年级时间\n");
printf("请给出需要生成的题目个数:");
scanf("%d",&m);
printf("题目如下:\n");
printf("\n");
for(i=0;i<m;i++)
{
double c4,c5;
c1=rand()%101;
c2=rand()%100+1;
c3=rand()%100+1;
b=rand()%4;
switch(b)
{
case 0:
ch='+';c4=c1+c2;break;
case 1:
ch='-';c4=c1-c2;break;
case 2:
ch='*';c4=c1*c2;break;
case 3:
ch='/';c4=c1/c2;break;
}
j=rand()%4;
switch(j)
{
case 0: