1、诚信应考,考试作弊将带来严重后果!期末考试高级程序设计语言C+试卷考前须知:1.2.3.4.5.考前请将试卷和答题纸密封线内各项填写清楚;所有答案写在答题纸上,否那么无效;试卷和答题纸同时提交;考试形式:闭卷;本试卷共五大题,总分值100分,考试时间120分钟。题号四五总分得分评卷人单项选择题(每题2分,共26分)1.由C+目标文件连接而成的可执行文件的缺省扩展名为(C )。(A) cpp(B) obj(C) exe(D)dll2 .以下选项中全部都是C+关键字的选项为(B )。(A)cppintbreak(B)intcharnew(C)breakCASEsizeof(D)switchfloa
2、tinteger.以下四个选项中,不能交换变量a和b的值是(B )o(A) a=a-b, b=a+b, a=b-a;(C) t=a, a=b, b=t;(B) t=a, a=b, t=b, b=a;(D) t=b, a=b, b=a;3 .字符串Hello,nHi041”包含的有效字符个数为( D(A) 14(A) 14(B) 13(C) 12(D)104 .以下代码执行的结果是(B )。int x = 3510; double y = x/100* 100;(A) 3510(B) 3500cout y;(C) 3000(D)l5 .int i=3;下面语句执行的循环次数是(B )。do i-
3、; coutiendl; while( i != 1 );(A) 1(A) 1(B) 2(C)(D)无限次7.假设int a=l, b=2, &ra=a, &rb=b;以下正确的语句是7.假设int a=l, b=2, &ra=a, &rb=b;以下正确的语句是B )o(A) &ra=a;(A) &ra=a;(B) rb = ra;(C)&rb=&ra;(D) *rb=*ra;8 .在下面的函数声明中,存在着语法错误的选项是(D2 113 24 、ttinclude void func (int, int, int *);void main() int x, y, z ;func (1, 2,
4、 &x);func (3, x, &y);func (x, y, &z);coutxendlyendlzendl ;)void func (int a, int b, int *c) b-=a ; *c=b-a; 0-6-65 、ttinclude int fl(int a, int b) return a%b*5;int f2(int a, int b) return a*b;int f3 (int(*t)(int, int), int a,int b) return (*t)(a, b); void main() int (*p) (int, int);p=f1 ; coutf3 (p,
5、5, 6)endl ;p=f2 ; coutf3(p, 7, 8)endl ;)25566 、tfincl ude#includevoid fNum (int w) int i;if (w0) for(i=l;i=w;i+) coutsetw(3)w;coutendl;fNum(w-l);) void main() fNum(4) ;44 4 433 32 21四、程序填空题(每空2分,共20分)1、下面程序的功能是:输入三角形的三条边存放在变量a, b和c中,判别它们能否构成三角 形,假设能,那么判断是等边、等腰、还是其它三角形,在横线上填上适当内容。#include void main (
6、) float a, b, c ;coutabc; if ( a+bc & b+ca & c+ab ) (if ( jj ) a=b & b=c cout等边三角形! n;else if ( 2 ) a=b | | a=c | | b=ccout等腰三角形! n;else cout其它三角形! n; )else cout不能构成三角形! n;)2、以下程序功能是输出1000以内个位数为6且能被3整除的所有数。请填空。 ftinclude void main () int i, j ;for ( i=0 ; 【3】 ; i+ )i 100 j = i * 10 + 6 ;if ( 141 ) c
7、ontinue ; j % 3 cout j ;)3、求n (n26)内的所有偶数表示为两个素数之和,图1为输入12的运行结果。补充完整以 下程序。c=6): 126=3+38=3+510 = 3 + 712 = 5 + 7Press any key to continue提示:一个偶数n (n26)可以表示为l+(nT),2+(n-2),3+(n-3), #include #include #include int isprime (int); void main() int num;cout=6) : n;cinnum;for(int n=6; n=num; n+二2)for(int i=
8、3;i=n/2;i+=2)if(【5】) isprime(i) & isprime(n-i)coutsetw(3) nz,=,setw(3) iz,+,setw(3) (n-i) endl;break ;int isprime(int n) int i, sqrtm=(int)sqrt(n);for(i=2; i=sqrtm; i+)if(【6】) return 0 ;n%i=0【7】 ; return 14、以下程序是创立一个动态数组,数组长度由程序运行时输入数据决定。调用随机函数对动态数 组赋初值,并输出动态数组各元素值。请填空。#include#include#includevoid m
9、ain () int n, *p= 8 ;NULLcout Please input n:n; cinn;p二 9 new . intnif(p=NULL) coutzzAllocation faiure n; return;srand(time(O);for( int i=0; in; i+ ) pi=rand()%100; for( 【10 ; ap+n; a+ ) int *a=p cout*a,V ; coutendl;delete p;)五、编程题(20分)1、 (6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息, 要求输入2个正整数,然后显示这个范围的数据的平
10、方和立方值。例如,分别输入整 数2和9,执行效果如图2所示。cE:C+ + C和C+题O7g卷Debug 平方立方根-1! x|请揄入宴1个整数=0 :2请输入翁个整数=筮1个整数:9N聿方立方248392741664525125636216749343864512981729Press any key tocontinueA1图2显示数制对照表#include#includevoid main() int a, b;cout。请输入第1个整数(=0 ):;cina;cout请输入第2个整数( =第1个整数):;cinb;coutsetw(12) Nsetw(12) 平方setw(12)立方e
11、ndl;for (int i=a; i=b; i+)coutsetw(12) isetw(12) i*isetw(12) i*i*iendl;2、(6分)以下程序用随机函数生成两位整数,取M个各不相等的数据,按生成顺序存 放在数组a中。图3是生成20个数据的显示效果。请依题意编写函数insert及填写函数原型。函数原型。ca E:C+C和C+题 0出卷 Debug 性成数,.Jnlttincl ude生成数组:3468801117951299469096693663394954 ?9 旦64 20#include#includePress any key to continue11int in
12、sert (int *ap, int k, int n);函数原型或:int insert(int ap, int k, int n);void main() const int M=20;图3生成数组int n, i=0;int aM = 0;srand(time(0);while (iM) don=rand()%100;while(n10); 生成数据if (insert (a, i, n)i+;把不相同数据插入数组aC+程序设计试卷第13页共92页cout生成数组:z,endl;for(i=l; i=M;i+) coutai,z ; if (i%10=0)coutendl; couten
13、dl;)int insert(int *ap, int k, int n) for(int j=0; jk; j+)滤去相同数if(apj=n) break;if (j=k) apj=n; return 1; 添加数据 return 0;)3、(8分)本程序功能是把一个用拼音输入的名字自动生成6位数字串的密码。生成规 那么是把字母串的最后6位逆序,取每个字母小写的ASCH码值,其除以10的余数为该位的 密码值。当输入名字的字母串缺乏6位,生成时以字母“z”补足。图4是程序的运行效果。 请填写change函数的函数原型并编写函数。#inc1ude#includestruct link char
14、s; link * next;void inputName(link *& h);void outLink(link *h); /change的函数原型void main() link *name二NULL, *code=NULL;cout请输入名字拼音,以#结束:n;i nputName(name);change(code, name);cout生成密码为:n;#includestruct link char s; link * next;void inputName(link *& h);void outLink(link *h); /change的函数原型void main() link
15、 *name二NULL, *code=NULL;cout请输入名字拼音,以#结束:n;i nputName(name);change(code, name);cout生成密码为:n;请输入名字拼音.以“结束:ZhongFuwatt 生成密码为: 797230#Press any key to cont inue1I图4生成密码CA E:C+ + (p-s);while (p-s=a &p-ss=A &p-ss!=#) p-next=h; h=p;p-new link; cin(p-s);void change(link *&hCode, link *h) char d;C+程序设计试卷第14页
16、共92页link *p=NULL;hCode=new link;hCode-next=NULL;p=hCode;d=h-s;for (int i=0;is=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 outLink(link *h) while(h) cout(h-s); h=h-next; coutendl;诚信应考,考试作弊将带来严重后果!C+程序设计试卷考前须知:1.2.考前须知:1.2.考前请将密封线内填写清楚
17、;所有答案请答在试卷的答案栏上;3.考试形式:闭卷;4.本试卷共 五 大题,总分值100分,考试时间120分钟。题号*四五总分得分评卷人)o、单项选择题:(每题2分,共20分)1.结构化程序设计的三种基本控制结构是(A)输入、处理、输出 B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数2 .以下哪个是C+的合法变量名(3 .以下哪个是C+的合法变量名()?A)8dex3. 124 .假设整型变量 int a=2, b=l, c=3,C)l_2aD) intA) 1B) 2d=4;那么条件表达式ab?a:c 2、 3、 4 5 6 7 89 10 二、简答题:(共20分).语句c
18、out yx42x102nx”的显示结果是什么?说明理由。(3分)答:1 .以下程序的输出结果是什么?请说明原因。(2分) int main() unsigned short a=65535;short int b;b=a;cout“ b= b;return 0;)答:C+程序设计试卷第16页共92页.设有说明char a6, * b =a; sizeof (a), sizeof (b)的值各是多少?分析结果原因。 (3分)答:2 .设有说明int a2*3;请写出两个表示数组a最后一个元素地址的表达式(2分)。 答:3 .设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写
19、出fun函数的 原型。(2分)main () double s10 22;int n;I I Ifun(s);答:4 .设有如下定义:struct personchar name10; int age;person class10= “John” ,17,“Paul” ,19“Mary: 18, “Adam 16, :根据上述定义,写出能输出字母M语句。(3分)答:5 .以下语句不能正确输出单链表head的数据元素值,请找出原因。(2分) struct linkint data; link * next; ;link *head, *p;p=head;while(p!=NULL) coutp.
20、 data; p+; 答:C+程序设计试卷第17页共92页6 . 设有函数调用语句array max min (a , n, max, min);功能是由参数max, min返回基 本整型数组a的n个元素中的最大值和最小值。对应的函数原型是什么? (3分)(只 需给出原型,不用写函数定义)答:三、 阅读程序,写出运行结果:(每题4分,共20分)1. #includeusing namespace std;int main () int x, n;x=n=5;x+=n+;coutxnendl;return 0;2. #includeusing namespace std; int main ()
21、 char s6=abcde, *p=s;cout*ppendl;return 0;include using namespace std;int main () int i, j;for( i=l; i=3; i+ ) j=l:while (ji) cout i jendl; j+;)return 0;以下程序的输出的结果是 ttinclude using namespace std; void incre ();int x=3;int main () int i;C+程序设计试卷第18页共92页for (i=l;ix;i+) incre();)void incre () static in
22、t x=l;x*=x+l;cout x;4include 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);coutx , y , z ;return 0;void fun ( int a , int b , int * c ) b+=a ; * c=b-a ; 答案栏:1、2、4、5、 程序填空题:(每空2分,共22分)1 .下面程序的功能是:输入三角形的三条边存放在变量a, b和c中,判别它们能否构成 三角形,假设能
23、,那么判断是等边、等腰、还是其它三角形,在横线上填上适当内容。#include using namespace std;int main () float a, b, c ;coutabc;if ( a+bc & b+ca & c+ab )C+程序设计试卷第19页共92页(A) void f( int a, int)(C) void f(int a, int b=5)(B) void f( int a, int b )(D) void f( int a; int b ).假设有定义语句:int a,p3;那么以下语句中正确的选项是(C )。(A) p=a;(B) pE0=a;(C) p0=&a
24、l 2;(D) pl= &a;.以下代码输出结果为(D )int* arr = new int10; cout arr0;(A)编译时将产生错误(B)编译正确,运行时将产生错误(C)输出零(D)输出值不确定. char* sl= 123,*s2=34”;那么strcmp(sl, s2)的值为以下哪个(B )。(A) 1(B)-l(C) ”12334(D) H34n.假设有以下声明和定义,struct worker那么以下错误的引用是( D )。 int no ; char name 20 ; w, *p = &w ;(A) w.no=3011;(B) p-no=3011;(C) (*p).no
25、=3011;(D) *p.no=3011;.要求翻开文件D:file.dat,可写入数据,正确的语句是(D )。(A) ifstream infile( C6D:file.dat, ios:in );(B) ifstream infile( D:file.daf ios:in);(C) ofstream inflle( D:flle.dat,ios:out);(D) fstream infile( D:file.dat, ios:in|ios:out);二、简答题(共12分)1、(3分)有以下语句:int a = 63; double b = 3.456789 ;coutsetfill(,#,
26、)setw(6)hexa,n,setprecision(5) bendl;输出显示什么?#3f3.45682、(3分)有说明int A35;写出两个不同形式的表示元素值的表达式。Al3* (Al+3)* (*(A+l)+3)3. (3 分)设有说明 double a6= 0 , *b = new double 6 ; sizeof (a), sizeof (b) 的值各是多少?并分析结果原因。4844、(3分)设有函数调用语句Count (A , N, right, negative);功能是由参数right, negative返回统计数组A的N个元素中正整数和负整数的个数。对应的函数原型是什
27、么?void Count( int * , int, int &, int &);三、读程序写结果(共6题,每题45分,共28分)1、(4 分):#includeif (【1】)cout等边三角形! n;else if ( 12 ) cout等腰三角形! n; else cout其它三角形! n;else cout(不能构成三角形! n; return 0;2.以下程序功能是打印100以内个位数为6且能被3整除的所有数。ttinclude using namespace std; int main () int i , j ;for ( i = 0 ;3; i + + ) j = i * 10
28、 + 6 ;if (4) continue ;cout j ” ;return 0;3.以下程序实现两个变量的值互换。ttinclude using namespace std;void swap(int *, int *); int main () int a=3, b=8;swap(【5】);couta=b=,b6)内的所有偶数表示为两个素数之和,以下图为输入16的运行结果。补充完整 以下程序。提示:一个偶数n (nN6)可以表示为l+(n-1), 2+(n-2), 3+(n-3)ttinclude using namespace std #includettinclude using n
29、amespace std #includeC+程序设计试卷:情输入一个偶数N (_N=6):166 =8 =10=12 =14=16 = 11* 13Pressanykey to continue#includeint isprime(int);int main () int num, i, n;cout=6):; cinnum;for( n=6; n=num; n+=2)for( i=3;i=n/2;i+=2)if(【7】)coutsetw (3) n/,=,zsetw(3) i,/ +setw(3) (n-i) endl; break;return 0;int isprime(int m)
30、 int i, k=sqrt(m);for(i=2; i=k; i+)if(【8】 ) return 0 ;9 5.下面是一个类的测试程序,其执行结果为:50-12=38请将程序补充完整。#includeusing namespace std;class Test int m, n;public:void init(int, int);void print (););void Test:init (int i, int j) 1101)void Test:print () 【11int main() Test a;C+程序设计试卷第21页共92页a. init (50, 12);a. prin
31、t ();return 0;a. init (50, 12);a. print ();return 0;答案栏:(1)(2) (3) (4) (5) (6) (7) (8) (9) (10) (11)五、1.编程题:(18分)(6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息, 要求输入2个正整数,然后显示这个范围的数据的平方和立方值。例如,分别输入 整数1和10,执行效果如以下图所示。答:C+程序设计试卷第22页共92页2. (6分)以下程序求一维数组元素的最大值,并返回此值。请依题意编写函数f及填写函数原型。 ttinclude using namespace std
32、; const int n=10; 函数原型 int main() int an, i, max; for(i=0; iai; max=f (a, n); cou t ,max=z, max; return 0; 答:C+程序设计试卷第23页共92页(6分)以下程序的功能是别离一个浮点数的整数局部和小数局部。程序用字符串存放输入数据,执行效果如下图。根据main函数,请写出separate函数的原型和实现定 义。#includeusing namespace std;/separate函数原型int main () char s20;int i=0, d=0;couts;separate(s,
33、 i, d); 调用函数couts整数局部是:i(endl;couts小数局部是:dendl; return 0;int main () char s20;int i=0, d=0;couts;separate(s, i, d); 调用函数couts整数局部是:i(endl;couts小数局部是:dendl; return 0;c D:c 07WSDebugchar 1 .ex(情输入一勺日息数:102.35876整数局部是:102102.35876小数局部是:-ln|x|102.3587635876Press any key to continuedata; p=p-next;void ar
34、rayjnax_min(int *, int , int *, int *);八、 阅读程序,写出运行结果:(每题4分,共20分)1066. aabcde2, 13,13,22,66, 6,6九、 程序填空题:(每空2分,共22分)a= =b & b= =c1. a= =b | a= = c | b= =ci 102. j % 3&a, &b3. *xisprime(i) & isprime(n-i)4. ! ( m%i)return 1;5. m=i;n=j;coutm,-,/n,/=,/m-nendl;十、编程题:(18分)ttinclude using namespace std;#in
35、clude int main () int a, b, i;cout*请输入第一个整数0-0):; cina;cout请输入第二个整数。第一个整数):; cinb;C+程序设计试卷第25页共92页coutsetw(10) z,N/zsetw(10) 平方setw(10) 立方endl; for ( i=a;i=b;i+)coutsetw(10)isetw(10)i*isetw(10)i*i*iendl;return 0;ttinclude using namespace std;const int n=10;int f (int *, int) ; f 函数原型int main()int an
36、, i, max;for(i=0; iai;max=f (a, n);cout,max=,max;return 0;int f (int *a, int n)int i,max;max=a0;for (i=l;imax) max=ai;return max;)#includeusing namespace std;void separate (char *, int & , int &) ; /separate 函数原型int main。诚信应考,考试作弊将带来严重后果!C+程序设计试卷P倒华南理工大学期末考试考前须知:1.考前请将密封线内填写清楚;2 .所有答案请答在试卷的答案栏上;.考试形式:闭卷;3 .本试卷共 五 大题,总分值100分, 考试时间120分钟。C+程序设计试卷第26页共92页题号.*四五总分得分评卷人十一、单项选择题:(每题2分,共