C语言寒假大作战04
2.2.1 作业头:
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/ |
|---|---|
| 这个作业的要求在哪 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10279 |
| 这个作业的目标 | 不看视频操作git |
| 作业正文 | https://www.cnblogs.com/hql201661/p/12312085.html |
| 其他参考文献 | https://www.cnblogs.com/abcd123456/p/12260027.html |
2.2.2 设计思路和遇到的问题
思路:在第三次作业的基础上,添加答案。利用if-else语法实现符号的转变,并用表达式,把结果表达出来。
问题:(1)一年级题目还好,二年级题目我就发现我答案一直都是错的,看了别人的代码用的都是%g后面去网上查了一下,g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出是占宽度较小的一种),且不输出无意义的零。而d格式字符。用来输出十进制整数。
(2)还是输出答案问题,我发现我的答案都是整数,这时候我想肯定是定义出了问题。
2.2.3 程序结果截图





2.2.4 程序代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int fen1 ()
{
char ops[2]={'+','-'};
int i, n, op, suiji1, suiji2, result;
printf("现在是一年级题目:\n请输入生成题目的个数:");
scanf("%d", &n);
for(i=0; i<n; i++)
{
op= rand()%2;;
suiji1=rand()%10;
suiji2=rand()%10;
if(ops[op]=='+')
result=suiji1+suiji2;
else
result=suiji1-suiji2;
printf("%d %c %d= %d\n", suiji1, ops[op],suiji2, result);
}
}
int fen2 ()
{
char ops[2]={'*','/'};
int i, n, op;
double result, suiji1, suiji2;
printf("现在是二年级题目:\n请输入生成题目的个数:");
scanf("%d", &n);
for(i=0; i<n; i++)
{
op= rand()%2;
suiji1=rand()%100;
suiji2=rand()%100;
if(ops[op]=='*')
result=suiji1*suiji2;
else
result=suiji1/suiji2;
printf("%2g %c %2g= %2g\n", suiji1, ops[op], suiji2, result);
}
}
int fen3 ()
{
char ops1[2]={'+','*'}, ops2[2]={'-','/'};
int i, n, op1, op2;
double result, suiji1, suiji2, suiji3;
printf("现在是二年级题目:\n请输入生成题目的个数:");
scanf("%d", &n);
for(i=0; i<n; i++)
{
suiji1=rand()%100;
suiji2=rand()%100;
suiji3=rand()%100;
op1= rand()%2;
op2= rand()%2;
if(op1==0&&op2==0)
result=suiji1+suiji2-suiji3;
else if(op1==0&&op2==1)
result=suiji1+suiji2/suiji3;
else if(op1==1&&op2==0)
result=suiji1*suiji2-suiji3;
else
result=suiji1*suiji2/suiji3;
printf("%2g %c %2g %c %2g= %2g\n", suiji1, ops1[op1], suiji2, ops2[op2], suiji3, result );
}
}
int help(int a) {
printf("欢迎使用口算生成器 :\n \n \n帮助信息\n您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
printf("操作列表:\n1)一年级 2)二年级 3)三年级\n4)帮助 5)退出程序\n ");
return 0;
}
int main()
{
printf("========== 口算生成器 ==========\n");
printf("欢迎使用口算生成器 :\n \n \n帮助信息\n您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
printf("操作列表:\n1)一年级 2)二年级 3)三年级\n4)帮助 5)退出程序\n ");
sr:printf("请输入操作 >\n\n");
int a;
time_t t;
srand((unsigned) time(&t));
scanf("%d", &a);
printf("开始执行%d命令\n", a);
switch (a) {
case 1:fen1();goto sr;
case 2:fen2();goto sr;
case 3:fen3(); goto sr;
case 4:help(a); goto sr;
case 5:printf("程序结束, 欢迎下次使用\n任意键结束……"); return 0;
default:printf("Error!!!\n错误操作指令, 请重新输入"); goto sr;
}
}
2.2.5 Gitee上传截图与链接


浙公网安备 33010602011771号