計算機二級C上機:程序改錯題

爲了使廣大考生在備戰計算機等級考試時,更快的掌握相應知識點,下面是小編搜索整理的計算機二級C上機:程序改錯題,供參考練習,預祝考生們考出自己理想的成績!

計算機二級C上機:程序改錯題

程序改錯題

使用VC++6.0打開考生文件夾下的`源程序文件1.cpp,該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結果爲

150

200

注意:錯誤的語句在//******error******的下面,修改該語句即可。

提示:定義Numl爲一個整型數據位長的變量。

試題程序:

#include

//******error******

struct

{

//******error******

intNuml:1;

intNum2;

}

MyStruct;

voidmain()

{

MyStructmstr;

mstr.Num1=150;

mstr.Num2=15;

//******error******

int*ptr=&mstr.Numl;

cout<<*ptr<<endl;

*ptr=200;

cout<<*ptr<<endl;

}

答案:

(1)“typedefstruct”。

(2)“intNuml:32;”或“intNuml;”。

(3)“int*ptr=(int*)&mstr;”。

【解析】第1處是定義結構體,結構體定義的一般形式爲

struct(結構體名>

{

<成員列表>

}

(變量名列表);

程序當中定義結構體名放在後面,MyStruct爲結構體變量類型,相當於typedef爲已有的類型定義一個新的類型,第1處應改爲“typedefstruct”。第2處是定義Numl爲一個整型數據變量,整型數據位數爲32(4字節),因此第2處應改成“intNuml:32;”或“intNuml;”。ptr爲整型數據指針,mstr爲MyStruct類型結構變量,兩者類型不一致應該做強制類型轉換,第3處應改成“int*ptr=(int*)&mstr;”,表示將mstr的地址給ptr,ptr指向MyStruct的第一個域Numl,Numl也是整型,類型一致,故可通過ptr指針來改變Numl的值。