使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并 使程序输出的结果为 sizeof(s1)=5 sizeof(s2)=10 sizeof(s3)=1 注意:不要改动main函数

admin2020-10-21  27

问题 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并
使程序输出的结果为
  sizeof(s1)=5
  sizeof(s2)=10
  sizeof(s3)=1
  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
    (1)不能删除assert()语句。
    (2)只能修改后面的数字。
    提示:assert函数如果为假,则会产生一个中断异常。
试题程序:
#include
#include
void main()
{
char*s1="abe";
//******error******
assert(sizeof(s1)==3);
cout<<"sizeof(s1)=5"<char s2[10]="ab":
//******error******
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<char s3=23;
//******error******
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<return;
}

选项

答案(1)应改为“assert(sizeof(s1)==4);”。 (2)应改为“assert(sizeof(s2)==10);”。 (3)应改为“assert(sizeof(s3)==1);”。

解析 assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。char str3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。
转载请注明原文地址:https://kaotiyun.com/show/Dfyp777K
0

最新回复(0)