四则运算

一、作业信息

这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
这个作业的目标 能对需求进行分析并实现;写一个能自动生成小学四则运算题目的程序
学号 3180701322

目录

*一.作业信息
*二.作业要求
*三.代码提交与截图
*四.个人小结

二、作业要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

2)程序要求能处理用户的输入,判断对错,累积分数

3)程序支持可以由用户自行选择加、减、乘、除运算

4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

三、代码提交与运行截图
1、源代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int add(int num1, int num2)//加法
{
      return num1 + num2;
}
int subtraction(int num1, int num2)//减法
{
      return num1 - num2;
}
int mul(int num1, int num2)//乘法
{
      return num1*num2;
}
float divis(int num1, int num2)//除法
{
      return ((int)(((float)num1 / num2) * 100 + 0.5)) / 100.0;
}

int main()
{
      int type = -1;
      int data = -1;
      int choice, num1, num2, results;
      float div_result;
      int right = 0;
      int wrong = 0;
      char ch;
      printf("欢迎进入小学四则运算题!\n");
      srand((unsigned int)time(NULL));
      while (1)
      {
            printf("请选择运算类型:1.加法 2.减法 3.乘法 4.除法(保留两位小数)\n");
            scanf("%d", &choice);
            printf("请选择位数:1.一位数 2.两位数\n");
            scanf("%d", &data);
            switch (choice)
            {
                  case 1:
                        if (data == 1)
                        {
                              num1 = rand() % 10;
                              num2 = rand() % 10;
                              printf("%d + %d=__?__\n", num1, num2);
                              scanf("%d", &results);
                              if (results == add(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                              }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                              }
                        else if (data == 2)
                        {
                              num1 = rand() % 100;
                              num2 = rand() % 100;
                              printf("%d + %d=__?__\n", num1, num2);
                              scanf("%d", &results);
                              if (results == add(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                              }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                        }
                        break;
                  case 2:
                        if (data == 1)
                        {
                              num1 = rand() % 10;
                              num2 = rand() % 10;
                              printf("%d - %d=__?__\n", num1, num2);
                              scanf("%d", &results);
                              if (results == subtraction(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                              }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                      }
                        else if (data == 2)
                        {
                              num1 = rand() % 100;
                              num2 = rand() % 100;
                              printf("%d - %d=__?__\n", num1, num2);
                              scanf("%d", &results);
                              if (results == subtraction(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                              }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                              }
                        break;
                  case 3:
                        if (data == 1)
                        {
                              num1 = rand() % 10;
                              num2 = rand() % 10;
                              printf("%d * %d=__?__\n", num1, num2);
                              scanf("%d", &results);
                              if (results == mul(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                              }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                              }
                              else if (data == 2)
                              {
                                    num1 = rand() % 100;
                                    num2 = rand() % 100;
                                    printf("%d * %d=__?__\n", num1, num2);
                                    scanf("%d", &results);
                                    if (results == mul(num1, num2))
                                    {
                                          printf("回答正确!\n");
                                          right++;
                                    }
                                    else
                                    {
                                          printf("回答错误!\n");
                                          wrong++;
                                    }
                                    printf("是否继续?y/n\n");
                                    getchar();
                                    scanf("%c", &ch);
                                    if (ch == 'y')
                                    break;
                                    else if (ch == 'n')
                                    goto end;
                                    }
                              break;
                  case 4:
                        if (data == 1)
                        {
                              num1 = rand() % 10;
                              num2 = rand() % 10 + 1;
                              printf("%d / %d=__?__\n", num1, num2);
                              scanf("%f", &div_result);
                              if (div_result == divis(num1, num2))
                              {
                                    printf("回答正确!\n");
                                    right++;
                               }
                              else
                              {
                                    printf("回答错误!\n");
                                    wrong++;
                              }
                              printf("是否继续?y/n\n");
                              getchar();
                              scanf("%c", &ch);
                              if (ch == 'y')
                              break;
                              else if (ch == 'n')
                              goto end;
                              }
                              else if (data == 2)
                              {
                                    num1 = rand() % 100;
                                    num2 = rand() % 100 + 1;
                                    printf("%d / %d=__?__\n", num1, num2);
                                    scanf("%f", &div_result);
                                    if (div_result == divis(num1, num2))
                                    {
                                          printf("回答正确!\n");
                                          right++;
                                    }
                                    else
                                    {
                                          printf("回答错误!\n");
                                          wrong++;
                                    }
                                    printf("是否继续?y/n\n");
                                    getchar();
                                    scanf("%c", &ch);
                                    if (ch == 'y')
                                    break;
                                    else if (ch == 'n')
                                    goto end;
                             }
                        break;
                        default:
                  printf("输入错误!\n");
                        break;
            }
}
end:
printf("回答正确%d题,回答错误%d题\n", right, wrong);
printf("\n===================感谢使用=====================!\n");
system("pause");
return 0;
}

2、运行截图
(1)、加法

(2)、减法

(3)、乘法

(4)、除法

四、个人小结
第一次用博客园来写代码,完成相关作业,感觉对于自己来说还是有一点难度。关于这个题目,完成的还有很多不足,其中最大的不足就是,没有关于真分数的计算。总体来说,通过这次作业可以看出,编程能力还需要提高。

(psp表格)

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 100 150
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 5
Development 开发 180 200
Analysis 需求分析(包括学习新技术) 20 15
Design Spec 生成设计文档 20 30
Design Review 设计复审 15 10
Coding Standard 代码规范 10 30
Design 具体设计 20 40
Coding 具体编码 40 50
Code Review 代码复审 9 10
Test 测试(自我测试,修改代码,提交修改) 40 45
Reporting 报告 10 20
Test Report 测试报告 5 5
Size Measurement 计算工作量 10 20
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 20
posted @ 2020-11-07 22:47  何欢hh  阅读(80)  评论(0编辑  收藏  举报