zoukankan      html  css  js  c++  java
  • 练习5.13

    5.13:下面显示的每个程序都含有一个常见的编程错误,指出错误在哪里,然后修改它们。

    (a) unsigned aCnt=0, eCnt= 0,iouCnt=0;

        char ch = next_text();

        switch (ch)  {

           case 'a' :  aCnt++;

           case 'e' :  eCnt++;

           default :  iouCnt++;

        }

    (b)unsigned index = some_value();

        switch  (index)  {

          case 1 :

              int ix=get_value();

              ivec[ ix ] = index;

              break;

          default :

              ix = ivec.size() -1;

              ivec [ ix ] = index;

          }

    (c)unsigned evenCnt = 0,oddCnt = 0;

       int digit = get_num()%10;

       switch (digit)  {

         case 1,3,5,7,9:

              oddcnt++;

              break;

         case 2,4,6,8,10 :

              evencnt++;

              break;

        }

    (d)unsigned ival =512, jval=1024,kval=4096;

       unsigned bufsize;

       unsigned swt = get_bufCnt();

       switch(swt) {

          case ival :

            buffsize=ival * sizeof(int);

            break;

          case jval :

            buffsize = jval * sizeof(int);

            break;

          case kval :

            bufsize = kval *sizeof(int);

            break;

        }

    Ans:a)如果输入的是a,那么所有的计数变量(aCnt、eCnt、iouCnt)都会递增;如果输入的是b,那么计数变量(eCnt、iouCnt)都会递增。

        修改后的程序:

         unsigned aCnt=0, eCnt= 0,iouCnt=0;

          char ch = next_text();

          switch (ch)  {

             case 'a' :  aCnt++;

                   break;

             case 'e' :  eCnt++;

                    break;

             default :  iouCnt++;

                    break;

          }

        b)C++语言规定不允许跨过一个初始化的变量,而跳转到使用这个变量的地方,而该程序可能发生跳转。

          修改之后:

            unsigned index = some_value();

            int ix=get_value();

              switch  (index)  {

                case 1 :

                    ivec[ ix ] = index;

                    break;

                default :

                    ix = ivec.size() -1;

                    ivec [ ix ] = index;

                }

      c)C++规定case标签后面只能放一个值

        修改后:

       unsigned evenCnt = 0,oddCnt = 0;

       int digit = get_num()%10;

       switch (digit)  {

         case 1:

         case 3:

         case 5:

         case 7:

         case 9:

              oddcnt++;

              break;

         case 2 :

         case 4:

         case 6:

         case 8:

         case 10:

              evencnt++;

              break;

        }

      d)case标签后面应该是整型常量表达式,而该程序的case标签后面的值不是常量。

        修改后:

        const unsigned ival =512, jval=1024,kval=4096;

        unsigned bufsize;

        unsigned swt = get_bufCnt();

           switch(swt) {

              case ival :

                buffsize=ival * sizeof(int);

                break;

              case jval :

                buffsize = jval * sizeof(int);

                break;

              case kval :

                bufsize = kval *sizeof(int);

                break;

            }

  • 相关阅读:
    字典序产生全排列
    python学习1 ---range()函数
    <第一周>降维
    <第一周> city中国城市聚类 testdata学生上网聚类 例子
    Python数据分析与展示[第三周](pandas数据类型操作)
    Python数据分析与展示[第三周](pandas数据特征分析单元8)
    第一周<单元一聚类>
    第一周<导学>
    总体<导学>
    Python数据分析与展示[第三周](pandas简介与数据创建)
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9461091.html
Copyright © 2011-2022 走看看