C++程序设计模拟测试题试卷及答案

C++程序设计模拟测试题试卷及答案,第1张

 《C++程序设计试卷》

单项选择题:(每题2分,共20分)

  1. 结构化程序设计的三种基本控制结构是(     )。   

A)输入、处理、输出  B)树形、网形、环形     

C)顺序、选择、循环  D)主程序、子程序、函数

  1. 下列哪个是C++的合法变量名(    )?

A) 8d           B) ex3.12               C)1_2a         D) _int

  1. 若整型变量 int  a=2,b=1,c=3,d=4;  则条件表达式a

A) 1   B) 2   C) 3   D) 4

  1.   for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是(    )。   

A)0  B)5  C)6  D)无限循环

  1. 若一个函数体中定义与全局变量相同名字的变量x,在函数体内对x赋值,修改的是  (    )。

A)局部变量和全局变量都被修改 B) 全局变量x

C)不确定 D) 局部变量 x

  1.  设有如下定义语句:int a[5],*p=a;,则下列表达式错误的是  

A)p++       B)a++   C)p-a    D)a+1

  1.  设有变量定义: double x; int m;  函数原型声明:void f(double *, int &);

则正确的函数调用语句是(    )。

A) f(&x,m); B) f( x, &m); C) f(*x, &m); D) f (x,*m);

  1. 若用数组名作为调用函数的实参,则传递给形参的是(     )。

A) 数组存贮首地址       B) 数组的第一个元素值

C) 数组中全部元素的值       D) 数组元素的个数

  1. 设有二维数组a[3][4], 不等价的一对表达是(       )。

A) *(a[0]+2) 与 a[0][2] B) a[0]+3 与 &a[0][3]

C) *a[1] 与 a[1][0] D) a[0][2] 与 a[0]+2

  1. 若有函数原型int max (int a , int b); 并且有:int (*p) ( int , int ) = max ;

调用max函数的正确方法是(      )。

A)  ( * p ) max ( a , b ) ; B)  * p max ( a , b ) ;

    C)  ( * p ) ( a , b ) ; D)   * p ( a , b ) ;

答案栏:

1、____  2、____ 3、____ 4、____5、____ 6、____7、___ 8、____9、___ 10、____

  • 简答题:(共20分)
  1. 语句 cout<< ”y\x42\x2\nx”的显示结果是什么?说明理由。(3分)

答:

  1. 以下程序的输出结果是什么?请说明原因。(2分)

int main()

{ unsigned short  a=65535;   

short int  b;

b=a;

cout<<”b=”<

return 0;

}

答:

  1. 设有说明char a[6], * b =a;  sizeof(a), sizeof(b)的值各是多少?分析结果原因。(3分)

答:

  1. 设有说明int a[2*3]; 请写出两个表示数组a最后一个元素地址的表达式(2分)。

答:

  1. 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的原型。(2分)

main()

{    double   s[10][22];

int   n; 

fun(s);

}

答:

  1. 设有如下定义:

struct person{char  name[10]; int age;};

person   class[10]={“Johu”,  17,

“Paul”,  19

“Mary”,  18,

“Adam    16,};

根据上述定义,写出能输出字母M语句。(3分)

答:

  1. 以下语句不能正确输出单链表head的数据元素值,请找出原因。(2分)

struct link{int data; link * next; };

link *head, *p;

……

p=head;

while(p!=NULL)  {cout<

……

答:

  1. 设有函数调用语句 array_max_min(a ,n, max, min); 功能是由参数max, min返回基本整型数组a 的n个元素中的最大值和最小值。对应的函数原型是什么?(3分)(只需给出原型,不用写函数定义)

答:

  • 阅读程序,写出运行结果:(每小题4分,共20分)

  1. #include

using namespace std;

  int main ()

{ int x,n;

 x=n=5;

x+=n++; 

cout<

return 0;

 }

  1. #include

using namespace std;

int  main ()

{ char s[6]="abcde", *p=s;

cout<<*p<

return 0;

}

  1. #include

using namespace std;

int main()

{  int i,j;

for( i=1; i<=3; i++ )

{ j=1;

  while (j

   { cout << i<<','<

        j++;

}

   }

return 0;

}

  1. 以下程序的输出的结果是

#include

using namespace std;

void incre();

int x=3;

int main()

{   int i;

for (i=1;i

}

void incre()

{   static   int  x=1;

x*=x+1;

cout <

}    

  1. #include

using namespace std;

void  fun ( int , int , int * ) ;

int main ( )

{int  x , y , z ;

 fun ( 5 , 6 , &x ) ;

 fun ( 7 , x , &y ) ;

 fun ( x , y , &z ) ;

 cout << x << ","<< y << "," << z ;

 return 0;

}

void fun ( int a , int b , int * c )

{ b+=a ;  * c=b-a ; }

答案栏:1、__________________________ 2、__________________________

3、__________________________ 4、__________________________

5、__________________________

  • 程序填空题:(每空2分,共22分)
  1. 下面程序的功能是:输入三角形的三条边存放在变量a,b和c 中,判别它们能否构成三角形,若能,则判断是等边、等腰、还是其它三角形,在横线上填上适当内容。

#include

using namespace std;

int  main()

{ float a, b, c ;

  cout<<"a,b,c=";  

cin>>a>>b>>c;

  if (  a+b>c && b+c>a && c+a>b  )          

   {

   if (       【1】          )       

   cout<<"等边三角形!\n";

    else if (          【2】          )    

           cout<<"等腰三角形!\n";

         else cout<<"其它三角形!\n";

   }

  else cout<<"不能构成三角形!\n";

return 0;

}

  1. 以下程序功能是打印100以内个位数为6且能被3整除的所有数。

#include

using namespace  std;

int main ( )

{ int  i ,  j  ;

  for ( i = 0 ;  ___【3】___  ;  i + + )

  { j = i * 10 + 6 ;

   if  ( ___【4】____ )  continue  ;

   cout << j << ”  ” ;

 }

return 0;

}

  1. 下列程序实现两个变量的值互换。

#include

using namespace std;

void swap(int *, int *);

int main()

{ int a=3,b=8;

  swap(【5】  );

cout<<"a="<

return 0;

}

void swap(int *x,int *y)

{ int temp=  【6】  ; *x=*y; *y=temp; }

  1. 求n(n≥6)内的所有偶数表示为两个素数之和,下图为输入16的运行结果。补充完整以下程序。

[提示:一个偶数n(n≥6)可以表示为 1+(n-1),2+(n-2),3+(n-3),… ]

#include

using namespace std;

#include

#include

int  isprime(int); 

int  main()

{ int  num,i,n; 

 cout<<" 请输入一个偶数N(N>=6):";

 cin>>num;

for( n=6; n<=num; n+=2)

for( i=3;i<=n/2;i+=2)

if(____ 【7】_________)

{cout<

   break;}

 return 0;

}

int  isprime(int  m)

{ int i, k=sqrt(m);

    for(i=2; i<=k; i++)

       if(____ 【8】_________) return  0 ;

____ 【9】_________ 

}

  1. 下面是一个类的测试程序,其执行结果为:

50-12=38

请将程序补充完整。

#include

using namespace std; 

class Test

{ int m,n; 

public:

void init(int,int);

void print();

};

void Test::init(int i,int j)

{ ______ 【10】_______________

}

void Test::print()

{ ________ 【11】__________________

}

int main()

{ Test a;

a.init(50,12);

a.print();

return 0;

}

答案栏:

(1)__________________________  (2) __________________________

(3) __________________________ (4) __________________________

(5) __________________________ (6) __________________________

(7) __________________________ (8) __________________________

(9) __________________________ (10) _________________________

(11) _____________________________________

  • 编程题:(18分)
  1. (6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息,要求输入2个正整数,然后显示这个范围的数据的平方和立方值。例如,分别输入整数1和10,执行效果如下图所示。

答:

  1. (6分)以下程序求一维数组元素的最大值,并返回此值。请依题意编写函数f及填写函数原型。

#include

using namespace std;

const int n=10;

               __________         //f函数原型

int main()

{int a[n], i, max;  

 for(i=0; i

  cin>>a[i];

 max=f(a,n);

 cout<<"max="<

 return 0;

}

答:

  1. (6分)以下程序的功能是分离一个浮点数的整数部分和小数部分。程序用字符串存放输入数据,执行效果如图所示。根据main函数,请写出separate函数的原型和实现定义。

#include

using namespace std;

____________________________________________    //separate函数原型

int main()

{ char s[20];

  int i=0, d=0;

  cout<<"请输入一个浮点数: ";

  cin>>s;

  separate(s, i, d); //调用函数

  cout<

  cout<

  return 0;

}

答:

诚信应考,考试作弊将带来严重后果!

 《C++程序设计试卷》

参考答案

注意事项:1. 考前请将密封线内填写清楚;

          2. 所有答案请答在试卷的答案栏上;

          3.考试形式:闭卷;

          4. 本试卷共  五 大题,满分100分, 考试时间120分钟。

题 号

总分

得 分

评卷人

  • 单项选择题:(每题2分,共20分)

答案栏:

1、__C__  2、_D_ 3、_C__ 4、_C__5、_D_ 6、__B_7、_A_ 8、A__9、D_ 10、__C__ 

  • 简答题:(共17分)
  1. yB\xB

x

  1. b=-1
  2. 6,4
  3. &a[5], a+5
  4. void fun(double (*p)[22]);
  5. class[2].name[0]
  6. p->data;  p=p->next;

void array_max_min(int *, int , int *,int *);

  • 阅读程序,写出运行结果:(每小题4分,共20分)

  1. 106
  2. aabcde

  1. 2,1

3,1

3,2

2,6    

6,6,6

  • 程序填空题:(每空2分,共22分)
        1. a= =b && b= =c
        2. a= =b || a= = c || b= =c 
        3. i <10
        4. j % 3
        5. &a, &b
        6. *x
        7. isprime(i) && isprime(n-i)
        8. !( m%i)
        9. return 1;
        10. m=i;n=j;
        11. cout<

  • 编程题:(18分)

  1. #include

using namespace std;

#include

int  main()

{ int  a,b,i;

  cout<<" 请输入第一个整数(>=0):";

  cin>>a;

  cout<<" 请输入第二个整数(>第一个整数):";

   cin>>b;

   cout<

 for( i=a;i<=b;i++)

 cout<

 return 0;

 }

  1. #include

using namespace std;

const int n=10;

int f(int *, int);   //f函数原型

int main()

{int a[n], i, max;  

 for(i=0; i

  cin>>a[i];

 max=f(a,n);

 cout<<"max="<

 return 0;

}

int f(int *a,int n)

{int i,max;

 max=a[0];

 for(i=1;i

 if(a[i]>max)  max=a[i];

 return max;

}

  1. #include

using namespace std;

void separate(char *,int & ,int &);   //separate函数原型

int main()

{ char s[20]={'\0'};

  int i=0, d=0;

  cout<<"请输入一个浮点数: ";

  cin>>s;

  separate(s, i, d); //调用函数

  cout<

  cout<

  return 0;

}

void separate(char *s, int &a, int &b)

{int i;

 for(i=0;s[i]!='.';i++)

   a=a*10+s[i]-48;

 for(i++;s[i]!=0;i++)

 b=b*10+s[i]-48;

}

诚信应考,考试作弊将带来严重后果!

 期末考试

《C++程序设计》试卷

注意事项:1. 考前请将密封线内填写清楚;

          2. 所有答案请答在试卷的答案栏上;

          3.考试形式:闭卷;

          4. 本试卷共  五 大题,满分100分, 考试时间120分钟。

题 号

总分

得 分

评卷人

  • 单项选择题:(每小题2分,共20分)

  1. 一个C++程序从编写源程序到得到运行结果要经历的四个步骤是( )。   

A)编译、编辑、连接、运行

B)编辑、编译、汇编、运行     

 C)编辑、编译、连接、运行

D)编译、连接、汇编、运行

  1. 下列选项中,哪个是C++语言的合法变量名(    )?

A) file.cpp B) _123 C)9abc D) new

  1. 对于语句序列:int x=5,y=6,z; float  a=2.5;  z=y/x+y/a+a; 执行后z的值为(  )。

A) 5 B) 6   C) 6.1  D) 5.9

  1. 以下选项中可作为C语言合法常量的是(  )。

A)-8e1.0 B)-080 C)-80. D)-80.0e

  1. 设有int a=1,b=2,c=3,d=4;  则条件表达式a

A) 1   B) 2   C) 3   D) 4

  1. 以下程序的运行结果是(  )。

   int main()

   { unsigned short  a=65535;   

  short  b;

  b=a;

  cout<

  return 0;

  }

A) -32768 B) 32767  C) 65535  D) -1

  1. 设有定义语句: int a[6] = {2,4,6,8,5,7}, *p = a, i ;

 要求依次输出a数组6个元素的值,不能完成此 *** 作的语句是(  )。

A) for(i=0;i<6;i++)cout<<*(p++)<

B) for(i=0;i<6;i++) cout<<*(p+i)<

C) for(i=0;i<6;i++) cout<<*p++<

  D) for(i=0;i<6;i++) cout<<(*p)++<

  1. 设有定义语句:char a[10], *p=a;  以下赋值语句中,正确的是(      )。

A) a="hello"; B) a[10]= "hello";

C) strcpy(a, "hello"); D) *p="hello";

  1. 下列带有默认参数的函数原型声明中,正确的是(       )。

A) float fun(int a=5 , int  b=5,  int c, int d);

B) float fun(int a=5, int b=5, int c, int d=5);

C) float fun(int a=5, int b , int c , int d );

D) float fun(int a ,int b , int c=5, int d=5);

  1. 设有定义语句:struct point{ int x; int y; } v1; 则以下语句中正确的是(    )。

A) point.x=10; B) point v2;  v2.x=10;

C) struct v2; v2.x=10; D) v1 v2;   v2.x=10;

答案栏:

1、____  2、____ 3、____ 4、____5、____ 6、____7、___ 8、____9、___ 10、____

二、程序填空题(每空2分,共20分)

答案栏:

1、___________________________________  2、___________________________________

3、___________________________________  4、__________;___________;____________;_

5、__________________;_______________;_  6、___________________________________

7、___________________________________  8、___________________________________

9、___________________________________  10、___________________________________

1、以下函数的功能是:用递归法将一个整数n转换成字符串。例如:输入整数1635,应输出字符串"1635"。n的位数不确定,可以是任意位数的整数。请填空。

void fun(int n)

{ if(n<10)      【1】           //递归出口

else

{       【2】              //递归体

putchar(n%10+48);

}

}

2、以下程序的功能是:用起泡法对6个整数排序(按从小到大顺序)。请填空。

#include

using namespace std;

void main( )

{

    int a[6], i, j, t;

     for(i=0; i<6; i++)

       cin>>a[i];

   for(j=0; j<5; j++)

     for(i=0;       【3】       ; i++)

        if(a[i]>a[i+1])

        {

                【4】        //交换两个数的位置,使小数上浮

           }

  for(i=0; i<6; i++)

cout<

}   

3、以下程序的功能是:定义一个结构体类型,内含学生学号和一门课的成绩,并开辟动态内存存放一个学生的数据:学号1001,成绩90。执行该程序后运行结果如下:

                       1001, 90↙

请填空。

#include

using namespace std;

struct Student

{

int n;     //学号

double s;  //成绩

};

void main( )

{

Student *p;

p=new Student;

      【5】         //赋值

      【6】         //输出

delete p;

}

4、以下程序的功能是:执行该程序后运行结果如下:

                      43↙

请填空。

#include

using namespace std;

void f1(      【7】      )     

{

    x=x+2;

    y=y+2;

}

void main( )

{

int a=2, b=3;

f1(a,b);

cout<

}

5、以下程序的功能是:输出二维数组各元素值。请填空。

#include

using namespace std;

void main( )

{

void output(int (*)[3]);

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

output(      【8】      );

}

void output( int (*p)[3] )

{

int i, j;

     for(i=0; i<2; i++)

{

for(j=0; j<3; j++)  

cout<<      【9】      <<" ";

      cout<

}

}

6、以下函数的功能是:判断一个数是否为素数。请填空。

bool prime(int m)

{

int i;

bool  prime1;

prime1=true;

for(i=2; i<=sqrt(m); i++)

if(m%i==0)       【10】      

return prime1;

}

三、阅读程序,写出运行结果。(每小题3分,共24分)

答案栏:

1、_____________________________      2、_____________________________

3、_____________________________      4、_____________________________

5、_____________________________      6、_____________________________

7、_____________________________      8、_____________________________

1、#include

using namespace std;

void main( )

{

int i=3, j=6, m, n;

m=i++ - ++j;

n=++i+j--;

cout<

}

2、#include

using namespace std;

void main( )

{

double x=-0.5, y;

if(x<1)

if(x<-1)y=x+1;

else if(x>0)y=x+2;

else y=x+4;

else y=x+5;

cout<<"x="<

}

3、#include

using namespace std;

void main( )                                      

{

  int x=2, y=1;

    while(x<4)

switch(x++)

{

case 3: y++;

          case 1: y+=3;break;

          case 2: y--;

}

cout<

}

4、

#include

using namespace std;

void p(float f)

{

cout<<"float"<

}

void p(double d)

{

cout<<"double"<

}

void p(int i)

{

cout<<"int"<

}

void main()                                      

{

  p(2);

p('A');

p(2.1);

}

5.  #include

   using namespace std;

   int x, y;

void fun(int a)

{  int y , b;

b=a+2;  x=x+a;  y=x-b;

cout<}

int main( )

   { int a=1, b=2;

x=3, y=4;

     fun(b);

     cout<     return 0;

   }

6.  #include

using namespace std;

int f(int a)

{ int b=0;

  static int c=3;

  b++;  c++;

  return (a+b+c);

}

int main( )

{ for (int i=0; i<3; i++)  cout<

  return 0;

}

7.  #include

using namespace std;

int main( )

{ char ch[ ]="STUDY" ;

  cout<

  return 0;

}

         

8.  #include

using namespace std;

int main( )

{ int a=12,  b=34, *p, *q, *r;

  p=&a;  q=&b;

  if (*p<*q) { r=p; p=q; q=r; }

  cout<<*p<<"  "<<*q<

  *q=*p+*q;

  cout<

  return 0;

}

四、简答题(每小题4分,共12分)

1. 试分析字符串常量 "abc\n\\efg\101" 由哪几个字符构成?该字符串占用多少个字节?若用 cout<<"abc\n\efg1" ; 会看到的输出结果是什么?

2. 若有如下定义:

union ctype

{ float  y;

  short int  m;

  char code[3];

};

ctype  cdat;

试画出变量cdat的内存构造图(示意图),并指出该变量占用内存的字节数。

3.  下面程序有错误:

   #include

   using namespace std;

   void fun(int a[ ] )

   { for (int i=0; i<5; i++)

      cout<<*a++<<"  ";      // (1)

     cout<

   }

   int main( )

   { int a[5]={10,20,30,40,50};

     for (int i=0; i<5; i++)

        cout<<*a++<<"  ";    // (2)

     cout<

     fun(a);

return 0;

   }

源程序中(1)和(2)之处写法一样,但编译时(2)处出错而(1)处正确,试指出原因,并将(2)处改正。

五、程序设计题(每小题8分,共24分)

1. 设计程序输出数列{An}的前50个数,输出时要求每行输出5个数。数列有下列规律:

   

2. 众数是指一组数据中出现次数最多的那个数据。例如:{1,2,2,3,3,2,,4}的众数是2。试设计一个求众数的函数mode,其形式参数有2个:数组(该数组存放一组数据)、数据个数。函数的返回值是众数。在主函数中输入一组数据存放在数组中,然后调用函数mode求得众数,最后在主函数中显示出众数。


3. 需要求2个不同的圆柱体的表面积,设计一个面向对象的程序。数据成员包括:radius(半径),height(高);还可根据需要定义其它数据成员。要求分别用成员函数实现以下功能:

(1) 由键盘输入圆柱体的半径、高;

(2) 计算圆柱体的表面积;

(3) 输出圆柱体的表面积。

请编写程序。

《C++程序设计》试卷参考答案

  • 单项选择题:(每题2分,共20分)

1、_C__  2、_B__ 3、_A__ 4、_C__5、_A__ 6、_D__7、_D_ 8、C_   9、D   10、_B__

二、程序填空题(每空2分,共20分)

1、putchar(n+48);                       2、fun(n/10);

 

3、i<5-j                               4、t=a[i]; a[i]=a[i+1]; a[i+1]=t;

5、p->n=1001; p->s=90;                 6、cout<n<<","<s<

7、int &x, int y                         8、a 

9、*(*(p+i)+j)                          10、prime1=false;

三、阅读程序,写出运行结果。(每题3分,共24分)

1、   -4  12  5  6                     2、    x=-0.5, y=3.5               

3、   4                                4、    int2int65double2.1

5、   5  1  2  4                       6、    5  7  9

      5  4  1  2

7、   STUDY                           8、   34  12

      U                                      46  34

      TUDY        

四、简答题(每小题4分,共12分)

1.   字符串由9个字符组成:'a' 'b' 'c' '\n'  '\\'  'e'  'f'  'g'  'A'

     占用10个字节。

     输出为: abc

              \efgA

2.   占4个字节。

                         m   

                                    code

                                          y

3.    (1)处的a实际上是指针变量,可以++;(2)处的a是一个数组名,不能++

     可将(2)处改为cout<<*(a+i) <<"  ";  或  cout<

五、程序设计题(每小题8分,共24分)

1.

#include

using namespace std;

int main( )

{  float a[50]={1, 0.5};

   int i;

   for(i=2;i<50;i++)

     a[i]=a[i-1]*(a[i-2]+1)/(a[i-1]+1);

   for (i=0;i<50;i++)

   {  cout<

      if ( (i+1)%5==0 )  cout<

   }

   return 0;

}

2.  

#include

   using namespace std;

   int mode(int a[ ], int n)

   { int i , j, m=0, len, c;

     for (i=0; i

{  len=1;

   for (j=i+1; j

      if (a[i]==a[j]) len++;

   if (len>m)

   {  m=len;  c=a[i];

   }

}

return c;

}

int main( )

{  int z, i , a[7];

   for (i=0; i<7; i++) cin>>a[i];

   z=mode(a,7);

   cout<<"众数是"<

   return 0;

}

3.  

#include

using namespace std;

class  Cylinder

{  private:

     float  radius;

     float  height;

     float  area;

   public:

     void input( );

     float calc_area( );

     void output_area( );

};

void  Cylinder::input( )

{  cin>>radius>>height;

}

float Cylinder::calc_area( )

{ area=3.1415926*radius*radius*2+2*3.1415926*radius*height;

 return area;

}

void Cylinder::output_area( )

{ calc_area( );

cout<<"表面积:"<

}

int main( )

{ Cylinder a,b;

  a.input( );  

  a.output_area( );

b.input( );  

  b.output_area( );

  return 0;

}

   

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存