基于控制台的四则运算

一、题目要求:完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序

满足以下需求:

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

   2、运算符为 +, −, ×, ÷

   3、并且要求能处理用户的输入,并判断对错,打分统计正确率。

   4、要求能处理用户输入的真分数, 如 1/2, 5/12 等

   5、使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目

      Myapp.exe -n 10

二、需求分析

  能够自动生成四则运算题目,由人解答,并打印正确率。

三、功能设计与实现

  用C语言编写函数,使用switch结构进行四则运算题的随机生成和正确率的计算。

四、部分代码展示(完整代码:https://git.coding.net/lz201421/yunsuan.git)

运算题生成部分

 

int k=(int)rand()%8;
        switch(k)
        {
            case 0:
                printf("%d/%d*%d/%d=",i,j,x,y);
                scanf("%d%c%d",&a[0],&l,&a[1]);
                f=i*x;
                
                g=j*y;
                if(a[0]/a[1]==f/g)
                {
                    printf("答对\n");
                    c=c+1;}
                else printf("答错\n");
                break;
            case 1:
                 printf("%d/%d÷%d/%d=",i,j,x,y);
             
                scanf("%d%c%d",&a[0],&l,&a[1]);
                f=i*y;
                
                g=j*x;
                if(a[0]/a[1]==f/g)
                {
                    printf("答对\n");
                    c=c+1;}
                else printf("答错\n");
                break;
            case 2:
                 printf("%d/%d+%d/%d=",i,j,x,y);
              
                scanf("%d%c%d",&a[0],&l,&a[1]);
                f=i*y+j*x;
                
                g=j*y;
                if(a[0]/a[1]==f/g)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;
            case 3:
                printf("%d/%d-%d/%d=",i,j,x,y);
               
                scanf("%d%c%d",&a[0],&l,&a[1]);
                    f=i*y-j*x;
                
                g=j*y;
                if(a[0]/a[1]==f/g)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;
            case 4:
                printf("%d+%d=",s,o);
              
                scanf("%d",&w);
                f=s+o;
                if(w==f)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;
            case 5:
                printf("%d-%d=",s,o);
              
                scanf("%d",&w);
                f=s-o;
                if(w==f)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;
            case 6:
                printf("%d*%d=",s,o);
              
                scanf("%d",&w);
                f=s*o;
                if(w==f)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;
            case 7:
                printf("%d÷%d=",s,o);
              
                scanf("%d",&w);
                f=s/o;
                if(w==f)
                {
                    printf("答对\n");
                     c=c+1;
                }
                else printf("答错\n");
                break;

 

结果实例:

 

 

 

 

PSP2.1

Personal Software Process Stages

Estimated time(min)

actual time(min)

Planning

计划

90

120

· Estimate

估计这个任务需要多少时间

90

120

Development

开发

90

120

· Analysis

需求分析 (包括学习新技术)

10

10

· Design Spec

生成设计文档

10

10

· Design Review

设计复审

10

15

· Coding Standard

代码规范

10

15

· Design

具体设计

10

15

· Coding

具体编码

80

100

· Code Review

代码复审

10

10

· Test

测试(自我测试,修改代码,提交修改)

10

10

Reporting

报告

10

15

·

测试报告

5

5

·

计算工作量

5

3

·

并提出过程改进计划

5

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-03-06 22:46  双口  阅读(292)  评论(3编辑  收藏  举报