四则运算二

一,设计思路:

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:否)\n"); 
scanf("%d",&m);
if(m!=0&&m!=1)
{
printf("输入错误,请重新输入!\n");
Carry();
}
printf("2.请输入取值范围:(0-?)\n"); 
scanf("%d",&r);
printf("3.请选择加减有无负数:(0:有 1:无)\n");
scanf("%d",&n);
if(n!=0&&n!=1)
{
printf("输入错误请重新输入!\n");
Carry();
}
if(m==0)
{
printf("4.请选择出发有无余数:(0:有 1:无)\n"); 
scanf("%d",&d);
if(d!=0&&d!=1)
{
printf("输入错误请重新输入!\n");
Carry();
}
}
printf("5.请输入题目个数:\n"); 
scanf("%d",&q);
if(q<=0)
{
printf("输入错误请重新输入!\n");
Carry();
}
printf("6.请选择打印方式:0为逐行打印,输入其他数字则为一行几列\n"); 
scanf("%d",&p);
if(p<0)
{
printf("输入错误请重新输入!\n");
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=\n",a[i],b[i]); 
if(c[i]==1)
printf("%d-%d=\n",a[i],b[i]); 
if(c[i]==2)
printf("%d*%d=\n",a[i],b[i]); 
if(c[i]==3)
printf("%d/%d=\n",a[i],b[i]); 
}
else
{
if(c[i]==0)
printf("%d+%d=\t",a[i],b[i]); 
if(c[i]==1)
printf("%d-%d=\t",a[i],b[i]); 
if(c[i]==2)
printf("%d*%d=\t",a[i],b[i]); 
if(c[i]==3)
printf("%d/%d=\t",a[i],b[i]); 
if((i+1)%p==0)
printf("\n"); 
}
}
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

 

描述:没有添加出错处理

 

 

 

 

posted on 2015-03-15 10:58  简简单单爱  阅读(189)  评论(0编辑  收藏  举报