zoukankan      html  css  js  c++  java
  • 王歆瑶20190919-6 结对四则运算

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631

    git地址:https://e.coding.net/wxyao/sizeyunsuan1.git

    结对伙伴:梅小雨

    功能1. 四则运算

    支持出题4个数的四则运算题目,所有题目要求作者有能力正确回答

    1.重难点:随机生成题目以及计算正确题目的数量。

    2.编程收获:经过一系列的思考和讨论,我们决定用后缀表达式来实现四则运算,锻炼了解决问题的思维方式。

     

     代码片段:

    void First()
    {
        int i,test=0,counter=0;
        float ans;
        int n=20;
        while(n--)
        {
            //strcpy(str1,GetStr());
            //printf("1");
            //puts(str);
            GetStr();
            float Tans=Arithmetic(str1);
            //printf("2");
            for(i=0; i<7; i++)
            {
                printf("%c",str1[i]);
            }
            printf("=
    ");
            printf("?");
            scanf("%f",&ans);
            if(Tans==ans)
            {
                printf("答对啦,你真是个天才!
    ");
                counter++;
            }
            else
            {
                printf("再想想吧,答案似乎是%.2f喔!
    ",Tans);
            }
        }
        printf("你一共答对%d道题,共20道题。",counter);
    
    
    }

    功能2. 支持括号

    1.重难点:怎么在加入括号以后程序能正确运行

    2.编程收获:我们在加括号期间,出现了很多bug,反复修改了好几次,才终于实现。

     

    代码片段:

    switch(KH)
            {
            case 0:
                for(i=7; i>0; i--)
                    str1[i]=str1[i-1];
                for(i=8; i>4; i--)
                    str1[i]=str1[i-1];
                str1[0]='(';
                str1[4]=')';
                str1[9]='';
                break;
            case 1:
                for(i=7; i>0; i--)
                    str1[i]=str1[i-1];
                for(i=8; i>6; i--)
                    str1[i]=str1[i-1];
                str1[0]='(';
                str1[6]=')';
                str1[9]='';
                break;
            case 2:
                for(i=7; i>2; i--)
                    str1[i]=str1[i-1];
                for(i=8; i>6; i--)
                    str1[i]=str1[i-1];
                str1[2]='(';
                str1[6]=')';
                str1[9]='';
                break;
            case 3:
                for(i=7; i>2; i--)
                    str1[i]=str1[i-1];
                str1[2]='(';
                str1[8]=')';
                str1[9]='';
                break;
            case 4:
                for(i=7; i>4; i--)
                    str1[i]=str1[i-1];
                str1[4]='(';
                str1[8]=')';
                str1[9]='';
                break;
            default:
                break;
            }

    功能3.限定题目数量,"精美"打印输出,避免重复

    1.重难点:如何实现输入数字就出现对应数量的题目

    2.编程收获:在这一功能里,我和梅小雨绞尽脑汁才实现,但是必须借助记事本

     代码片段:

    fp=fopen("f.txt","w+");
        while(n--)
        {
            //strcpy(str1,GetStr());
            //printf("1");
            //puts(str);
            flag=false;
            GetStr();
            if(rand()%2==1)
            {
                int KH=rand()%5;
                switch(KH)
                {
                case 0:
                    for(i=7; i>0; i--)
                        str1[i]=str1[i-1];
                    for(i=8; i>4; i--)
                        str1[i]=str1[i-1];
                    str1[0]='(';
                    str1[4]=')';
                    str1[9]='';
                    break;
                case 1:
                    for(i=7; i>0; i--)
                        str1[i]=str1[i-1];
                    for(i=8; i>6; i--)
                        str1[i]=str1[i-1];
                    str1[0]='(';
                    str1[6]=')';
                    str1[9]='';
                    break;
                case 2:
                    for(i=7; i>2; i--)
                        str1[i]=str1[i-1];
                    for(i=8; i>6; i--)
                        str1[i]=str1[i-1];
                    str1[2]='(';
                    str1[6]=')';
                    str1[9]='';
                    break;
                case 3:
                    for(i=7; i>2; i--)
                        str1[i]=str1[i-1];
                    str1[2]='(';
                    str1[8]=')';
                    str1[9]='';
                    break;
                case 4:
                    for(i=7; i>4; i--)
                        str1[i]=str1[i-1];
                    str1[4]='(';
                    str1[8]=')';
                    str1[9]='';
                    break;
                default:
                    break;
                }
            }
    for(int i=0; i<len; i++)
            {
                if(string1[i]<'0'||string1[i]>'9')
                {
                    printf("题目数量必须是正整数。");
                    flag=false;
                    break;
                }
    
            }

    体会与收获:

      很感谢我的伙伴——梅小雨同学,她的基础很好,在我们的合作中她对我的帮助很大,也让我学到了很多新东西,我在本科期间也按老师要求和同学组队编写过程序,但是氛围没有和梅小雨同学合作的氛围和谐,两人结对完成项目让我们的思维方式和能力都要有了很大提高,此外,我们的打字速度很慢,打字速度跟不上思维,所以耽误了很多时间,为了完成这次作业,我们走了很多弯路,也请教了学姐,结对也让我意识到我的编程基础还很薄弱,以后需要加强。

    至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件:

    1.在使用switch语句时我们遇到了困难,怎么运行都有问题,最后是梅小雨发现我们忘记加break了,问题才得以解决。

    2.在功能一中,我们一开始一点思路也没有,不知道怎么随机运算,后来请教了学姐才有了一点思路,花费了我们一个下午的时间。

    3.我们以前没有接触过单元测试,对这个很不了解,我们请教学姐以后又查了很多资料,在电脑里下载了好几个软件,还是没有成功,不仅浪费了很多时间,电脑运行也变得很卡,我当时特别烦,梅小雨同学很耐心地安慰我。

    4.在功能二中,我们添加了括号以后,程序出现了很多bug,我们只好一个语句一个语句的查看,一条一条的改,其中有一处循环我们以为和功能一是一样的,直接粘贴过去,结果发现不可以,修改又用了我们好长时间。

    5.在功能三中,我们先后试了for循环,while循环等好几种方法,只实现了功能三的部分功能,这种反复修改又反复失败的经历让我觉得超级心累,最大的收获就是清楚的认识到自己的水平很差。

    工作地点:净月校区一食堂二楼

     照片:

  • 相关阅读:
    VS2012 professional和VS2012 Ultimate的区别
    ConcurrentDictionary和Dictionary
    ConcurrentDictionary的ToDictionary
    AutoResetEvent
    查看局域网内某个ip的mac地址
    斗争程序猿(三十八)——历史朝代大学(两)——我与数据库的故事
    Windowsport80解决方案被占用
    unity3d 各功能的运行秩序,打回来,订购,的次数
    蜘蛛爱上你的网站
    Java线(一个):线程安全的和不安全
  • 原文地址:https://www.cnblogs.com/wxyao/p/11572918.html
Copyright © 2011-2022 走看看