VC++总复习题带答案

更新时间:2024-04-24 15:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

复习题

一、单选题

1、以下选项中不能用做用户自定义标识符的是( )。C

A. length_ B. _length C. length.d D. For 2、以下选项中能用做用户自定义标识符的是( )。C

A. void B. if-else C. Name D. a+bc 3、下列字符串中,正确的C++标识符是( )。D

A. too-B B. 2b C. new D. _256 4、以下选项中不能用做变量名的是( )。A

A. for B. _length C. length D. Else 5、下列不正确的int型常数是( )。C

A. 32450 B. 0 C. 0387 D. 0xA1L 6、以下选项中不合法的常量是( )。B

A. ‘a’ B. 058 C. “a\\0b” D. 12L 7、下列的常量定义中,错误的是( )。A

A. const double dl; B. const char c=67; C. const int i=250; D. const long ld=0x326;

8、整型变量a、b的值分别为3和4,执行语句“a=a && b++ ;”后,a和b的值分别是( )。B A. 3 4 B. 1 5 C. 1 4 D. 0 5 9、设有变量说明: int a=3,b=4,c=5; 下列表达式中,值为0的表达式是( )。D

A. ‘a’&&‘b’ B. a<=b C. a | | b+c&&b–c D. !(cb&&c

C. a>b||c’z’ 11、设有变量说明:“short int a=0,b=0;”,则表达式sizeof('a'+'b')的值为( )。C A. 1 B. 2 C. 4 D. 8 12、表示关系x<=y<=z的C++语言表达式为( )。A

A. (x<=y)&&(y<=z) B. (x<=y)AND(y<=z) C. (x<=y<=z) D. (x<=y)&(y<=z) 13、以下双目运算符中要求两个操作数均为整型的运算符是( )。D

A.|| B.&& C./ D %

14、设有定义int a;float f;double i;则表达式10+'a'+i*f值的数据类型是( )。C A. int B. float C. double D. 不确定 15、以下if语句的表达不正确的是( )。 A

A. if(a

cout

A. a大于b B. a小于b C. 1 D. 输出语句有错 17、以下程序段

if(x--<10) cout<

A. 11 B. 10 C. 9 D. 8 18、下列关于语句 for(e1;e2;e3) s1; 描述中不正确的是( )。B

A. 存在\的情况 B. 表达式e1和e3可为空,但e2不能为空 C. 表达式e3的值可增可减 D. 循环体s1可以为空,但分号(;)必须有 19、执行语句序列: int i=0;

while (i<25) i+=3; cout<

输出结果是( )。C

A. 24 B. 25 C. 27 D. 28 20、设有语句“for(int s=1,i=2;i<6;i++) s*=i/2;”,执行后s的值为( )。B A. 7 B. 4 C. 48 D. 96 21、设有语句“for(int s=1,i=2;i<=6;i++)s*=i/2 ;”,执行完该语句后,s的值为( )。B A. 1 B. 12 C. 22 D.24 22、下列do-while循环的循环次数为( )。D int i=5;

do{cout<

} while(i!=0);

A. 0 B. 1 C. 5 D. 无限

23、设有语句:for(int s=0,i=0;!s&&i<=5;i++) ; 循环执行的次数为( )。A

A. 6 B. 5 C. 0 D. 无数次 24、设有语句:for(int s=0,i=1; i<=5; s+=i) ; i++ ; 循环执行的次数为( )。D

A. 6 B. 5 C. 0 D. 无数次 25、下列关于while和do ? while循环语句的叙述中正确的是( )。 A A. do?while 的循环体至少执行一次 B. while的循环体至少执行一次

C. do?while的循环体不能是复合语句 D. do?while 允许从循环体外跳转到循环体内 26、break语句只能用在( )。D

A. 开关语句中 B. 函数体中允许语句出现的任一位置 C. 循环语句中 D. 开关语句或循环语句中 27、对于switch(t),表达式t不能是( )表达式。D

A. 枚举型 B. 字符型 C. 整型 D. 浮点型 28、下列叙述正确的是( )。B

A. 一个include可以用于包含一个或多个文件 B. 编译预处理命令必须以#开始

C. 使用include包含的文件一定要以.h为后缀 D. 程序执行时,宏展开只作替换,而不含计算过程 29、设有函数原型说明:“void test(int a,int b=2,char *c=\”,下面的函数调用存在语法错误的是(A. test(3) B. test(3,8.2) C. test(6,\

30、考虑函数原型int f(char a,char *b=NULL,double c=0.0); 下面函数调用中,属于不合法调用的是( A. f(‘A’,4.5); B. f(99); C. f(‘A’,\123\

)。C 。A )31、在以下的函数原型说明语句中,存在语法错误的是( )。D

A. void f1(int a , int ); B. void f2(int , int ); C. void f3(int , int =5); D. int f4( int x ; int y ); 32、下列关于C++函数的叙述中,正确的是( )。C

A. 每个函数至少要具有一个参数 B. 每个函数都必须返回一个值 C. 函数在被调用之前必须先声明 D. 函数不能自己调用自己 33、以下叙述中,不正确的是( )。C

A.一个函数中可以有多个return语句 B.一个函数中可以没有return语句 C.一个return语句可返回多个值 D.一个return语句可不返回值 34、下列函数定义中,存在语法错误的是( )。D

A.void f5( ); f6( ){f5( ); cout<<200;} void f5( ){cout<<100;} B.void f3( ){cout<<100;} void f4( ){cout<<200; } C.void f7(int a) { if(a) f7(--a);cout<

A. 1和3是重载函数 B. 都是重载函数 C. 1和2是重载函数 D. 都不是重载函数 36、下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )合适。 B A. 重载函数 B. 内联函数 C. 递归调用 D. 嵌套调用 37、以下关于C++函数的描述中,正确的是( )。 C A. 内联函数就是定义在另一个函数体内部的函数 B. 函数体的最后一条语句必须是return语句

C. C++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明 D. 编译器会根据函数的返回值类型区分函数的不同重载形式

38、若有宏定义# define s(x) x*x-x,设int k=3; 问cout<

#define NUM(a,b) M*a+b int c=NUM(2,3)*NUM(4,5); 则变量c的值是( )。B

A. 47 B. 19 C. 48 D. 20 41、下列关于数组定义中错误的是( )。D

A. int a1[2]={1}; B. int a2[ ][2]={{1},{2}}; C. int a3[3]; D. int a4[ ][4];

42、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是( )。A

A. int vect[]={30,50,-88}; B. int vect[]={30,50,-88,0,0};

C. int vect[5]={30,50,-88}; D. int vect[5]={30,50,-88,0,0}; 43、有如下程序:

#include

void fun(int &x, int y) { int t=x; x=y; y=t; } int main()

{ int a[2]={23, 42} ; fun ( a[1], a[0] ) ;

cout<

执行后的输出结果是( )。B

A. 42,42 B. 23,23 C. 23,42 D. 42,23 44、在int b[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]值是( )。C A. 0 B. 5 C. 6 D. 2

45、若有int a[2][3],0≤i≤1,0≤j≤2,下列不能正确引用数组元素a[i][j]的表达式是( )。A A. *&a[i][j] B. *(a+i+j) C. *(a[i]+j) D. *(*(a+i)+j) 46、数组作为函数的形参时,把数组名作为实参,传递给函数的是( )。A A. 该数组的首地址 B. 该数组的元素个数 C. 该数组中的各元素值 D. 该数组的大小

47、若有char s1[]=”hello”; char s2[]={‘h’,’e’,’l’,’l’,’o’}; 则下面的描述正确的是(A. 字符串s1比字符串s2长 B. 字符串s2比字符串s1长 C. 字符串s1与字符串s2一样长 D. 以上都不对 48、下列定义不正确的是( )。A

A. char s[][4]={”abcd”,”efg”,”hij”,”klm”}; B. char a[]={”abcde”}; C. char *a=”abdee”;

D. char a[‘a’]=”fdfd”;

49、设有定义char s[10]= “good i”; char *p=“e\\0and ”; 执行cout< void main(void) { char line[100]; cin>>line;

cout<

A. T B. Thank C. Thank you very much! D. Thank you 51、设有说明语句:char a[ ] =”string!”, *p= a; 以下选项中正确的是( )。B A. sizeof(a)的值与strlen(a)的值相等 B. strlen(a)的值与strlen(p)的值相等

C. sizeof(a)的值与sizeof(p)的值相等 D. sizeof(a)的值与sizeof(*p)的值相等

52、char a[]={“a\\0bc”}; cout<)。A 。A )53、若有定义 struct student { int num;

char name[20]; } stu;

则下列语句正确的是( )。B

A. student.num=1 B. stu.num=2; C. cout<>stu; 54、使用共同体的目的是( )。C

A. 将某种类型数据的所有可能出现的选择作为一个整体,以便程序中使用。

B. 将一组相同数据类型的数据作为一个整体,以便于其中的成员共享同一存储空间。 C. 将一组数据作为一个整体,以便于其中的成员共享同一存储空间。

D. 将一组具有相同数据类型的数据作为一个整体,以便程序中使用。 55、执行以下语句序列后,则( )。B

enum{Red,Blue,Yellow} c1,c2;c1=Yellow; //A cout<

A. 输出 1 B. 输出 2 C. 输出 3 D. B行语法错 56、已知枚举类型定义语句为: enum Token{ NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是( )。D

A. 枚举常量MINUS的值为6 B. 枚举常量PRINT的值为10 C. 枚举常量NUMBER的值为1 D. 枚举常量NAME的值为1 57、类型相同的两个指针不能进行的运算是( )。A

A. + B. = C. -- D. ==

58、以下关于两个同类型指针变量的叙述中,在一定条件下,运算结果没有实际意义的是( )。 C A. 两个指针变量可以互相赋值 B. 两个指针变量进行比较运算

C. 两个指针变量进行加法运算 D. 两个指针变量进行减法运算 59、若有“char *p=\”,则以下选项中错误的是( )。D

A. char &a=*p; B. p=p+2; C. char *q=p+2; D. char *s=*p; 60、关于new运算符的下列描述中,( )是错误的。 A A. 使用它创建对象数组时必须指定初始值

B. 使用它创建的对象或对象数组可以使用运算符delete删除 C. 使用它创建对象时要调用构造函数 D. 它可以用来动态创建对象和对象数组

61、设有说明语句:int i=2 , *p=&i ; char s[20]=”Hello” , *q=s ; 以下选项中存在语法错误的是( )。A A. cin>>p; B. cout<>q; D. cout<

63、设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )。A A.10,12,12 B.10,11,12 C.11,11,12 D.11,12,12 64、下列关于类和对象的叙述中,错误的是( )。A

A. 一个类只能有一个对象 B. 对象是类的具体实例

C. 类是对某一类对象的抽象 D. 类和对象的关系是一种数据类型与变量的关系 65、有如下类声明:

class XA { int x;

public:

XA(int n) { x=n; } };

class XB: public XA { int y;

public:

XB(int a, int b); };

在构造函数XB的下列定义中,正确的是( )。B A. XB::XB(int a,int b): x(a),y(b) {} B. XB::XB(int a,int b): XA(a),y(b) {} C. XB::XB(int a,int b): x(a),XB(b) {} D. XB::XB(int a,int b): XA(a),XB(b) {} 66、下列类的定义正确的是( )。 D

A. class a { int x=0; int y=1; } B. class b { int x=0; int y=1; }; C. class c { int x; int y; } D. class d { int x; int y; }; 67、若有如下类定义,则下列关于输出结果叙述正确的是( )。 C class S {

int x; public:

S ( ) { x=0; }

S (int a) { x=++a; }

void show( ) { cout<<“x=”<

void main( ) {

S s1=100; s1.show( ); }

A. 有语法错 B. x=100 C. x=101 D. x=0 68、在C++中,结构体与类的唯一区别是( )。C

A. 结构体只能声明数据成员,而类能声明数据成员和成员函数 B. 结构体中不可以有虚函数,而类中可以有虚函数

C. 结构体中成员的默认访问权限是public,而类中的是private D. 结构体中不允许有析构函数,而类中可以有析构函数 69、下列叙述不正确的是( )。C A. 类的构造函数可以有多个

B. 类中没有参数的构造函数称为缺省构造函数 C. 类中缺省的构造函数可以有多个

D. 类中各参数均有缺省值的构造函数称为缺省构造函数 70、以下有关构造函数的叙述不正确的是( )。D

A. 构造函数名必须和类名一致 B. 构造函数在定义对象时自动执行 C. 构造函数无任何函数类型

D. 在一个类构造函数有且仅有一个

二、基本概念填空题

1、C++语言程序执行的入口是__main_____。 2、C++源文件扩展名为___.cpp_____。

3、执行以下语句段后,i的值为__-2_____。 int i=1, a=3, b=2;

i= (--a==b++) ? -a : ++b ;

4、执行以下语句段后,d的值是__0_____,c的值是___2____。 int a=3, b=4, c=2, d; d=ab;

5、设有定义int x,y; x=1.2; y=(1.2+3.8)/5.0; 则y的值为____1___。 6、执行语句:int a=5,b=6,c;c=!a&&b++; 后,变量b的值为___6_____。 7、设有语句:int a=5,b=4,c=2,m; 则表达式的值m=a>b!=c为__1_____。

8、 已知字母A的ASCII码为十进制数65,D为字符型变量,则D=’A’+’9’-‘4’的值为___‘F’____。 9、语句cout<<”ABC\\0EF”;的输出结果为__ABC_____。

10、执行语句cout<<\后,输出结果为__x86_____。

11、对于switch(t),表达式t只能是__字符型_____、__整型_____或枚举型表达式。 12、设有语句: int i=10,j=10; if ( j=0 ) i=i*i; else i=i+j;

执行以上语句后i的值为___10____。

13、continue语句只能出现在___循环____语句中。

14、在C++中,函数参数传递方式有三种,分别是传值传递、___地址____传递和___引用____传递。 15、设有函数调用f((e1,e2),(e3,e4,e5));则实参个数为_____2__个。

16、定义内联函数的方法是在函数的返回值类型前面加关键字___inline____。 17、对于无返回值的函数,必须以____void___作为类型修饰符。

18、函数中的形参和调用时的实参都是数组名时,传递方式为___传地址____。 19、静态字符型变量的缺省初值为___0____。

20、在缺省情况下,整型静态数据成员的初值为____0____。 21、C++中编译预处理包括:文件包含、___宏定义_____和条件编译。

22、若有宏定义# define s(x) x*x-x,设int k=3; 问cout<

int a[5]={25,14,27,18},*p=a; (*p)++;

则*p的值为__26_____,再执行语句:*p++; 则*p的值为___14____。

27、C++语言中数组元素的访问方式有两种,即:__通过下标访问和指针访问_____。

28、程序中使用new运算符动态分配的内存空间,必须用__delete_____来释放。

29、若有定义struct s{int x,y[2];}stru; union u{int a;char b;}un; 则在32位机系统下sizeof(stru)+sizeof(un)= __16_____B。

30、若有定义enum week{sun,mon,tue,wed,thu,fri,sat} day1=wed; 则语句cout<

32、若希望类中的成员只能被该类的成员函数及该类的派生类中的成员函数访问,则应加上访问权限___protected_____________。

33、类继承中,缺省的继承方式是__private______。 34、假定A为一个类,则语句A(A &x);是此类__拷贝______构造函数的原型说明。 35、class test{

public: static int x; } t1,t2; t1.x = 25;

程序运行到这里时,t2.x的值为___25____。

三、阅读程序题

1、执行以下程序时,程序的输出结果为 Thank 。 输入一行字符串为:Thank you very much! #include void main(void) { char line[100]; cin>>line;

cout<

2、下列程序的第一行输出为_____-9____,第二行输出为____-18____。 #include int a=0; void fun() { int a=10;

cout<<(::a-=--a)<<’\\n’; }

void main() { int a=10;

for(int cc=-10; cc<

3、下列程序的第一行输出为____2_____,第二行输出为___5_____。 #include void fun( )

{ static int a;

cout<<(a=2+a++)<

void main( )

{ int cc;

for (cc=0; cc<2; cc++ ) fun(); }

4、下列程序的输出结果是____3_____。 #include void main( )

{ int a[2][3], *p, i; p=&a[0][0];

for(i=0; i<6; i++) p[i]=i+1;

for(i=0; i<2; i++) *a[i]=p[i]+1; cout<

5、下列程序的第一行输出为__12_______,第二行输出为___28______。 #include void main( )

{ int a=10,y=0; do { a+=2; y+=a;

if(y>100) break;

else if (y>40) continue; cout<

6、下列程序的输出结果是__2回车4回车7回车11回车16回车______。 #include int fun(int *a,int n)

{ if(n==0||n==1) a[n]=2; else a[n]=n+fun(a,n-1); cout<

void main( )

{ int a[6]={1,2,3,4,5,6}; fun(a,5); }

7、下列程序输出的结果是___2 4 6_______。 #include int sbc(int a) { static k; a+=k++; return a;

}

void main()

{ cout<

8、下列程序输出的结果是____s=7______。 #include void main() { int s=0,k;

for (k=7;k>=0;k--) { switch (k) { case 1: case 4:

case 7:s++;break; case 2: case 3:

case 6:break; case 0:

case 5:s+=2;break; } }

cout<<\}

9、下列程序输出的结果是_4回车8回车12回车16回车_________。 #include double f1(double x) { return x+x; }

double f2(double (*f)(double x),int a) { int x; double sum=0;

for(x=a;x

void main(void) { double sum;

for(int i=1;i<5;i++) { sum=f2(f1,i); cout<

10、请写出以下程序的运行结果:__b=4_____________。

#include void main()

{ char a=’A’; int b=1;

switch (a++)

{ case ‘A’: b--; case ‘B’: b++; case ‘C’: b+=3; }

cout<< “b=”<

11、请写出以下程序运行后第一行、第三行、第五行的输出结果:______10 15 19_________。 #include void fun(int *p, int i) { cout<

void main(void)

{ int a[10]={10,2,5,14,15,8,11,8,19}; fun(a,0); }

12、请写出以下程序的运行结果:_______21回车53回车________。 #include int f(void)

{ static int a,b=10,c=1; a+=b; b+=c; return c=a+b; }

void main(void) { cout<

13、以下程序输出的结果是 10 。 #include void main(void)

{ int a[4][4]={{1,2,0,-1},{3,-2,-3,0},{4,0,-5,5},{-6, 0, 6,7}}; for(int i=0,s=0;i<4;i++) for(int j=0;j<4;j++){

if(a[i][j]<0)continue; if(a[i][j]==0)break; s+=a[i][j]; }

cout<

14、下列程序的第一行输出为___1______,第二行输出为_s=120________。 #include int f(int n) { int s=1;

if(n==1) s=1;

else { if(n==3) cout<

void main() { int s; s=f(5);

cout<<\}

15、下列程序输出的结果是__a________。 #include void main ()

{ struct student { int num;

char name[20]; };

student person[5]={1,”zhang”,2,”wang”}; cout<

16、假定输入4个字符“abcd”,写出下列程序运行的结果为____dcba_______。 #include void Fun(int a) { char ch; if(a<=1) { cin>>ch;

cout<>ch; Fun(a-1); cout<

void main( ) { Fun(4);

cout<<’\\n’; }

17、以下程序的执行结果是___130_____ 。 #include int m(int a);

int m(int a, int b); int c=5; void main( )

{ cout<

return c+=a; } int m(int a, int b) { int c=2;

return m(m(::c+=a+b+c)); }

四、完善程序题

1、下列程序的功能是计算1-3+5-7+??-99+101的值。请完善程序。 #include void main( )

{ for ( int i=1,t=1,s=0; i<=101; __i=i+2___(1)____) { s=s+t*i;

____(2)__t=-t___ }

cout<

2、输入一行字符串,统计其中单词个数,单词之间用一个或多个空格隔开。 #include #include void main() { char s[200]; int count,i,j;

cout<<\输入一行字符串:\\n\ ___(1)_cin.getline(s,200)__;

for(count=0,i=0,j=___(2)strlen(s)___;i

cout<<\输入的字符串为:\\n\

cout<<\字符串中包含的单词数为:\}

3、以下程序用筛选法求出2-300之间所有的素数。程序结果输出时,每行输出10个数。

算法说明:先将2,3,5,7,9,??,299放入数组num中。若num[i](i=0,1,2,??,148)不为0,则对数组中在num[i]之后的每一个元素num[j]进行处理;若该元素是num[i]的倍数,则该元素不是素数并将该元素置为0。最后数组中不为0的元素均是素数。 #include

void prime(___(1)int y[],int n___) {

for(int i=0;i

if(___(2)y[i]!=0___)

if(y[j]&&y[j]%y[i]==0) ___(3)y[j]=0___; }

void main(void)

{ int num[150],count=0; num[0]=2;

for(int i=1;i<150;i++)

num[i]=2*i+1; prime(num,150); for(i=0;i<150;i++)

if(num[i]) { count++;

cout<

if(___(4)count==0___) cout<<'\\n';} cout<<'\\n';

cout<<\求出的素数个数为:\}

4、下列函数str实现把b字符串连到a字符串尾部,并返回a中新字符串的长度。 #include int str(char *a,char *b) {

int num=0,n=0;

while (*(a+num)!=___(1)’\\0’____) num++; while (b[n]) {

*(a+num)=b[n]; num++;

____(2)_n++____; }

*(a+num)=____(3)_’\\0’___; return num; }

void main( ) {

char a[]=”ab”, b[]=”cd”; cout<

5、下列程序用于求数组a中最小的元素在数组中的位置并返回。 #include

int fun ( int a[ ],int n) {

int i,p;

____(1)p=0____; for(i=1;i

if (a[i]

void main( ) {

int a[ ]={41,23,45,7,89,10};

cout<

6、下列函数的功能是查找值与x相同的数组元素,若找到,返回元素下标;否则,返回-1。 #include #include int f(char a[],char x)

{ for(int i=0;___(1)_a[i]___&&___(2)a[i]==x____;i++); return ___(3)!a[i]______?-1:i; }

void main( )

{ char a[10]={“abcde”}; char c; cin>>c;

cout<

7、下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false,请在横线处填上适当内容,实现该函数。

bool fun(char *str) {

int i=0, j=0;

while (str[j]) ___(1)j++___;

for ( j--; i

五、改错题

[要求] 在改错时可以修改语句中的一部分内容,调用整语句的次序,增加少量的变量说明或编译处理命令,但不能增加其它语句,也不能删去整条语句。

在答题纸上写上语句注释中的标号,并将改正的语句写在后面。

1、输入一行字符串,统计其中单词个数,单词之间可用一个或多个空格隔开。 #include //1 #include //2 void main() //3 { char s[200]; //4 int count,i,j; //5 cout<<\输入一行字符串:\\n\

cin<

{ while(s[i]=' '&&i

cout<<\字符串中包含的单词数为:\} //15 修改后:

#include //1 #include //2 void main() //3 { char s[200]; //4 int count,i,j; //5 cout<<\输入一行字符串:\\n\

cin.getline(s,200); //7 for(count=0,j=strlen(s),i=0;i

cout<<\字符串中包含的单词数为:\}

2、找出一个二维数组中的所有鞍点。鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。采用的算法是,依次扫描每行元素,先找到该行元素的最大值,然后判断它是否为所在列的最小值。 #include //1

void find(int a[4][ ]) //2 改错:void find(int a[][4]) { int i,j,flag,max,maxj; //3 for(i=0;i<4;i++) //4 { max=a[i][0]; maxj=0; //5 for(j=1;j<4;j++) //6

if(a[i][j]>max) { max=a[i][j]; maxj=j;} //7 flag=1; //8

for(k=0;k<4;k++) //9改错:for(int k=0;k<4;k++)

if(a[k][maxj]>max) { flag=0; break;} //10改错:if(a[k][maxj]

cout<<\ } //13 } //14 void main() //15

{ int a[4][4]={{2,6,3,4},{5,6,5,5},{5,7,6,7},{1,9,2,7}},i,j; //16 for (i=0;i<4;i++) //17

{ for(j=0;j<4;j++) cout<

3、下面程序的功能是比较两个字符串是否相等,若相等返回1,否则返回0: #include //1 int f(char *a1,char *a2) //2 { char *p=a1, *q=a2; //3

while(*p==*q) //4改错:while(*p==*q && *p && *q) { q++; //5 p++; //6 } //7

return *p==’\\0’||*q==’\\0’; //8 改错:return *p==’\\0’&& *q==’\\0’; } //9 void main( ) //10 { char s1[100] , s2[100]; //11

cin.get(s1,100); //12改错:cin.getline(s1,100); cin.get(s2,100); //13改错:cin.getline(s2,100); cout<

#include //1 void main() //2 { int *p,n,i; //3 char *q,s=’#’; //4 cin>>n; //5 p=new int[n]; //6 for(i=0;i>p[i]; //8 cout<

delete p; //10改错:delete []p; q=s; //11改错:q=&s; cout<

5、以下程序用筛选法求出2-300之间所有的素数。程序结果输出时,每行输出10个数。 #include //1

void prime(int y,int n) //2改错:void prime(int y[],int n) { for(int i=0;i

if(y[j]&&y[j]%y[i]=0) //6改错:if(y[j]&&y[j]%y[i]==0) y[i]=0; //7改错:y[j]=0; } //8 void main(void) //9 { int num[150],count=0; //10 num[0]=2; //11 for(int i=1;i<150;i++) //12 num[i]=2*i+1; //13 prime(num,150); //14 for(i=0;i<150;i++) //15 if(num[i]) { count++; //16 cout<

} //19 cout<<\求出的素数个数为:\} //21

六、程序设计题

1、输入10个整数到一维数组中,按升序排序后输出。分别用三个函数实现数据的输入、排序及输出。 2、设计一个用于判断所输入的字符串是否为“回文”的程序。所谓回文是顺读和倒读都一样的字符串,如“1234321”。 3、建立一个学生档案的结构体数组,描述学生基本信息:姓名、性别、年龄和数学课程成绩,并设计两个函数实现输入和输出学生信息的功能。

4、定义全班30名学生学习成绩的结构体数组,一个元素包括:姓名、学号、C++成绩、英语成绩、数学成绩和这三门功课的平均成绩(通过计算得到)。设计四个函数实现:全班成绩的输入,求出每一个同学的平均成绩,按平均成绩的升序排序,输出全班成绩表。

5、从键盘输入10个国家的名字,编程实现将这10个国家的名字按字母升序输出。具体要求如下: (1)数据结构:采用字符串数组。 (2)排序算法:采用选择排序。 6、利用循环语句编程打印如下图形。 (1) * * * * * * * * * * * * * * * * * * * * * * * * * (2) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (3) * & * * & & * * * & & & * * * * & & & & * * * * * & & & & &

7、输入一个3位八进制数,要求输出对应的十进制数。 8、定义一个指针数组,其中的每个指针分别指向“NJNU”、“SEU”、“HHU”、“NJUST”、“NJUTCM”,将这些字符串升序排序后输出。

9、打印杨辉三角形(要求打印9行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1

10、试建立一个类pri,求出指定的两个数的最大公约数和最小公倍数。具体要求如下: (1)私有数据成员

int m,n,p,q: m、n 分别存储待求最大公约数的两个数,p存放它们的最大公约数,q存放它们的最小公倍数。 (2)公有成员

构造函数pri(int,int):初始化数据成员m、n。

void get():根据给定的m、n的值,求出最大公约数和最小公倍数。 void show():显示求出的最大公约数和最小公倍数。 (3)在主程序中对该类进行测试。使用测试数据m=12,n=8。

11、素数是除1和它本身之外不能被其他任何整数整除的正整数。例如:11是素数,因为它除了能被1和11整除外,不能被其他数整除。试建立一个类prime,求出指定范围内的素数,要求如下: (1) 私有数据成员

int a[20]:存放求出的素数

int m,n,p:m、n存放素数的取值范围,p存放所求出的素数个数。 (2) 公有成员

构造函数prime(int,int):初始化数据成员m、n

void isprime( ):根据给定的m、n的值,求出介于m、n之间(包括m、n)本身的所有素数及个数。 void show( ):显示求出的所有素数及个数。 (3) 在主程序中对该类进行测试。使用测试数据m=1,n=50。

12、定义一个类Array,求一个二维数组各列元素的平均值,并将所求得的平均值按顺序存入一个一维数组中。具体要求如下:

(1) 私有数据成员:

int a[4][5],float b[5]:数组b依次存放数组a的各列元素的平均值。 (2) 公有成员函数:

Array(int t[ ][5], int n):用数组t初始化a(n为数组t的行数),并将数组b的元素全部初始化为0。 void average( ):计算数组a的各列元素的平均值,并存放到数组b中。 void print( ):输出所有成员数据。 在主函数中定义一个二维数组(数据如下),并用该数组对类Array进行测试。 12 20 30 25 52 36 65 22 26 60 70 54 12 14 6 2 7 8 12 15

本文来源:https://www.bwwdw.com/article/mdpp.html

Top