第16周《C++语言基础》程序阅读——异常处理和命名空间

问题描述:

阅读下面的程序,写出输出结果

(1)

<code class="hljs cpp has-numbering"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;"><span class="hljs-preprocessor">#include <iostream ></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;
<span class="hljs-keyword">int</span> a[<span class="hljs-number">10</span>]= {<span class="hljs-number">1</span>,<span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>, <span class="hljs-number">10</span>};
<span class="hljs-keyword">int</span> fun( <span class="hljs-keyword">int</span> i);
<span class="hljs-keyword">int</span> main()
{
    <span class="hljs-keyword">int</span> i ,s=<span class="hljs-number">0</span>;
    <span class="hljs-keyword">for</span>( i=<span class="hljs-number">0</span>; i<=<span class="hljs-number">10</span>; i++)
    {
        <span class="hljs-keyword">try</span>
        {
            s=s+fun(i);
        }
        <span class="hljs-keyword">catch</span>(<span class="hljs-keyword">int</span>)
        {
            <span class="hljs-built_in">cout</span><<<span class="hljs-string">"数组下标越界!"</span><<endl;
        }
    }
    <span class="hljs-built_in">cout</span><<<span class="hljs-string">"s="</span><<s<<endl;
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
<span class="hljs-keyword">int</span> fun( <span class="hljs-keyword">int</span> i)
{
    <span class="hljs-keyword">if</span>(i>=<span class="hljs-number">10</span>)
        <span class="hljs-keyword">throw</span> i;
    <span class="hljs-keyword">return</span> a[i];
}</span></strong></code><ul style="FILTER:  ; ZOOM: 1" class="pre-numbering"><li><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;">1</span></strong></li></ul>

预计运行结果:

数组下标越界!

s=55

实际运行结果:

 

(2)

<code class="hljs cpp has-numbering"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;"><span class="hljs-preprocessor">#include <iostream></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span>  <span class="hljs-built_in">std</span>;
<span class="hljs-keyword">namespace</span> CounterNameSpace
{
<span class="hljs-keyword">int</span> upperbound;
<span class="hljs-keyword">int</span> lowerbound;

<span class="hljs-keyword">class</span> counter
{
    <span class="hljs-keyword">int</span> count;
<span class="hljs-keyword">public</span>:
    counter(<span class="hljs-keyword">int</span> n)
    {
        <span class="hljs-keyword">if</span> (n <= upperbound )
        {
            count = n;
        }
        <span class="hljs-keyword">else</span>
        {
            count = upperbound;
        }
    }

    <span class="hljs-keyword">void</span> reset(<span class="hljs-keyword">int</span> n)
    {
        <span class="hljs-keyword">if</span> (n < upperbound)
        {
            count = n;
        }
    }

    <span class="hljs-keyword">int</span> run()
    {
        <span class="hljs-keyword">if</span> (count > lowerbound)
        {
            <span class="hljs-keyword">return</span> count--;
        }
        <span class="hljs-keyword">else</span>
            <span class="hljs-keyword">return</span> lowerbound;
    }
};
}

<span class="hljs-keyword">int</span> main()
{
    CounterNameSpace::upperbound = <span class="hljs-number">100</span>;
    CounterNameSpace::lowerbound = <span class="hljs-number">0</span>;
    CounterNameSpace::counter ob1(<span class="hljs-number">10</span>);
<span class="hljs-keyword">int</span> i;

    <span class="hljs-keyword">do</span>
    {
        i = ob1.run();
        <span class="hljs-built_in">cout</span> << i << <span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span> (i > CounterNameSpace::lowerbound);
    <span class="hljs-built_in">cout</span> << endl;

    CounterNameSpace::counter ob2(<span class="hljs-number">20</span>);
    <span class="hljs-keyword">do</span>
    {
        i = ob2.run();
        <span class="hljs-built_in">cout</span> << i << <span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span> (i > CounterNameSpace::lowerbound);
    <span class="hljs-built_in">cout</span> << endl;

    ob2.reset(<span class="hljs-number">100</span>);
    <span class="hljs-keyword">do</span>
    {
        i = ob2.run();
        <span class="hljs-built_in">cout</span> << i << <span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span> (i > CounterNameSpace::lowerbound);
    <span class="hljs-built_in">cout</span> << endl;

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</span></strong></code><ul style="FILTER:  ; ZOOM: 1" class="pre-numbering"><li><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;">1</span></strong></li></ul>

预计运行结果:

10 9 8 7 6 5 4 3 2 1 0

20 19 18 17 16 15 14 13 12 11 

10 9 8 7 6 5 4 3 2 1 0

0

实际运行结果:

(3)将(2)中的main函数换作如下形式,其余不变

<code class="hljs cpp has-numbering"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;"><span class="hljs-keyword">int</span> main()
{
    <span class="hljs-keyword">using</span> CounterNameSpace::upperbound;
    upperbound = <span class="hljs-number">100</span>;   <span class="hljs-comment">//(a)</span>
    CounterNameSpace::lowerbound = <span class="hljs-number">0</span>;  <span class="hljs-comment">//(b)</span>
    CounterNameSpace::counter ob1(<span class="hljs-number">10</span>);
    <span class="hljs-keyword">int</span> i;
    <span class="hljs-keyword">do</span>
    {
        i = ob1.run();
        <span class="hljs-built_in">cout</span> << i<<<span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span>( i > CounterNameSpace::lowerbound);
    <span class="hljs-built_in">cout</span> << endl;

    <span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> CounterNameSpace;
    counter ob2(<span class="hljs-number">20</span>);
    <span class="hljs-keyword">do</span>
    {
        i = ob2.run();
        <span class="hljs-built_in">cout</span> << i<<<span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span>( i > CounterNameSpace::lowerbound); <span class="hljs-comment">//(c)</span>
    <span class="hljs-built_in">cout</span> << endl;

    ob2.reset(<span class="hljs-number">100</span>);
    lowerbound = <span class="hljs-number">90</span>;   <span class="hljs-comment">//(d)</span>
    <span class="hljs-keyword">do</span>
    {
        i = ob2.run();
        <span class="hljs-built_in">cout</span> << i <<<span class="hljs-string">" "</span>;
    }
    <span class="hljs-keyword">while</span>( i > lowerbound);  

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</span></strong></code><ul style="FILTER:  ; ZOOM: 1" class="pre-numbering"><li><strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;">1</span></strong></li></ul>

预计运行结果:

10 9 8 7 6 5 4 3 2 1 0

20 19 18 17 16 15 14 13 12 11 

10 9 8 7 6 5 4 3 2 1 0

90

实际运行结果:

请回答:

(a)(d)处:为什么可以省去CounterNameSpace::? 

因为之前使用过了!

(b)(c)处:是否可以省去CounterNameSpace::?

能!

时间: 2024-11-13 09:58:43

第16周《C++语言基础》程序阅读——异常处理和命名空间的相关文章

2.6-Java语言基础(程序流程控制)

判断结构 选择结构 循环结构 2.6.1  判断结构 if语句 三种格式: 1.  if(条件表达式) { 执行语句: } 2.  if(条件表达式) { 执行语句: } else { 执行语句: } 3. if(条件表达式) { 执行语句: } else if (条件表达式) { 执行语句: } -- else { 执行语句: } if语句特点: a,每一种格式都是单条语句. b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现.好处是:可以写在其他表达式中. c,条件表达式无论写成什

大数据spark学习第一周Scala语言基础

Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通用编程语言.既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发.2004年開始程序执行在JVM与.Net平台之上.由于其简洁.优雅.类型安全的编程模式而受到关注. Scala的创建者——Martin Odersk 在Scala的创建之初,并没有怎么引起重视,随着Apache Spark和Apache Kafka这样基于Scala的大数据框架

第十六周阅读程序:异常处理和命名空间

(1) #include <iostream > using namespace std; int a[10]= {1,2, 3, 4, 5, 6, 7, 8, 9, 10}; int fun( int i); int main() { int i ,s=0; for( i=0; i<=10; i++) { try { s=s+fun(i); } catch(int) { cout<<"数组下标越界!"<<endl; } } cout<&

Java之J2se-Java语言基础(程序结构) 教学视频发布了,请小伙伴们前往观看

视频地址如下: http://v.youku.com/v_show/id_XODA5NTM3NTAw.html

java--java语言基础(3)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java语言基础(3) 主要内容:<运算符.键盘录入.顺序结构.选择结构if.三元运算符.选择结构switch.> 1 位运算符的基本用法1 位运算符:是对整数的二进制直接进行操作的 1.<< : 左移:左侧高位丢弃,右侧补0.左移一位,相当于原数 * 2 ; 实际移动的位数 = 要移动的位数 % 32; 2.>> : 带符号右移:右移一位,右侧的最低位丢弃,左侧高位

java--java语言基础(4)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java语言基础(4) 主要内容:<循环结构while.do...while.for.嵌套循环.跳转> 1 循环结构while语句的格式和基本使用 第一种循环结构: while循环: 格式: while(逻辑表达式){ //循环体代码.需要重复执行的代码 } 说明: 1.逻辑表达式:必须返回一个boolean类型的结果: 2.如果返回true:执行循环体: 3.循环体执行完毕,回到上面的&q

java--学习java从这里开始:Java语言基础(1)《基础知识篇》--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java语言基础(1) 从这篇日记开始说一些关于java的语言基础知识, 1  Java语言概述 java的创始人——詹姆斯·高斯林(James Gosling) 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第7一代工作站NeWS系统,但不受重视.后来转至Sun公司,1990年,与Patrick,Na

Lua语言基础汇总(7) -- 协同程序

前言 协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西.从概念上讲,线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行.就是说,一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显式地要求挂起时,它的执行才会暂停. 协同程序基础 Lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中.函数create

黑马程序员_Java环境搭建及语言基础

- - - - android培训.java培训.期待与您交流!- - - - - - JRE和JDK JRE:Java Runtime Environment,java运行环境. JDK:Java Development Kit,java开发工具包. 使用JDK开发java程序,交给JRE运行. JDK下载和安装 http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK的目录结构 目录/文件名 功能说明   b