niusouti.com

应改为“catch(char*s)”。 (2)应改为“cateh(inti)”。 (3)应改为“catch(…)”。 【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,

题目

应改为“catch(char*s)”。 (2)应改为“cateh(inti)”。 (3)应改为“catch(…)”。 【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。


相似考题
参考答案和解析
正确答案:
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。
程序异常,输出信息为
error
O
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h)
intmain
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<<s<<endl;
}
try
{
throw((int)0);
}
//********error********
catch
{
cout<<i<<endl;
}
try
{
throw(O);
throw("error");
}
//********error********
catch
{
cout<<"ERROR"<<endl;
}
return0;
}
更多“应改为“catch(char*s)”。 (2)应改为“cateh(inti)”。 (3)应改为“catch(…)”。 【解析】本题中第1 ”相关问题
  • 第1题:

    ( 27 )为计算 1+3+5+ …… +99 的值,某人编程如下

    k=1

    s=0

    While k<=99

    k=k+2 : s=s+k

    Wend

    Print s

    在调试时发现运行结果有错误,需要修改。下列错误原因和修改方案中正确的是( )

    A ) While … Wend 循环语句错误,应改为 For k=1 To 99 … Next k

    B ) 循环条件错误,应改为 Whlie k<99

    C ) 循环前的赋值语句 k=1 错误,应改为 k=0

    D ) 循环中两条赋值语句的顺序错误,应改为 s=s+k : k=k+2


    正确答案:D

  • 第2题:

    下列域名书写正确的是( )。

    A._cateh.gov.cn

    B.catch.gov.cn

    C.catch,edu,cn

    D.catch..gov,cnl


    正确答案:B
    解析:域名的结构是:主机名……第二级域名.第一级域名,在域名中只能以字母字符开头,以字母字符或数字符结尾,各子域名之间只能以圆点分开。故正确答案为B。

  • 第3题:

    下列程序的输出结果是( )。 Public class Test{ Public static void main(String[]args){ int[]array=(2,4,6,8,10); int size=6; int result=-l: try{ for(int i=0;i<sizeresult= =-1:) if(array[i]= =20)result=i: } catch(ArithmeticException e){ System.out.println("Catch---1"); } catch(ArraylndexOutOfBoundsException e){ System.out.println("Catch---2"): } catch(Exception e){ System.out.println("Catch---3"): } }

    A.Catch---1

    B.Catch---2

    C.Catch---3

    D.以上都不对


    正确答案:B
    B。【解析】本题考查了数组及for循环。本题数组定义的值为5,下标从0~4。数组越界,所以答案为B。

  • 第4题:

    下面程序的输出结果是 public class Test{ public static void main(String[] args){ int[]array={2,4,6,8,10}; int size=6; int result=-1: try{ for(int i=0;i<size&&result==-1;i++) if(array[i]==20)result=i; }catch(ArithmeticException e){ System.out.println("Catch---1"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("Catch---2"); }catch(Exception e){ System.out.println("Catch---3"); } } }

    A.Catch---1

    B.Catch一--2

    C.Catch---3

    D.以下都不对


    正确答案:B
    解析:ArithmeticException是当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,是抛出此类的一个实例;ArrayIndexOutOfBoundsException是用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。本程序中,数组大小为5个元素,数组下标为0~4,而循环为0~5,数组越界,所以会捕获ArrayIndexOutOfBoundsException。

  • 第5题:

    以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s>;1000为止。

    程序运行后,不能得到正确结果,以下修改方案正确的是( )。

    A.把while(s>lOOO);改为while(s<=1000);

    B.把s=1;改为s=0;

    C.把n=1;改为n=0;

    D.把n=n+1;改为n=n$n;


    正确答案:A
    题目中程序不能实现预期功能是因为while的循环条件错误,在选项B中,把s=1,改为s=0,最终的结果s=4,与题目原意不同;在选项C中,把n=1;改为n=0;最终的结果s=2,与题目原意不同;在选项D中,把n=n+1;改为n=11s13;最终的结果s=2,与题目原意不同;选项A,正确的修改了while循环条件,可以得到正确结果。故答案为A选项。