zoukankan      html  css  js  c++  java
  • 四则运算二

    一,设计思路:

    1,避免题目重复,开始准备使用链表后来由于掌握不熟练没能够实现。然后改用定义三个数组进行这不实现,每一道题都要和前面的题目进行比较如果完全不一样才符合要求,否则重新生成。

    2,可定制和打印方式的实现:可定制的实现是在函数里面设置了可变参数,供用户进行选择题目的数量。打印方式分为逐行打印和按每行几列进行打印。

    3,其余参数的控制,都是先给用户输出提示信息,给参数设置控制量,用户输入0则有该参数,输入0则没有该参数,其余提示输入错误请重新输入。

    二,源代码:

    #include<stdlib.h>
    #include<stdio.h>
    void Display(int p); //输出题目
    int a[100],b[100],c[100];
    int i;
    void Carry() //执行全部过程,添加出错处理
    {
    int j;
    int t;
    int m;
    int n;
    int q;
    int d;
    int p;
    int r;
    printf("1.请选择是否有乘除法(0:是 1:否) "); 
    scanf("%d",&m);
    if(m!=0&&m!=1)
    {
    printf("输入错误,请重新输入! ");
    Carry();
    }
    printf("2.请输入取值范围:(0-?) "); 
    scanf("%d",&r);
    printf("3.请选择加减有无负数:(0:有 1:无) ");
    scanf("%d",&n);
    if(n!=0&&n!=1)
    {
    printf("输入错误请重新输入! ");
    Carry();
    }
    if(m==0)
    {
    printf("4.请选择出发有无余数:(0:有 1:无) "); 
    scanf("%d",&d);
    if(d!=0&&d!=1)
    {
    printf("输入错误请重新输入! ");
    Carry();
    }
    }
    printf("5.请输入题目个数: "); 
    scanf("%d",&q);
    if(q<=0)
    {
    printf("输入错误请重新输入! ");
    Carry();
    }
    printf("6.请选择打印方式:0为逐行打印,输入其他数字则为一行几列 "); 
    scanf("%d",&p);
    if(p<0)
    {
    printf("输入错误请重新输入! ");
    Carry();
    }
    for(i=0;i<q;i++)
    {
    a[i]=rand()%r;
    b[i]=rand()%r;
    c[i]=rand()%4;
    if(c[i]==3&&b[i]==0)
    {
    b[i]++;
    }
    for(j=0;j<i;j++) //判断题目是否重复,若重复则a[i]++
    if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])
    a[i]++;
    if(m==0&&n==0&&d==0)
    {
    Display(p);
    }
    else if(m==1) //没有乘除法
    {
    if(c[i]>=2)
    c[i]=c[i]-2;
    Display(p);
    }
    else if(m==0&&n==1&&d==0) //无负数,且被除数大于除数
    {
    if(a[i]<b[i])
    {
    t=a[i];
    a[i]=b[i];
    b[i]=t;
    }
    Display(p);
    }
    else
    {
    if(c[i]==3)
    {
    if(a[i]<b[i])
    {
    t=a[i];
    a[i]=b[i];
    b[i]=t;
    }
    while(a[i]%b[i]!=0) //无余数
    b[i]++;
    }
    Display(p);
    }
    }
    }
    void Display(int p) //输出题目
    {
    if(p==0)
    {
    if(c[i]==0)
    printf("%d+%d= ",a[i],b[i]); 
    if(c[i]==1)
    printf("%d-%d= ",a[i],b[i]); 
    if(c[i]==2)
    printf("%d*%d= ",a[i],b[i]); 
    if(c[i]==3)
    printf("%d/%d= ",a[i],b[i]); 
    }
    else
    {
    if(c[i]==0)
    printf("%d+%d= ",a[i],b[i]); 
    if(c[i]==1)
    printf("%d-%d= ",a[i],b[i]); 
    if(c[i]==2)
    printf("%d*%d= ",a[i],b[i]); 
    if(c[i]==3)
    printf("%d/%d= ",a[i],b[i]); 
    if((i+1)%p==0)
    printf(" "); 
    }
    }
    void main()
    {
    Carry();
    }

    三,运行截图:

    四,实验总结:

    1,开始的逻辑设计思路有些问题,导致程序不能按正常的功能实现。

    2,全局变量定义和调用有无导致程序运行错误。

    3,避免重复设计复杂后来改为定义数组进行比较来解决的问题。

    五,项目进行表:

    1,项目计划总结:

    周活动总结表

    姓名:胡顺利                                                          日期:2015/3/10

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

     

     

    日总计

    周日

     

     

     

     

     

     

     

    周一

     

     

     

     

     

     

     

    周二

         100

     

     

     

     

     

       100

    周三

     

        25

         35

     

     

     

       60

    周四

     

        60

         10

     

     

     

       70

    周五

         100

        0

     

     

     

     

       100

    周六

     

        90

     

     

     

     

       90

    周总结

         200

        175

         45

     

     

     

       420

    阶段时间和效率                                            周数(上一次周活动表的周数+1):

    不包括上一周在内的累计时间                                                                         

    总计

     

     

     

     

     

     

     

    平均

     

     

     

     

     

     

     

    最大

     

     

     

     

     

     

     

    最小

     

     

     

     

     

     

     

    以前各周的累计时间                                                                                    

    总计

     200

     175

      45

     

     

     

       420

    平均

     200

     175

     45

     

     

     

       420

    最大

     200

     175

      45

     

     

     

       420

    最小

     200

     175

      45

     

     

     

       420

    2、时间记录表:

    学生        胡顺利                                             日期       2015/3/11 

    教师        王建民                                             课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3/11

     16:45

     17:10

     

    25

     编程

     四则运算2

     

     17:10

     17:45

     

     35

     看书

     数据结构

     3/12

    17:13

     17:58

     

    45

    编程

    四则运算2

     

     17:58

    18:08

     

    10

    看书

    C++

     

    18:34

    18:49

     

    15

    编程

    四则运算2

     3/13

     

     

     

     

     

     

    3/14

    9:30

    11:00

     

    90

    编程

    四则运算2

     

    3、缺陷记录日志:

    学生      胡顺利 

    日期        3/14    

    教员       王建民   

    程序号                

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3/14

     1

     1

     编码

    编译

    10min

     

     描述:全局变量的声明和调用错误。

     

     2

     2

     编码

    编译

    21min

     

    描述:避免重复设计思路没能实现,后来改为数组进行比较

     

     3

     3

    设计

    编译

    2min

     

    描述:除数为零未考虑进去

     

     4

    3

    设计

    编译

    2min

     

    描述:控制参数逻辑设计错误

     

    5

    3

    设计

    编译

    8min

     

    描述:没有添加出错处理

     

     

     

  • 相关阅读:
    学习 Message(12): 整合鼠标 Down 消息
    合并两个 Wav 文件流的函数 回复 "刘文强" 的问题
    “博客无双”第一期拍卖活动获奖名单公告
    [获奖公告]“博客无双”12月27日第一期获奖名单
    “博客无双”活动拍卖时间调整公告
    致歉
    祝大家新年快乐
    博客园电子期刊2010年12月刊发布啦
    “博客无双”拍卖活动将于14:00开始
    2011年4月微软最有价值专家(MVP)申请截止时间:2011年1月13日
  • 原文地址:https://www.cnblogs.com/hushunli/p/4338938.html
Copyright © 2011-2022 走看看