【无标题】

C++试卷

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

1. 由C++目标文件连接而成的可执行文件的缺省扩展名为( C )。

(A)   cpp                           (B)   obj                   (C)   exe                            (D)        dll

2. 下列选项中全部都是C++关键字的选项为( B )。

(A)   cpp      int       break

(B)   int      char     new                

(C)   break    CASE    sizeof                          

(D)  switch   float     integer

3. 下列四个选项中,不能交换变量a和b的值是( B  )。

(A)   a=a-b, b=a+b, a=b-a;                       (B)  t=a, a=b, t=b, b=a;

(C)   t=a, a=b, b=t;                                    (D)  t=b, a=b, b=a;

4. 字符串"Hello,\nHi\041"包含的有效字符个数为(  D  )。

(A)   14                     (B)   13                     (C)   12                     (D) 10

算入\0

如果是strlen,是9

5. 下列代码执行的结果是( B  )。

int x = 3510;   double y = x/100*100;   cout <

(A)   3510                (B)   3500                (C) 3000             (D) 1

6. 已知int i=3;下面语句执行的循环次数是( B  )。

   do{  i--; cout<

    (A)   1                               (B)   2                               (C)   3                               (D)  无限次

7. 假设int a=1, b=2, &ra=a, &rb=b; 下列正确的语句是( B  )。

(A)   &ra=a;                      (B)   rb = ra;                     (C)   &rb=&ra;                (D)  *rb=*ra;

见上一篇,这只是简单的修改值

8. 在下面的函数声明中,存在着语法错误的是( D  )。

(A)   void f( int a, int )                              (B) void f( int a,  int b )

(C)   void f(int a, int b=5)                   (D) void f( int a;  int b )

9. 若有定义语句: int a[2][3],*p[3]; 则以下语句中正确的是( C  )。

(A)  p=a;                (B)   p[0]=a;                  (C)   p[0]=&a[1][2];           (D)  p[1]= &a;

10. 下列代码输出结果为( D

int* arr = new int[10];       cout <

(A)  编译时将产生错误        (B)   编译正确,运行时将产生错误                    

(C)  输出零                             (D) 输出值不确定

正确的,没赋值

11. 已知char* s1= "123", *s2="34";则   strcmp(s1, s2)的值为下列哪个( B   )。

(A) 1                                 (B)-1                                 (C) "12334"            (D) "34"

12. 若有以下声明和定义,

struct  worker则下列错误的引用是(  D  )。

{ int  no ;  char name[ 20 ] ;  } w,  *p=&w ;

(A)   w.no=3011;             (B)   p->no=3011;           (C)   (*p).no=3011;         (D) *p.no=3011;

二、简答题 (共12分)

1、(3分) 有以下语句:

int  a = 63;   double  b = 3.456789 ;  

   cout<

输出显示什么?

####3f

有自动补齐,16进制

3.4568

有四舍五入

2、(3分) 有说明int  A[3][ 5]; 写出两个不同形式的表示A[1][3]元素值的表达式。

    A[1][3]   * (A[1]+3)    * (*(A+1)+3)

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

    48      4

4、(3分)设有函数调用语句 Count(A ,N, right, negative); 功能是由参数right, negative返回统计数组A 的N个元素中正整数和负整数的个数。对应的函数原型是什么?

void  Count( int *  , int,  int &, int &);

三、读程序写结果(共6题,每题 4~5分,共28分)

1、(4分):

#include

const int N=5;

void main()

{   int a[N] = { 8,6,5,4,1 }, i, temp;

    for( i=0; i

     { temp = a[i]; a[i] = a[N-i-1]; a[N-i-1] = temp;  }

    for( i=0; i

       cout<

}

答案:1 4 5 6 8

2、(4分)

#include

void fun()

{ static int a=0;  int b=0;

  a+=2; ++b;

  cout<

}

void main()

{  for(int i=1; i<4; i++) fun();  }

答案:

2   1

4   1

6   1

3(4分)。

#include

void main()

{ int i;char c;

  char s[]="abccda"; 

  for(i=1;(c=s[i])!= '\0';i++)

  { switch(c)

        { case 'a':cout<<'%';continue;

         case 'b':cout<<'%';break;

         case 'c':cout<<'*';break;

         case 'd': continue;

        }

    cout<<'#'<

}

}

答案:

%#

*#

*#

%

4、(5分)

#include

void func( char *p )

{ if( *p=='\0' ) return ;

  func( p+1 );

  cout<<*p;

}

void main()

{ func("hello"); }

答案:

Olleh

逆序

5(5分)。

#include

void func(int, int&, int *) ;

void main()

{  int x=11, y=22, z=33 ;

     func(1, x, &z) ;   cout<

     func(2, z, &y) ;   cout<

}

void func(int a, int &b, int *c)

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

答案:

12 22 11

12 11 13

6(5分)

#include

#include

void func(int *p)

{   int t;

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

      for(int j=i;j<3;j++)

       {  t=*(p+3*i+j);

*(p+3*i+j)=*(p+3*j+i);

*(p+3*j+i)=t; }

}

void main()

{   int a[3][3]={1,2,3,4,5,6,7,8,9},*p,i,j;

    p=&a[0][0];

    func(p);

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

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

       cout<

       cout<

    }

}

答案:

   1    4    7

   2    5    8

   3    6    9

五、编程题(共14分)

1.( 6 )编写程序其功能是输出1000以内个位数为6且能被3整除的所有正整数。要求输出格式为:每一行显示10个数,每个数的宽度为5。图1是输出效果。

#include

#include

void main ( )

{ cout<< "1000以内个位数为6

且能被3整除的所有正整数:\n\n";

  for (int i=0,j=0 , k=0 ;  i <100  ; i++ )

  { j = i * 10 + 6 ;

    if  ( j % 3  )  continue;  

    cout << setw(5)<

    if( (++ k %10 )== 0 ) cout<

  }

  cout<

}

2、(8分)以下程序用随机函数生成两位整数,取M个各不相等的数据,按生成顺序存放在数组a中。图2是生成20个数据的显示效果。请按照题意编写insert函数及填写函数原型。

#include

#include

#include                         

#include

_____________________;//insert函数原型int insert( int *ap, int k, int n );                    

void main()                              

{ const int M=20;

  int n, i=0;

  int a[M]={ 0 };

  srand(time(0));

  while (i

  { do{ n=rand()%100;}while(n<10);  //生成数据

    if( insert( a, i, n ) ) i++;   //把不相同数据插入数组a

   }

  cout<<"生成的数组:"<

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

   { cout<

     cout<

}

int insert(int *ap, int k, int n)

{ for(int j=0; j滤去相同数

    if( ap[j]== n ) break;

  if(j==k){ ap[j] = n; return 1; } //添加数据

  return 0;

}

世间温柔,不过是芳春柳摇染花香,槐序蝉鸣入深巷,白茂叶落醉故乡。

你可能感兴趣的:(算法)