1、二级 C+模拟 494及答案解析(总分:176.50,做题时间:90 分钟)一、选择题(总题数:40,分数:66.50)1.面向对象程序设计思想的主要特征中不包括_。(分数:2.50)A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性2.有如下程序: #includeiostream #includecstring using namespace std; class XCD char* a; int b; public: XCD(char* aa,int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char* Geta()ret
2、urn a; int Getb()return b; ; intmain() char*p1=“abcd“,*p2=“weirong“; int d1=6,d2=8; XCD x(p1,d1),y(p2,d2); coutstrlen(x.Geta()+y.Getb()endl; return 0; 运行时的输出结果是_。(分数:2.00)A.12B.16C.14D.113.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示(分数:1.00)A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向4.算法的有穷性是指_。(分数:1.00)A.算法程序的运行时间是
3、有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用5.若变量已正确定义为 inL型,要通过语句“scanf(“%d,%d“,a,b,c);”给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是( 代表一个空格符)_。 A 1,2,3回车 B1 2 3回车 C1, 2, (分数:2.50)A.B.C.D.6.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:1.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序7.下列有关运算符重载的叙述中,正确的是_。(分数:1.00)A.运算符
4、重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性8.当使用 fstram流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为(分数:2.00)A.ios:inB.ios:outC.ios:int | ios:outD.没有9.以下程序的正确运行结果是 _ 。 #includeiostream.h int f(int); void main() int a=2,i; for(i=0;i3;i+)coutf(a)“ “; coutendl; int f(int a) int b=0 static i
5、nt c=3; b+:c+; return(a+b+c); (分数:1.00)A.777B.7 10 13C.79 11D.7 8 910.下列关于析构函数的描述中,错误的是_。(分数:2.50)A.析构函数可以重载B.析构函数由系统自动调用C.每个对象的析构函数只被调用一次D.每个类都有析构函数11.下列关于 C+预定义流对象的叙述中,正确的是_。(分数:1.00)A.cin是 C+预定义的标准输入流对象B.cin是 C+预定义的标准输入流类C.cout是 C+预定义的标准输入流对象D.cout是 C+预定义的标准输入流类12.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为 _ 。(
6、分数:1.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,413.若为 Fraction类重载前增 1运算符+,应在类体中将其声明为_。(分数:2.00)A.FractionB.FractionC.friend FractionD.friend Fraction14.通过运算符重载,可以改变运算符原有的_。(分数:1.00)A.操作数类型B.操作数个数C.优先级D.结合性15.下列叙述中正确的是 _ 。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数
7、据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率16.下列数据结构中,能够按照“先进后出”原则存取数据的是_。(分数:2.50)A.循环队列B栈C.队列D.二叉树17.有如下程序: #includeiostream using namespace std; class Basel public: Basel(int d) coutd; Base1() ; class Base2 public: Base2(int d) coutd; Base2() ; class Derived:public Base1,Base2 public: Derived(int
8、a,int b,int c,int d); Base1(b),Base2(a),b1(d),b2(c) Private: int b1; int b2; ; int main() Derived d(1,2,3,4); return 0; 运行时的输出结果是_。(分数:2.00)A.1234B.2134C.12D.2118.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private19.在软件开发中,需求分析阶段可以使用的工具是_。(分数:1.00)A.N-S图B.DFD图C.PAD图D.程序流程图20.有如下程序: #
9、include iostream.h #include iomanip.h using namespace std; class CSum int x,y; public: CSum (int x0,int y0):x(x0),y(y0) friend ostream return os; ; int main () CSum y(3,5); coutsetfill(“*“)8; couty; return 0; 执行上面程序的输出是(分数:2.00)A.88B.*88C.*8*8D.8*821.若 MyClass为一个类,执行“MyClass a4, *p5;”语句时会自动调用该类的构造函数
10、的次数是_。(分数:2.50)A.2B.5C.4D.922.有三个关系 R、S 和 T如下: R A B C a 1 2 b 2 1 c 3 1 S A B C a 1 2 b 2 1 T A B C c 3 1 则由关系 R和 S得到关系 T的操作是_。(分数:1.00)A.自然连接B差C交D并23.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10,y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结
11、果是_。(分数:2.00)A.22B.23C.24D.2524.有以下程序: #include iostream using namespace std; int main() int num23,*p; int t,i,j,k=10; p=num0; for(i=0;i2;i+) for(j=0;j3;j+) k+; *p=k; for(t=2;t*p;t+) if(!(*pt) j-; *p-; break; *p+; cout*(p-1)end1; return 0; 程序运行后的输出结果是 _ 。(分数:1.00)A.19B.11C.29D.2325.有如下程序: #includeio
12、stream using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book:private Media public: void Print() coutpageendl; void Show()Media:Show();) / ; int main() Book Bible; Bible.Name(); / Bible.Print(); / Bible.Show(); / return 0; 编译时有错误的是_。(分数:2.00)A.语句B.语句C.语句
13、D.语句26.下列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:1.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数27.下列语句中,与语句“n=(ab?(bc?1:0):0);”的功能等价的是_。(分数:2.00)A.if(a=b)n=0;B.if(ab)|(bc)n=1;else n=0;C.if(ab)if(bc)n=1;else n=0;else n=0;D.if(ab)n=1;e
14、lse if(b=c)n=1;else if(bc)n=1;else n=0;28.执行语句 for(i=1;i+4;);,后变量 i的值是(分数:1.00)A.3B.4C.5D.不定29.有下列二叉树,对此二叉树前序遍历的结果为 _ 。 (分数:2.00)A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI30.若需要向一个二进制文件尾部添加数据,则该文件的打开方式为_。(分数:2.50)A.ios_base:appB.ios_base:binary|ios_base:outC.ios_base:outD.ios_base:binary|ios_base:
15、app31.执行语句:coutsetfill(“*“)setw(10)setfill(“#“)left123“OK“endl;return 0;后将输出_。(分数:2.50)A.123*OKB.123#OKC.123*OK*D.123#OK#32.已知语句 int m=10;则下列引用的表示中正确的是(分数:2.00)A.intB.intC.intD.float33.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private34.有如下程序 #includeiostream using namespace std; cl
16、ass Base protected: Base()cout“A“; Base(char C)coutc; ; class Derived:public Base public: Derived(char C)coutc; ; int main() Derived d1(“B“); return 0; 执行这个程序屏幕上将显示输出_。(分数:2.00)ABB.BAC.ABD.BB35.下面属于黑盒测试方法的是_。(分数:2.50)A.基本路径测试B.等价类划分C.判定覆盖测试D.语句覆盖测试36.数据库设计中反映用户对数据要求的模式是_。(分数:1.00)A.内模式B.概念模式C.外模式D.设
17、计模式37.若有以下程序: #include iostream using namespace std; class Base private: int a,b; public: Base(int x, int y) a=x; b=y; void show() couta“, “bend1; ; class Derive : public Base private: int c, d; public: Derive(int x, int y, int z,int m):Base(x,y) c=z; d=m; void show() coutc“, “dend1; ; int main ( )
18、Base b(50,50) ,*pb; Derive d(10,20,30,40); pb= pb-show ); return 0; (分数:1.00)A.10,20B.30,40C.20,30D.50,5038.通常的拷贝初始化构造函数的参数是 _ 。(分数:1.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名39.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C+中可以重载所有的运算符40.下面是
19、类 Shape的定义: class Shape public: virtual void Draw()=0; ; 下列关于 Shape类的描述中,正确的是_。(分数:2.50)A.类 Shape是虚基类B.类 Shape是抽象类C.类 Shape中的 Draw函数声明有误D.语句“Shape s;”能够建立 Shape的一个对象 s二、基本操作题(总题数:1,分数:40.00)41.请使用菜单命令或直接使用 VC6打开 下的工程 proj1,其中有“MP3 播放器”类 MP3Player和主函数main的定义。程序中位于每个/ERROR *found*下的语句行有错误,请加以更正。更正后程序的
20、输出应该是: 天籁-1 黑色 注意:只能修改每个/ERROR *found*下的那一行,不要改动程序中的其他内容。 #includeiostream #includeiostream using namespace std; class MP3Player /“MP3播放器”类 char*type;/型号 char*color;/颜色 public: /ERROR *found* MP3Player(const char*ty=NULL, const char*co) /ERROR *found* if(ty=NULL) type=NULL; else type=new eharstden(t
21、y)+1; strcpy(type, ty); if(co=NULL) color=NULL; else color=new charstrlen(co)+1; strcpy(color, co); MP3Player() if(type) deletetype; /ERROR *found* if(color) delete color; const char *getType()const return type; const char *getColor()const return color; ; int main() MP3Piayer myplayer(“天籁-1”, “黑色”);
22、 coutmyplayer.getType()endl; coutmyplayer.getColor()endl; return 0; (分数:40.00)_三、简单应用题(总题数:1,分数:30.00)42.使用 VC+6.0打开 下的源程序文件 2.cpp。请完成以下两个函数。 (1)funl(int n)求出 n的阶乘,必须使用递归调用。 (2)fun2(int n)求出 n的阶乘,不能使用递归调用。如果 n小于 1则返回 0。 注意:不能修改函数的其他部分。 试题程序: #includeiostream.h /必须使用递归 int funl(int n) /不能使用递归 int fun
23、2(int n) void main() int i; cout“请输入一个整数:“endl; cini; cout“输入数字的阶乘是:“funl(i)endl; cout“输入数字的阶乘是:“fun2(i)endl; return; (分数:30.00)_四、综合应用题(总题数:1,分数:40.00)43.请使用 VC6或使用【答题】菜单打开 proj3 下的工程文件 proj3,此工程中包含一个源程序文件proj3.cpp,补充编制 C+程序 proj3.cpp,其功能是读取文本文件 in.dat中的全部内容,将文本存放到 doc类的对象 myDoc中。然后将 myDoc中的字符序列反转,
24、并输出到文件 out.dat中。文件 in.dat的长度不大于 1000字节。 要求: 补充编制的内容写在“/ *333*”与“/ *66666*”两行之间。实现将 myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。 注意:程序最后已将结果输出到文件 out.dat中,输出函数 writeToFile已经给出并且调用。 / proj3.cpp #include iostream #include fstream #include cstring using namespace std; class doc private: char * str; /文本字符串首
25、地址 int length; /文本字符个数 public: /构造函数,读取文件内容,用于初始化新对象,filename 是文件名字符串首地址 doc(char * filename); void reverse(); /将字符序列反转 doc(); void writeToFile (char * filename); ; doc:doc(char * filename) if stream myFile (filename); int len = 1001, tmp; str = new charlen; length = 0; while (tmp = myFile.get()!=EO
26、F) strlength + = tmp; strlength = “/0“; myFile.close(); void doc:reverse() /将数组 str中的 length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个 /字符交换 / *333* / *666* doc:doc() delete str; void doc:writeToFile (char * filename) ofstream outFile(filename); outFile str; outFile.close(); void main() doc myDoc(“in.dat“); my
27、Doc.reverse(); myDoc.writeToFile(“out.dat“); (分数:40.00)_二级 C+模拟 494答案解析(总分:176.50,做题时间:90 分钟)一、选择题(总题数:40,分数:66.50)1.面向对象程序设计思想的主要特征中不包括_。(分数:2.50)A.继承性B.功能分解,逐步求精 C.封装性和信息隐藏D.多态性解析:2.有如下程序: #includeiostream #includecstring using namespace std; class XCD char* a; int b; public: XCD(char* aa,int bb)
28、a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char* Geta()return a; int Getb()return b; ; intmain() char*p1=“abcd“,*p2=“weirong“; int d1=6,d2=8; XCD x(p1,d1),y(p2,d2); coutstrlen(x.Geta()+y.Getb()endl; return 0; 运行时的输出结果是_。(分数:2.00)A.12 B.16C.14D.11解析:解析 由类 XCD的定义可知,成员函数 Geta()返回的是字符串的长度,Getb()返回的是参数
29、b的值。在主函数中 strlen(x.Geta()的值等于 4,y.Getb()的值等于 8,所以输出两者的和为 12。3.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示(分数:1.00)A.模块之间的调用关系 B.程序的组成成分C.控制程序的执行顺序D.数据的流向解析:解析 让考生对常用的软件结构设计工具要有较深入的了解。 【解题要点】常用的软件结构设计工具是结构图(SC-Structure Chart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。 【考点链接】根据结构图
30、设计思想,了解结构图构成的基本形式。4.算法的有穷性是指_。(分数:1.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。5.若变量已正确定义为 inL型,要通过语句“scanf(“%d,%d“,a,b,c);”给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是( 代表一个空格符)_。 A 1,2,3回车 B1 2 3回车 C1, 2, (分数:2.50)A.B. C.D.解析:解析
31、本题考查 scanf函数的用法,其调用格式为: scanf(格式字符串,输入项地址表); 功能是按格式字符串中规定的格式,在键盘上输入各输入项的数据,并依次赋给各输入项。 当需要从键盘上输入数据时,直到按下回车键,scanf 函数才会接受从键盘输入的数据。选项 B中,每一个变量输入后都有一个空格是不正确的。6.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:1.00)A.编译程序B.操作系统C.教务管理系统 D.汇编程序解析:解析 编译软件、操作系统、汇编程序都属于系统软件,只有 C教务管理系统才是应用软件。7.下列有关运算符重载的叙述中,正确的
32、是_。(分数:1.00)A.运算符重载是多态性的一种表现 B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性解析:解析 重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。8.当使用 fstram流类定义一个流对象并打开一个磁盘文
33、件时,文件的隐含打开方式为(分数:2.00)A.ios:inB.ios:outC.ios:int | ios:outD.没有 解析:解析 C+中没在规定文件打开时的隐含打开方式,因此考生在写程序是必须指定打开方式,否则将出现错误。9.以下程序的正确运行结果是 _ 。 #includeiostream.h int f(int); void main() int a=2,i; for(i=0;i3;i+)coutf(a)“ “; coutendl; int f(int a) int b=0 static int c=3; b+:c+; return(a+b+c); (分数:1.00)A.777B.
34、7 10 13C.79 11D.7 8 9 解析:10.下列关于析构函数的描述中,错误的是_。(分数:2.50)A.析构函数可以重载B.析构函数由系统自动调用C.每个对象的析构函数只被调用一次D.每个类都有析构函数 解析:解析 本题考查的知识点是析构函数。析构函数的功能是用来释放一个对象,在对象删除前,用它来做一些清理工作。 (1)析构函数是特殊的成员函数,函数体可以写存类体内,也可写在类体外。该函数的名字为求反符号“”后面跟着类名,该函数不能指定返回类型,不能有参数,也不能重载。 (2)一个类只能定义一个析构函数。 (3)析构函数在对象生命周期结束时被系统直接调用,程序中一般不调用析构函数。
35、 (4)运算符 delete与析构函数一起使用。11.下列关于 C+预定义流对象的叙述中,正确的是_。(分数:1.00)A.cin是 C+预定义的标准输入流对象 B.cin是 C+预定义的标准输入流类C.cout是 C+预定义的标准输入流对象D.cout是 C+预定义的标准输入流类解析:解析 cin 是 C+预定义的标准输入流对象,cout 是 C+预定义的标准输出流对象。12.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为 _ 。(分数:1.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4 D.3,2,1,4解析:解析 队列是指允许在一端进行插入,而在另一端进行删除的线性
36、表。因此队列又称为先进先出的线性表。答案为 C。13.若为 Fraction类重载前增 1运算符+,应在类体中将其声明为_。(分数:2.00)A.Fraction B.FractionC.friend FractionD.friend Fraction解析:解析 在类 Fraction中重载前增 1运算符+时,其声明形式为 Fraction 。14.通过运算符重载,可以改变运算符原有的_。(分数:1.00)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析 重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5个;重载不
37、能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。15.下列叙述中正确的是 _ 。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以
38、根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,共处理的效率是不同的。16.下列数据结构中,能够按照“先进后出”原则存取数据的是_。(分数:2.50)A.循环队列B栈 C.队列D.二叉树解析:解析 在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。17.有如下程序: #includeiostream using namespace std; class Basel pu
39、blic: Basel(int d) coutd; Base1() ; class Base2 public: Base2(int d) coutd; Base2() ; class Derived:public Base1,Base2 public: Derived(int a,int b,int c,int d); Base1(b),Base2(a),b1(d),b2(c) Private: int b1; int b2; ; int main() Derived d(1,2,3,4); return 0; 运行时的输出结果是_。(分数:2.00)A.1234B.2134C.12D.21
40、解析:解析 程序在创建派生类对象 d时,分别调用基类 Base1和 Base1的构造函数。18.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3种:public(公用)、protected(保护)、private(私有)。19.在软件开发中,需求分析阶段可以使用的工具是_。(分数:1.00)A.N-S图B.DFD图 C.PAD图D.程序流程图解析:解析 在需求分析阶段可以使用的工具有数据流图 DFD图,数据字典 DD,判定树与判定表,所以选择 B。20.有如下程序: #inc
41、lude iostream.h #include iomanip.h using namespace std; class CSum int x,y; public: CSum (int x0,int y0):x(x0),y(y0) friend ostream return os; ; int main () CSum y(3,5); coutsetfill(“*“)8; couty; return 0; 执行上面程序的输出是(分数:2.00)A.88B.*88C.*8*8D.8*8 解析:解析 本题考核知识点包括:类与对象、运算重载、I/O 的格式化输出。语句 “coutsetfill(“
42、*“)8;“输出 8。语句“couty;“将调用运算符重载输出*8,因为前面语句中设置的填充符号现在还有效,而数据“8“的宽度不够 5,所以剩下 4个字符的宽度用填充符号“*“填充。21.若 MyClass为一个类,执行“MyClass a4, *p5;”语句时会自动调用该类的构造函数的次数是_。(分数:2.50)A.2B.5C.4 D.9解析:解析 在定义数组对象时,因为数组长度为 4,因此要 4次调用构造函数。在定义指向对象的指针时,由于指针没有实例化,故不调用构造函数。因此 C项是正确的。22.有三个关系 R、S 和 T如下: R A B C a 1 2 b 2 1 c 3 1 S A
43、B C a 1 2 b 2 1 T A B C c 3 1 则由关系 R和 S得到关系 T的操作是_。(分数:1.00)A.自然连接B差 C交D并解析:解析 关系 T中的元组是 R关系中有而 S关系中没有的元组的集合,所以进行的是差的运算。23.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10,y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数:2.00)A.22B.23 C.24D.2
44、5解析:24.有以下程序: #include iostream using namespace std; int main() int num23,*p; int t,i,j,k=10; p=num0; for(i=0;i2;i+) for(j=0;j3;j+) k+; *p=k; for(t=2;t*p;t+) if(!(*pt) j-; *p-; break; *p+; cout*(p-1)end1; return 0; 程序运行后的输出结果是 _ 。(分数:1.00)A.19B.11C.29 D.23解析:解析 本题考核数组与指针的关系。程序首先初始化指针 p,让其指向二维数组 num
45、的首元素,即 num00。程序中,第 1个 for循环是为二维数组的每行元素赋值而设置的循环,第 2个 for循环是为二维数组的每列元素赋值而设定的,第 3个 for循环是为判断数组元素是否是素数而设置的。在第 3个 for循环中,如果*p 的值能被小于它的数整除(即不是素数),则执行“j-;*p-;”,然后跳出第 3个 for循环。j-的含义是让其前面的赋值语句重新赋值,而*p-的含义是使指针指向前一个单元。语句“*p+;”将指针移到下一个单元,在下一次循环时,k 加 1,并 k赋给*p,看*p 是否为素数,这样一直到满足条件为止,即数组 num23中的数都为素数。最后数组 num中各元素的值分别为大于 10的素数