结对编程------四则运算

此次体验结对编程编写四则运算程序。

一:两个运算符,100以内的数字,不用输出答案。

  版本一:定义三个int型随机变量表示需要运算的数字,两个flag(0-3)随机变量来分别表示加、减、乘、除等四个运算符,使用if语句直接将运算表示出来。

具体代码为:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    int x1,x2,x3,flag1,flag2;
    srand((unsigned)time(NULL));
    x1=rand()%100;
    x2=rand()%100;
    x3=rand()%100;
    flag1=rand()%3;
    flag2=rand()%3;
    if(flag1==0){
            if(flag2==0)
                printf("%d+%d+%d=",x1,x2,x3);
            else if(flag2==1)
                printf("%d+%d-%d=",x1,x2,x3);
            else if(flag2==2)
                printf("%d+%d*%d=",x1,x2,x3);
            else if(flag2==3)
                printf("%d+%d/%d=",x1,x2,x3);}
    else if(flag1==1){
            if(flag2==0)
                printf("%d-%d+%d=",x1,x2,x3);
            else if(flag2==1)
                printf("%d-%d-%d=",x1,x2,x3);
            else if(flag2==2)
                printf("%d-%d*%d=",x1,x2,x3);
            else if(flag2==3)
                printf("%d-%d/%d=",x1,x2,x3);        
    }
    else if(flag1==2){
            if(flag2==0)
                printf("%d*%d+%d=",x1,x2,x3);
            else if(flag2==1)
                printf("%d*%d-%d=",x1,x2,x3);
            else if(flag2==2)
                printf("%d*%d*%d=",x1,x2,x3);
            else if(flag2==3)
                printf("%d*%d/%d=",x1,x2,x3);        
    }
    else if(flag1==3){
            if(flag2==0)
                printf("%d/%d+%d=",x1,x2,x3);
            else if(flag2==1)
                printf("%d/%d-%d=",x1,x2,x3);
            else if(flag2==2)
                printf("%d/%d*%d=",x1,x2,x3);
            else if(flag2==3)
                printf("%d/%d/%d=",x1,x2,x3);        
    }
    return 0;
}

运行结果:(代码中没有控制数量的while语句,实际运行时已加上)

 

 

 

  版本二:因为不需要输出答案,只需要表示出运算式子即可,则将四个运算符放入到一个字符数组中,定义两个个随机变量flag来确定,最后输出即可。定义变量 i 来控制需要输出式子的数量。

具体代码为:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    int x1,x2,x3;//随机数字 
    char a[]={'+','-','*','/'};//运算符数组
    int flag1,flag2,i;
    srand((unsigned)time(NULL));
    for(i=1;i<=300;i++){
    x1=rand()%100;
    x2=rand()%100;
    x3=rand()%100;
    flag1=rand()%3;
    flag2=rand()%3;
    printf("%d%c%d%c%d=\n",x1,a[flag1],x2,a[flag2],x3);
}
    return 0;
}

运行结果:

 

 

 

二:两个运算符,运算答案为0到100,输出答案。

  在第一题版本一的基础上修改:因为要输出答案,所以定义一个变量answer来确定运算答案,并用if来控制是否输出。定义变量 i 和 j 来控制输出的数量。

具体代码为:

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    int x1,x2,x3,flag1,flag2;
    int i,j;
    double answer;
    i=1;
    j=0; 
    answer=0;
    srand((unsigned)time(NULL));
    while(i!=-1&&j<=300){
    x1=rand()%100;
    x2=rand()%100;
    x3=rand()%100;
    flag1=rand()%3;
    flag2=rand()%3;
        if(flag1==0){
            if(flag2==0)
                answer=x1+x2+x3;
            else if(flag2==1)
                answer=x1+x2-x3;
            else if(flag2==2)
                answer=x1+x2*x3;
            else if(flag2==3)
                answer=x1+x2/x3;
            }
    else if(flag1==1){
            if(flag2==0)
                answer=x1-x2+x3;
            else if(flag2==1)
                answer=x1-x2-x3;
            else if(flag2==2)
                answer=x1-x2*x3;
            else if(flag2==3)
                answer=x1-x2/x3;        
    }
    else if(flag1==2){
            if(flag2==0)
                answer=x1*x2+x3;
            else if(flag2==1)
                answer=x1*x2-x3;
            else if(flag2==2)
                answer=x1*x2*x3;
            else if(flag2==3)
                answer=x1*x2/x3;        
    }
    else if(flag1==3){
            if(flag2==0)
                answer=x1/x2+x3;
            else if(flag2==1)
                answer=x1/x2-x3;
            else if(flag2==2)
                answer=x1/x2*x3;
            else if(flag2==3)
                answer=x1/x2/x3;        
    }
    if(answer>=0&&answer<=100){
    if(flag1==0){
            if(flag2==0){
            j++;
            printf("%d+%d+%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==1){
            j++;
            printf("%d+%d-%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==2){
            j++;
            printf("%d+%d*%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==3){
            j++;
            printf("%d+%d/%d=%.2f\n",x1,x2,x3,answer);
            }
        }
    else if(flag1==1){
            if(flag2==0){
            j++;
            printf("%d-%d+%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==1){
            j++;
            printf("%d-%d-%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==2){
            j++;
            printf("%d-%d*%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==3){
            j++;
            printf("%d-%d/%d=%.2f\n",x1,x2,x3,answer);
            }        
        }
    else if(flag1==2){
            if(flag2==0){
            j++;
            printf("%d*%d+%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==1){
            j++;
            printf("%d*%d-%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==2){
            j++;
            printf("%d*%d*%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==3){
            j++;
            printf("%d*%d/%d=%.2f\n",x1,x2,x3,answer);
            }        
        }
    else if(flag1==3){
            if(flag2==0){
            j++;
            printf("%d/%d+%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==1){
            j++;
            printf("%d/%d-%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==2){
            j++;
            printf("%d/%d*%d=%.2f\n",x1,x2,x3,answer);
            }
            else if(flag2==3){
            j++;
            printf("%d/%d/%d=%.2f\n",x1,x2,x3,answer);
            }    
    }
    }
}
    return 0;
}

 

运行结果:

 

 

 

小结:

  结对编程是一种比较有趣的编程方式,两个人使用同一台电脑一个人编另一个人看,同时两个人还有语言,信息上的交流,这样看似浪费了一个程序员的时间,但实际上提高了编程的效率,即看的那个人可以及时的发现代码中出现的潜在问题,不需要等到代码写完后才调试修改。

  本次的项目是一个比较简单的项目,三个数字进行四则运算的算法并不难,只是判断答案并输出的时候会使代码变的冗长,这时候就要进行算法的优化,比如第一问我们最终代码比第一版代码长度少了一半多。我们切实体会到了代码优化的问题。

 

posted @ 2021-04-27 23:56  heitsun  阅读(128)  评论(0)    收藏  举报