• C语言博客作业05---指针


    1.本章学习总结

    1.1 思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1 学习体会

    • 这一阶段学习了关于指针的知识,对于指针,个人感觉它比之前学习的知识更加抽象,更加难理解。
    • 这阶段也挺累的,最近学的知识包括指针都是在没预习的情况下老师直接开始上课了,学起来有点儿吃力。但好在可以通过课堂派pta的作业来训练对指针的运用。
    • 很多人都说指针是C语言的灵魂,所以可以突出它的重要性,虽然它很难搞清楚,但是也要努力去学好它。
    • 学了指针之后相比之前有更加好的解题思路,没学指针之前用数组比较多,调用函数时直接把整个数组传过去,但是学了指针之后,可以直接传地址就可以了。
    • 指针最大的优点就是可以提高编程的质量,也就是代码的效率。所以要好好学习对指针的运用。

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA排名得分

    2.2 我的总分:

    • 110分

    3.PTA实验作业

    3.1 PTA题目1

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
    测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
    

    3.1.1 算法分析

      char op[500001];//定义最大情况
      int i,j,len;
      int count=0;//定义计算每个单词的长度
      int flag=1;//控制空格输出
      gets(op);//得到字符串
      len=strlen(op);//得字符串的长度
      for  i=len-1  to  0 //遍历字符串
          if   op[i]!=' '   then   count++   end if  //计算每个单词的长度
          if   op[i]>='A'&&op[i]<='Z'   then
                     //控制空格输出
                     if   flag==1   then   flag=0; end if
                     else  输出空格
                     for  j=i   to  i+count  输出单词  end for
                     count=0//重新计算下一个单词的长度
          end if
          //对最大的情况进行输出      
          if  count>0  then   输出空格
                       for   i=0  to  count   输出单词   end for
          end  if                     
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    Q1:第一次提交格式出错,有看了看题目,才发现结尾不可以有空格
    A1:后来定义flag来控制空格的输出,第一个单词前不输出空格,后面的单词前都需要输出空格。
    Q2:没有考虑到最后一个测试点,就是最大的时候可能没有开头的大写字母就结束了,这样没遇到大写字母就没法输出。
    A2:后来继续去考虑count是否大于0,如果大于0就说明还有单词没有输出,再把最后那个输出即可。

    4.大作业

    4.1.改造函数介绍

    1.函数1

    begin://以防输入非法字符,可以重新输入
    int i=0,j,answer;
    double totalTime;//计算每题的答题时间
    char op[4]={'+','-','*','/'};定义字符串来随机生成符号
    if level=1 then
        生成一步一位数加减乘除计算式,并储存
        end if
    else if level==2 orlevel==3 then
        生成两步2/3位加减计算式,并储存
        end if
    if  strlen(exp)==3  then//判断是否可以整除,不可以则重新生成表达式
    		if  !IsExp(exp)   then  goto begin  end if
    end if
    


    2.函数2

    int flag=1//控制输出
    if  运算符是除号时  then  
        if  结果不能被整除时  flag=0;  end if
    end if
    if  运算符是减号时  then  
        if  前一个数大于后面一个数时  flag=0;  end if
    end if
    return flag;
    

    3.函数3

    int m,sum=0,i,answer;
    char oldc='+';
    if  strlen(exp)==3  then//如果是第一级别的情况
       if  中间的符号是+  then  answer=前面的数+后面的数  end if
       if  中间的符号是-  then  answer=前面的数-后面的数  end if
       if  中间的符号是*  then  answer=前面的数*后面的数  end if
       if  中间的符号是/  then  answer=前面的数/后面的数  end if
    end if
    else//如果是第二,三级别的情况
       for  i=0  to  strlen(exp)
             if  字符在0到9之间  then
                 m=10*m+(*(exp+i)-'0');//求每个数的数值
             end if
            else //字符不在0到9之间  
                if  oldc=='+'  then  sum=sum+m;   end if
                else  sum=sum-m;  end else
                m=0;
                oldc=*(exp+i)
             end else
       end for
      answer=sum;
    end else
    return answer;
    

    4.3 与原有函数代码比较

    • 原来的代码





    • 两者不同:主要的不同就是之前的函数运用得不好,这次有好好运用函数了。改造之前我的创建表达式的代码都是在每个级别的函数里面,之前的代码运用函数使用得不好,整个程序就只有三个函数,分别就是每个级别各一个函数,这样写可读性很差,虽然有达到要实现的功能,但是三个代码里面有很多重复的代码,可以使用函数将代码进行重新构造,就像这次写的代码,就有重新构造了函数,使代码的可读性更好,性能也更加好
    • 两者优点:新函数的分块实现功能很明显比旧函数有更好的可读性以及拓展性,实现分块包装函数,如果有出现错误的话可以更加简单的进行代码的改进,不用到处找哪里出错,很明显的就可以看出哪里出错了。而且如果要对代码进行升级的话,分块包装函数的作用就更明显了。
    • 二者缺点:虽然大部分完成了所需要的功能需求,但是还是存在bug,函数之间参数的传递连接不能够很好的衔接,功能有待完善。且由于函数之间的调用,函数中还嵌套着函数,使函数不便阅读。旧函数的缺点就更明显了,功能集中导致代码很长且各个函数之间有许多重复的内容,可读性差,拓展性也很弱

    4.4 改进大作业总结

    • 第一次写大作业时,由于刚学函数没多久,对函数的使用方法不是很了解,使用第一次的大作业只有三个函数,就是不同级别的函数分装在不同的函数里,但是这样的话定义变量的时候又要重新定义与之前相同的变量,导致代码的可读性很差,拓展性也很弱
    • 到了第二次写大作业时,思路由于之前就有了,所以相对于之前有比较轻松,而且这次使用了函数分装的写法,使代码看起来更规范更有可读性。但对于函数的的使用方法还是有点不懂,形参实参的传递以及函数怎么使用还是不太熟练,可能是题目做得不够多,再加上平时的作用都是直接写,很少去使用函数,所以才会导致现在函数使用不是很明白。但好在通过这次的大作业使我对函数的使用有更加深刻的理解,用了函数的分装之后发现,代码看起来美观多了,而且每个函数的功能明确,要修改代码的时候更加的方便,而且如果要拓展函数的话,只要在定义新的函数即可,在进行函数的连接,很快就可以完成函数的拓展。
  • 相关阅读:
    数据库结构中的"树"
    Jquery学习
    cms系统也不复杂
    让你的博客园变灰
    IList对象排序方法
    计算机简介(二)
    在同一台电脑上使用U盘时快时慢的解决方法
    计算机简介
    合并排序
    javascript小结
  • 原文地址:https://www.cnblogs.com/wcrbailun/p/10129062.html
Copyright © 2020-2023  润新知