作业2 结对 四则运算

这是在VC++6.0环境下写的
我们组选的四个方向:
1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
2.用户答题结束以后,程序可以显示用户答题所用的时间
3.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
4.程序可以出单个整数阶乘的题目:如:4!=24
虽然没其他小组写的那么复杂,但以上功能都能实现

我的结伴队友是12陈帝燊,博客地址:http://www.cnblogs.com/cds94/

在本次的结对编程中,我们一开始各自提供想法,经过激烈的交流后,决定了我做了1,2,4方向,陈帝燊同学做了3方向并给予精神上的安慰。

总结:

通过本次的实验,我感受到了跟别人结对一起编程与自己一个人编程时的不同。当两个人一起编程的时候,两个人对某件事的想法会有所不同,所以编程的时候会难免有些冲突,但在经过两个人互相了解各自的想法,并消化得出最好的方案,这样的过程能够使我们写出来的程序更加简洁完善,比一个人独自写出来的程序能考虑到其他的没想到方面,写出更好的程序。而这是我第一次与别人结对编程,所以会有所不适应,在编程的时候自然用的时间比平时自己写的时候用的时间要多,但是在这过程中,了解到别人的想法与自己的想法异同,自己的思路变跟得清晰,在交流中明白要做的方向,从而使程序能实现更加完好。这次与别人的结对编程的经历能使我在以后他人共同结对编程更加适应,更好地与他人一起共同编程。在本次的实验中,我也学到了简单的计算用时的方法。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int a[100],b[100];
char c[100],sym[5]={'+','-','*','/','!'};
int answer(int i);
void printanswer(int n);
void main()
{
    int n,o,count;
    time_t start,end; 
    int i;
    char r;
       srand((unsigned)time(NULL));
        while(1)
        {
            count=0;
            printf("输入需要的题目数(不超过5题,0退出):");
            scanf("%d",&n);
            while(n>5||n<0)
            {
                printf("输入错误!请重新输入:");
                scanf("%d",&n);
            }
            if(n==0) {
                exit(0);
                printf("\n谢谢使用!!!    ");
            }
            start =time(NULL);
            for(i=0;i<n;i++)
            {
            a[i]=rand()%201-100;//随机生成数
            b[i]=rand()%201-100;//随机生成数
            c[i]=sym[rand()%5];//随机生成符号
            while(c[i]==sym[3]&&b[i]==0)//当除数为0时重新生成
            {
                b[i]=rand()%201-100;
            }
            if(c[i]==sym[4])//符号为阶乘时的打印题目 
            {            
                while(a[i]<=0)//阶乘的数不是正整数时重新生成
                {
                    a[i]=rand()%201-100;
                }
                printf("%d!=",a[i]);
            }
            else if(a[i]<0&&b[i]<0) printf("(%d)%c(%d)=",a[i],c[i],b[i]);//两个数都为负数时打印的题目
            else if(a[i]<0&&b[i]>=0) printf("(%d)%c%d=",a[i],c[i],b[i]);//前一个数为负数,后一个数为非负数时打印的题目
            else if(a[i]>=0&&b[i]<0) printf("%d%c(%d)=",a[i],c[i],b[i]);//后一个数为负数,前一个数为非负数时打印的题目
            else printf("%d%c%d=",a[i],c[i],b[i]);//两个都为非负数时打印的题目
            
            scanf("%d",&o);
            if(o==answer(i)) {
                printf("正确!\n");
                count++;
            }
            else printf("错误!答案是%d\n",answer(i));
            }
            end =time(NULL);
            printf("答对了%d题,答错了%d题,",count,n-count);
            printf("用时为%d秒\n",end-start);  
        }
}
int answer(int i)
{
    int o;
        if(c[i]==sym[0]) o=a[i]+b[i];
        if(c[i]==sym[1]) o=a[i]-b[i];
        if(c[i]==sym[2]) o=a[i]*b[i];
        if(c[i]==sym[3]) o=a[i]/b[i];
        if(c[i]==sym[4]){
            o=a[i];
            for(i=a[i];i>0;i--)
                o=o*(o-1);
        }
        return o;
}

 
原文地址:https://www.cnblogs.com/poipoi/p/4398854.html