《四则运算》测试程序

  一、我的程序没有用到函数,所有的代码全部在主函数里,所以在这里只能用写过的部分程序进行测试。

  二、源代码

    

#include "stdafx.h"
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
int main(int argc, char* argv[])
{
    srand(time(NULL));
    int    ph[10];                     //建立捕获数组,用以存放输入的选则  
    int Pway,num1,num2;                      //用来表示打印方式
    int i,j;
    printf("以下均用0表示输入“否”,用1表示输入“是”\n");
    printf("请输入要打印的题目数量:");
    scanf("%d",&ph[0]);                      //a[0]存放打印题的数量
    printf("请输入打印的方式(列数):");
    scanf("%d",&ph[1]);                                    //a[1]代表输入的列数
    printf("请输入是否有乘除法:");
    scanf("%d",&ph[2]);                                          //a[2]代表有无乘除法
    printf("请输入数值范围:");
    scanf("%d",&ph[3]);
    for(i=0; i<ph[0]; i++)
    {
        num1 = rand()%(ph[3]+1);
        num2 = rand()%(ph[3]+1);
        switch(ph[2])
        {
        case 0:                         //如果没有乘除法
            Pway = rand()%2;            //构造随机函数,输出只有加减法的运算
            if(Pway == 0)                //加法
            {
                printf("<%d>%d+%d=\t",i+1,num1,num2);
                if((i+1)%ph[1] == 0)
                {
                    printf("\n");
                }
            }
            else
            {
                printf("<%d>%d-%d=\t",i+1,num1,num2);
                if((i+1)%ph[1] == 0)              //判断是否换行
                {
                    printf("\n");
                }
            }
            break;
        case 1:                                   //有乘除法的输出
            Pway = rand()%4;
            switch(Pway)                
            {
            case 0:                                     //加法
                printf("<%d>%d+%d=\t",i+1,num1,num2);
                if((i+1)%ph[1] == 0)
                {
                    printf("\n");
                }
                break;
            case 1:
                if(ph[4] == 0)
                {
                    if(num1<num2)                //确定被减数大于减数,其他的控制如上述减法的控制
                    {
                        i = i-1;
                    }
                    else
                    {
                        printf("<%d>%d-%d=\t",i+1,num1,num2); 
                        if((i+1)%ph[1] == 0)
                        {
                            printf("\n");
                        }
                    }
                }
                else
                {
                    printf("<%d>%d-%d=\t",i+1,num1,num2);
                    if((i+1)%ph[1] == 0)
                    {
                        printf("\n");
                    }
                }
                break;
            case 2:                                //乘法
                printf("<%d>%d×%d=\t",i+1,num1,num2);
                if((i+1)%ph[1] == 0)
                {
                    printf("\n");
                }
                break;
            case 3:                                //除法
                if(num2 == 0)                       //除数不能为零
                {
                    i = i - 1;
                }
                else
                {
                    printf("<%d>%d÷%d=\t",i+1,num1,num2);
                    if((i+1)%ph[1] == 0)
                    {
                        printf("\n");
                    }
                }
                break;
            default:
                printf("出错!\n");
                break;
            }
            break;
        default:
            printf("出错!\n");
            break;
        }
    }
    return 0;
}

三、测试数据及结果截图

  1.测试数据:1,2,0,10,即题目数量1,打印方式是2列,没有乘除法,数值范围是10以内的非负数。

 

  2.测试数据:30,4,0,20,即题目数量30,打印方式是4列,没有乘除法,数值范围是20以内的非负数。

  3.测试数据:30,5,1,40,即题目数量30,打印方式是5列,有乘除法,数值范围是40以内的非负数。

四、说明

    在本程序的测试结果中,并没有出现错误,对于边缘数据的输入如上图片所示。但代码对于处理异常的功能并没有实现,

  比如说当输入的不是数字而是字符时,所以在这方面并没有做相应的测试。

posted @ 2015-03-16 13:06  我是一个小小小字符串  阅读(596)  评论(0编辑  收藏  举报