第十六周 程序阅读(2)

来源:互联网 发布:淘宝评价管理在哪里找 编辑:程序博客网 时间:2024/05/10 14:34

问题及代码:

/**Copyright (c) 2015,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:吴胜男*完成日期:2015年06月21日*版本号:v1.0**问题描述:阅读下面的程序,写出输出结果(2)*输入描述:*程序输出:*/#include <iostream>using namespace  std;namespace CounterNameSpace{int upperbound;int lowerbound;class counter{    int count;public:    counter(int n)    {        if (n <= upperbound )        {            count = n;        }        else        {            count = upperbound;        }    }    void reset(int n)    {        if (n < upperbound)        {            count = n;        }    }    int run()    {        if (count > lowerbound)        {            return count--;        }        else            return lowerbound;    }};}int main(){    CounterNameSpace::upperbound = 100;    CounterNameSpace::lowerbound = 0;    CounterNameSpace::counter ob1(10);int i;    do    {        i = ob1.run();        cout << i << " ";    }    while (i > CounterNameSpace::lowerbound);    cout << endl;    CounterNameSpace::counter ob2(20);    do    {        i = ob2.run();        cout << i << " ";    }    while (i > CounterNameSpace::lowerbound);    cout << endl;    ob2.reset(100);    do    {        i = ob2.run();        cout << i << " ";    }    while (i > CounterNameSpace::lowerbound);    cout << endl;    return 0;}

运行结果:

知识点总结:这个程序开始自己想的运行结果是从count-1开始的,显然不对,忘记了一个知识点,就是自增运算i++是在使用i之后,i的值加一,例如:i=3;j=i++;输出结果j=3;然后i值变为4.而++i就是恰好相反,j=++i;输出j=4;当count=0时已经不满足count > lowerbound,直接return lowerbound;输出i=0;在最后的do,while语句中在之前的程序中,count已经减到0,直接输出lowerbound。最后一行的结果即为0.

学习心得:利用好单步调试。

0 0
原创粉丝点击