使用VC6打开考生文件夹下的工程test31_1,此工程包含一个源程序文件test31_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: max(1,2)=2 max(1,4)=4 源程序文件test31_1.c

admin2010-02-08  37

问题 使用VC6打开考生文件夹下的工程test31_1,此工程包含一个源程序文件test31_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
   max(1,2)=2
   max(1,4)=4
   源程序文件test31_1.cpp清单如下:
       #include <iostream.h>
       /*****************  found  *****************/
       template class T
       T GetMax (T a, T b)
       {
        T result;
        result =  (a>b)?a:b;
        return result;
       }
       void main()
       {
        int i=1, j=2;
        double k=4;
        cout<<"max("<<i<<","<<j<<")="<<GetMax(i,j)<<end1;
        /*****************  found  *****************/
        cout<<"max("<<i<<","<<k<<")="<<GetMax(i,k)<<end1;
        /*****************  found *****************/
        return 0;
       }

选项

答案(1) 错误:template class T 正确:template<class T> (2) 错误:cout<<"max("<<i<<","<<k<<")="<<GetMax(i,k)<<end1; 正确:cout<<"max("<<i<<","<<k<<")="<<GetMax<double>(i,k)<<end1; (3) 错误:return 0; 正确:应将"return 0;”删除

解析 (1)函数模板的格式是template<模板形参表声明>函数声明,所以class T应该由“<>”括起来;
(2)变量i为int型,而变量k为double型,编译系统找不到相应的函数,所以需要显式的给出模板实参,强制生成对特定实例的调用;
(3)由void main()可看出main函数不需要返回值,所以必须把“return 0;”删除。
转载请注明原文地址:https://jikaoti.com/ti/RMkiFFFM
0

最新回复(0)