使用VC6打开考生文件夹下的源程序文件modi 1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: sizeof(strl)=5 sizeof(str2)=10 sizeof(str3)=l

admin2019-07-10  29

问题 使用VC6打开考生文件夹下的源程序文件modi 1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:
    sizeof(strl)=5
    sizeof(str2)=10
    sizeof(str3)=l
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
    (1)不能删除assert()语句;
    (2)只能修改后面的数字。
    提示:assert()函数如果为假,则会产生一个中断异常。
    1    #include
    2    #include
    3    void main()
    4    {
    5    char*strl=”abc”;
    6    //********error********
    7    assert(sizeof(strl)==3);
    8    cout<<"sizeof(strl)  =  5"<    9    char str2[10]="ab";
    10    //********error********
    11    assert(si zeof(str2)==2);
    12    cout<<"sizeof(str2)=10"<    13    char str3=23 ;
    14    //********error********
    15    assert(sizeof(str3)==4);
    16    cout<<"si zeof(str3)=1"<    17    return;
    18    }

选项

答案(1)assert(Si zeof(strl)==4); (2)assert(Sizeof(str2)==10); (3)assert(Sizeof(str3)==1);

解析 本题的功能是利用assert()函数,则会产生一个中断异常。从已定源程序的main主函数开始入手,依次执行程序中的语句,输出题目中要求的输出值。本题在调试的时候并不会产生错误,它的错误是逻辑错误。
    [解题思路]
    (1)assert()函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert()函数就要为真,才不会产生中断异常。“assert(sizeof(strl)==3);”语句中“sizeof(strl)==3”为假,这个会使程序产生异常,不能正常执行。凶为strl的值为abc但是它还有一个尾符,所以它的长度应该是4,而不是3,所以第1个标识下修改为“assert(sizeof(str 1)==4);”。
    (2)同(1),str2[10]说明,str2的空间为10,第2个标识下修改为“assert(sizeof(str2)--lO);”。
    (3)同(1),char str3=23;语句说明23是字符,占空间为l,所以修改为“assert(sizeof(str3)==1);”。
转载请注明原文地址:https://kaotiyun.com/show/LW8p777K
0

最新回复(0)