【无标题】

发布时间:2023年12月18日

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 <<y;

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

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

?? do{? i--; cout<<i<<endl; } while(? i != 1 );

??? (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 <<arr[0];?

(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<<setfill('#')<<setw(6)<<hex<<a<<'\n'<<setprecision(5)<< b<<endl;

输出显示什么?

####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<iostream.h>

const int N=5;

void main()

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

??? for( i=0; i<N/2; i++ )

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

??? for( i=0; i<N; i++ )

?????? cout<<a[i]<<' ';

}

答案:1 4 5 6 8

2、(4分)

#include<iostream.h>

void fun()

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

? a+=2; ++b;

? cout<<a<<'\t'<<b<<endl;

}

void main()

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

答案:

2?? 1

4?? 1

6?? 1

3(4分)。

#include<iostream.h>

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<<'#'<<endl;

}

}

答案:

%#

*#

*#

%

4、(5分)

#include<iostream.h>

void func( char *p )

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

? func( p+1 );

? cout<<*p;

}

void main()

{ func("hello"); }

答案:

Olleh

逆序

5(5分)。

#include <iostream.h>

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

void main()

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

???? func(1, x, &z) ;?? cout<<x<<' '<<y<<' '<<z<<endl;

???? func(2, z, &y) ;?? cout<<x<<' '<<y<<' '<<z<<endl;

}

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

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

答案:

12 22 11

12 11 13

6(5分)

#include<iostream.h>

#include<iomanip.h>

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<<setw(5)<<a[i][j];

?????? cout<<endl;

??? }

}

答案:

?? 1??? 4??? 7

?? 2??? 5??? 8

?? 3??? 6??? 9

五、编程题(共14分)

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

#include <iostream.h>

#include <iomanip.h>

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)<<j;

??? if( (++ k %10 )== 0 ) cout<<endl;?

? }

? cout<<endl;??

}

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

#include<iostream.h>

#include<iomanip.h>

#include<stdlib.h>?????????????????????????

#include<time.h>

_____________________;//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<M)

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

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

?? }

? cout<<"生成的数组:"<<endl;

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

?? { cout<<a[i]<<"? "; if(i%10==0)cout<<endl;? }

???? cout<<endl;

}

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

{ for(int j=0; j<k; j++)??? ?????? //滤去相同数

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

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

? return 0;

}

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

文章来源:https://blog.csdn.net/2302_79394843/article/details/135041321
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。