1、诚信应考,考试作弊将带来严重后果! 期末考试 《高级程序设计语言C++》试卷 考前须知:1.考前请将试卷和答题纸密封线内各项填写清楚;.所有答案写在答题纸上,否那么无效; 2 .试卷和答题纸同时提交;.考试形式:闭卷; 3 .本试卷共五大题,总分值100分,考试时间120分钟。 题号 —* = 四 五 总分 得分 评卷人 一、单项选择题(每题2分,共26分) 1 .由C++目标文件连接而成的可执行文件的缺省扩展名为(C )。 (A) cpp(B) obj(C) exc(D) dll.以下选项中全部都是C++关键
2、字的选项为(B )。 -E (A) cpp int break (B) int char new (C) break CASE sizeof (D) switch float integer 2 .以下四个选项中,不能交换变量a和b的值是(B )。 (A) a=a-b, b=a+b, a=b-a;t=a, a=b, t=b, b=a; (B) l=a, a=b, b=t;t=b, a=b, b=a; 4 .字符串"Hello,\nHi\041”包含的有效字符个数为(D )。 (A) 14(B) 13(C) 12(D) 10.以下代
3、码执行的结果是(B )。
n]r>
料
int x = 3510; double y = x/100* 100;cout «y;
(A) 3510(B) 350()(C) 3000(D) 1.ini i=3;下面语句执行的循环次数是(B )。
do{ i—; cout«i«endl; } while( i != 1 );
(D)无限次
(A) 1(B) 2(C) 3.假设int a=l, b=2, &ra=a. &rb=b;以下正确的语句是(B )。
2 1
3 1
4 2
5 、
^include
4、int *);
void mainO
{ int x, y, z ;
func(l, 2, &x);
func(3, x, &y);
func (x, y, &z);
cout«x«endl«y«endl«z«endl ;
)
void func(int a, int b, int *c)
{ b-=a ; *c=b-a; }
0
-6
-6
6 、
it include
5、t(*t) (int, int), int a, int b) { return (*t) (a, b) :} void mainO
{ int (*p) (int, int);
p=fl ; cout<
6、dl; fNum(w-l);) )void mainO { fNum(4);} 4 4 4 4 3 3 3 2 2 1四、程序填空题(每空2分,共20分) 1、下面程序的功能是:输入三角形的三条边存放在变量a, b和c中,判别它们能否构成三角 形,假设能,那么判断是等边、等腰、还是其它三角形,在横线上填上适当内容。 ^include〈iostream. h> void main() { float a, b, c ; coutX<"a, b, c="; cin»a»b»c; if ( a+b>c && b+c>a && c+a>b ) ( if (11]) a==b &&
7、b==ccom。”等边三角形! \n”;
else if (12J) a==b| |a=c| |b=c cout<<”等腰三角形! \n”;else cout<<”其它三角形! \n”;
)
else cout«”不能构成三角形! \n”;
)
2、以下程序功能是输出1000以内个位数为6且能被3整除的所有数。请填空。 ^include
8、« j « * ”;
)
)
3、求n (n26)内的所有偶数表示为两个素数之和,图1为输入12的运行结果。补充完整以 下程序。
[提示:一个偶数 n (n26)可以表示为 l+(n-l), 2+(n-2), 3+(n-3),...] #include
9、nt i=3;i<=n/2;i+=2)if(15J) isprime(i) && isprime(n-i) (cout«setw(3) < 10、态数组各元素值。请填空。
#include< iostream. h>
#include 11、 ) int *a=p { cout«*a«, \tf ; } cout«encll;
delete []p; )
五、编程题(20分)(6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息, 要求输入2个正整数,然后显示这个范围的数据的平方和立方值。例如,分别输入整 数2和9,执行效果如图2所示。
CT -E:\c+ + \unc++更 \07级春 \Debug\平方立方,
请卷入塞1个整数< >=0 >:2
请输入奈2个整数 < ”第1个整数
N率方立方
248
392?
41664
525125
636216
749343
864512
9 12、81729
Press any key to continue
▲
二J
1
图2显示数制对照表
#include 13、i«setw(12) «i*i*i«endl;
)1口| x
1口| x
c「E:\C++\CUC++蔻 \0 出卷'Debug 也成,
1、 (6分)以下程序用随机函数生成两位整数,取M个各不相等的数据,按生成顺序存 放在数组a中。图3是生成20个数据的显示效果。请依题意编写函数insert及填写 函数原型。
54 79 二 64 20
生成数组:
Press any key to continueii
int insert (int *ap, int k, int n);〃函数原型图 3 生成数组
或:
int insert (int ap 口,int k, int 14、 n);
void mainO
{ const int M=20;int n, i=0;
int a[M] = {0};srand(time(0));
while (i 15、ert(int *ap, int k, int n)
{ for(int j=0; j 16、>
c< wE:\C++\<^JC++S\07Q(^\Deb.
#include 17、八n";
inputName(name): change(code, name);
cout<<"生成密码为:\n";
outl.ink (code);
}
void inputNamed ink *& h)〃逆序存放字符串
{ 1 ink *p:
p=new link; cin»(p->s);
while((p->s>=, a* &&p->s<=,z \ \ p->s>=* K &&p->s<=, Z' )&&p->s!=, #')
{ p->next=h; h=p;p=new link: cin»(p->s);
)
)
void change(link *&hCod 18、e, link *h)
{ char d;《高级语言程序设计I》试卷(A) 第14页共15页 link *p=NULL;
hCode=new link;hCode->next=NULL;
p=hCode;d=h->s;
for(int i=0;i<6;i++)
{ p->s=int(tolower(d))%10+, 0* ;p->next=new link;
p=p->next;p->s=,;
p->next=NULL;if(h->next)
{h=h->next; d=h->s;} else d=, z';
)
)
void outLinkdink *h){ while 19、h) (cout«(h->s); h=h->next;} cout«endl;
)《高级语言程序设计I》试卷(A) 第15页共15页
(A) &ra=a;
(B) rb = ra;
(C) &rb=&ra;
(D) *rb=*ra;
.在下面的函数声明中,存在着语法错误的选项是(D )。
(A) void f( int a, int)(B) void f( in( a, int b )
(C) void f(int a, int b=5)(D) void f( int a; int b ).假设有定义语句:inta[2][3],*p⑶;那么以下语句中正确的选项是(C )。
20、A) p=a;(B) p[0]=a;(C) p[0]=&a[l] [2];(D) p[l]= &a;.以下代码输出结果为(D )
int* arr = new int[10j; cout «arr[OJ;
(A)编译时将产生错误(B)编译正确,运行时将产生错误
(C)输出零(D)输出值不确定.己知 char*sl="123", *s2="34";那么strcmp(sl, s2)的值为以下哪个(B )。
(A) 1(B)-l(C)" 12334"(D) ,,34".假设有以下声明和定义,
struct worker那么以下错误的引用是(D )。
{ int no ; char na 21、me[ 20 ] ; } w, *p=&w ;
(A) w.no=3011;(B) p->no=3011;(C) (*p).no=30l 1;(D) *p.no=3011;.要求翻开文件“D:\file.dat",可写入数据,正确的语句是(D )。
(A) ifstream infile( "D:\file.dat”, ios::in );
(B) ifstream infile( ttD:\\file.daf,, ios::in);
(C) ofstream infilc( "D:\file.dat",ios::out);
(D) (stream infile( <4D:\\fil 22、e.daf,, ios::in|ios::out);二、简答题(共12分)
1、(3分)有以下语句:
int a = 63; double b = 3.456789 ;
cout«setfill('#')«selw(6)«hex«a«'\n'«setprecision(5)« b«endl;
输出显示什么?
3.45682、(3分)有说明int A13][5J;写出两个不同形式的表示元素值的表达式。
A[il[31*(A[l]+3)*(*(A+l)+3)3. (3 分)设有说明 double a[6]= { 0 }, *b = new double [6]; sizeof (a), 23、 sizeof (b) 的值各是多少?并分析结果原因。
4844、(3分)设有函数调用语句Count (A , N, right, negative);功能是由参数right, negative返回统计数组A的N个元素中正整数和负整数的个数。对应的函数原型是什么?
void Count( int * , int, int &, int &);三、读程序写结果(共6题,每题4〜5分,共28分)
1 > (4 分):
#include 24、p;
for( i=0; i 25、4 分)。
#include 26、 void func( char *p ) { if ( *p==' \0' ) return ; func( p+1 );
cout«*p;}
void main (){ func (,,hello,/) ; } 答案: olleh
5、(5 分)。
ttinclude 27、) void func(int a, int &b, int *c) { b+=a ; *c=b-a; } 答案: 12 22 11 12 11 13 6、(5 分)
#include 28、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 47
2 58
3 69
四、读程序填空(每空2分,共20分).以下程序的功能是:将一组数据从大到小排列后输出,并显示每个元素及它们在原数组 中的下标。请将程序补充完整。
#include






