使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: i=5 i=10 i=15 i=20 注意:错误的语句在//********error*****

admin2015-05-30  30

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
    i=5
    i=10
    i=15
    i=20
    注意:错误的语句在//********error********的下面,修改该语句即可。
    1    #include
    2    clasS CMyClasS
    3    {
    4   publiC:
    5   template
    6    void func(T x,T y)
    7    {
    8   /********error********/
    9   T i=0;
    10    if(x>=i)
    11    {
    12    i=i+x;
    13    }
    14    else
    15    {
    16    i=i+y,
    17    }
    18    cout<<"i="<    19    }
    20    };
    21    void main()
    22    {
    23    CMyClass t;
    24     t.func(5,0);
    25    /********error********/
    26    t.func(68,(char)1);
    27    float i=10.0;
    28    /********error********/
    29    t.func(i,1);
    30    t.func(5,5);
    31  }

选项

答案(1)static T i=0; (2)t.func((char)6 8,(char)1); (3)t.func((int)i,1);

解析 程序当中定义了类CMyClass,含有一个成员函数模板func(T x,T y),在函数内定义一个变量i,如果参数X大于i,则i和X的和赋值给i,否则i和y的和赋值给i。
    [解题思路]
(1)在主函数内定义了类CMyClass对象t,第一次调用func0函数传入整型参数5和0,此时T表示整型(int),5>0,此时i和X的和为5,故屏幕输出i的值为i=5;第二次调用func0函数,传入参数为char型数据,此时T表示字符型(char),char i=0,68>0,故i为68,屏幕输出ASCII码为68的字符,即i=D;第三次调用func()函数,传入整型数据10和l,此时T表示整型(int),输出为i=15,显然如果i为一般的局部变量,输出应该是i=10(10>0,i=10+0=10),这里i记忆了第一次调用funcO函数后的值(i=5,10>5,10+5=15),故i为静态变量,因此第1个标识下应改为“staticT i=0:”。
(2)func()函数两个参数类型一致,从输出结果看,第二次调用func()传入的参数均是char型的,故第2个标识下应改为“t.func((char)68,(char)1);”,(char)68和(char)1含义是做强制类型转换,将整型转换成char型。
(3)第3个标识下传入参数l为整型,局部变量i为float型,由输出结果可知,第四次调用func0函数也改变了静态变量i(static int i)的值,故传入的参数均为整型,因第3个标识下的局部变量i(float型)也要强制类型转换,故第3个标识下应改为“t.func((int)i,1);”。
转载请注明原文地址:https://kaotiyun.com/show/SPNp777K
0

最新回复(0)