初级四则运算

 

一、时间计划与实际使用时间

PSP2.1Personal Software Process StagesTime Senior StudentTime
Planning计划128
· Estimate估计这个任务需要多少时间106
Development开发8288
· Analysis需求分析 (包括学习新技术)610
· Design Spec生成设计文档56
· Design Review设计复审46
· Coding Standard代码规范44
· Design具体设计1012
· Coding具体编码3621
· Code Review代码复审79
· Test测试(自我测试,修改代码,提交修改)1530
Reporting报告  
·测试报告  
·计算工作量32
·并提出过程改进计划43

二、题目要求

  任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数。

三、代码提交

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

char getSignal();                      //获取随机运算符的函数
int random(double,double);             //获取随机数函数
int getResult(int,int,char);           //结果计算函数
int takeTest();                        //题目生成函数

void main() 
{
         int i,n,a,right=0;
         double percent;
         printf("请输入题目的数量:");
         scanf("%d",&n);
         for(i=0;i<n;i++)
         {
             a=takeTest();
             right=right+a;
         }
         printf("回答正确!\n");
         printf("正确答案为:%d\n",right);
         percent=((double)right*100.00)/(double)n;
         printf("正确率为:%0.2f %%\n",percent);
}

char getSignal()
{
    char signal[4]={'+','-','*','/'};
    srand((unsigned)time(NULL));
    return signal[rand()%4];
}



int random(double start, double end)
{
    return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
}


int getResult(int num1,int num2,char signal)
{
    int res;
    switch(signal)
    {
    case '+':
        res=num1+num2;break;
    case '-':
        res=num1-num2;break;
    case '*':
        res=num1*num2;break;
    case '/':
        res=num1/num2;break;
    default:
        printf("运算符错误!\n");
    }
    return res;
}

int takeTest()
{
    int get;
    int num1,num2,a;
    char signal;

    srand((unsigned)time(NULL));
    signal=getSignal();
    num1=random(0,1000);
    num2=random(1,1000);
if(signal=='-')
    {
        if(num1<num2)
        {
            int temp;
            temp=num1;
            num1=num2;
            num2=temp;
        }
    }
    if(signal=='/')
    {
        if(num2==0)
        {
            int temp;
            temp=num1;
            num1=num2;
            num2=temp;
        }
    }
    printf("%d%c%d=",num1,signal,num2);
    scanf("%d",&get);
    fflush(stdin);   //清空输入缓冲区
    if(getResult(num1,num2,signal)==get)
        {
        printf("回答正确!\n");
        a=1;
        }
    else
    {
        printf("回答错误!\n");
        printf("正确答案为: %d\n",getResult(num1,num2,signal));
        a=0;
    }
    return a;
}

 

四、需求分析

用户控制生成题目的个数,并能够自动随机生成加减乘除四则运算,运算包括整数的运算,答完题后生出正确答案,并在最后能统计答题正确数与正确率。

五、设计

开发工具:Visio c++ 6.0

编程语言:C语言

函数设计:char getSignal()用于获取随机运算符函数

                  int random(double,double)用于获取随机数函数
                  int getResult(int,int,char)用于结果计算函数
                  int takeTest()用于题目生成函数

五、遇到的问题与解决

对C语言的编辑代码已经忘了很多了,写代码的时候遇到了很多问题,一个小小的代码写了好久都有很多问题,最后在同学的帮助下进行了更正。

转载于:https://www.cnblogs.com/Tily/p/9772510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值