C++高级编程练习题.docx
- 文档编号:27283516
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:55
- 大小:26.22KB
C++高级编程练习题.docx
《C++高级编程练习题.docx》由会员分享,可在线阅读,更多相关《C++高级编程练习题.docx(55页珍藏版)》请在冰豆网上搜索。
C++高级编程练习题
1C++语言基础及过程化程序设计
1.1基础概念
1.函数声明和函数定义有什么区别?
答:
1)函数声明是函数的原型,强调函数如何被使用,不包含函数的实现代码;2)函数定义给出函数的实现代码。
2.constchar*p1;char*constp2;的区别
答:
1)const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量;2)const位于星号的右侧,const用来修饰指针本身,即指针本身是常量。
3.delete与delete[]区别
答:
delete只会调用一次析构函数,而delete[]会调用动态分配的多个对象的析构函数
4.解释堆和栈的区别
答:
1)栈:
由编译器自动分配释放,存放函数的参数、局部变量等。
通常在超出作用域后由系统自动释放。
2)堆:
一般由程序员负责分配与释放,若程序员不释放,占用的内存直到程序结束才由OS回收。
5.在什么时候需要使用“常引用”?
答:
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
6.全局变量和局部变量在内存中的区别。
答:
1)全局变量储存在静态数据区,程序加载时分配并初始化,程序结束时释放;2)局部变量在栈中,进入变量作用域后分配,超出其作用域后释放;3)全局变量不初始化会执行缺省初始化,如整型变量缺省初始化为0,局部变量不初始化不会执行缺省初始化,往往为垃圾值。
7.简述内存的分配方式。
答:
1)静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。
2)栈上分配,函数内的局部变量和形参在栈上分配。
3)堆上分配,动态分配,用new分配内存,用delete来释放内存。
8.指针的几种典型应用情况。
int*p[n];-----指针数组,每个元素均为指向整型数据的指针。
int(*p)[n];------指向一维数组的指针,这个一维数组含有n个整型数据。
int*p();----------返回指向整型指针的函数。
int(*p)();------指向函数的指针,要求函数无参并返回整型。
9.说明0、’\0’、’0’、“0”的区别
答:
0表示整数常量,值为0;’\0’表示ASCII码值为0的字符常量;’0’表示ASCII码值为48的字符常量;“0”为字符串常量,其中包含’0’和’\0’两个字符。
10.说明下面程序中存在的问题
#include
intmain()
{
intarr[10],*p=arr;
inti;
for(;p cin>>*p; for(;a cout<<*arr<<‘0’; return0; } 答: arr为数组名,对应地址不可修改,不能应用++arr运算。 11.有如下定义,请写出访问a[2][3]元素的不同方法 inta[4][5]; int(*p)[5]=a; 答: a[2][3]、p[2][3]、*(a[2]+3)、*(p[2]+3)、*(*(a+2)+3)、*(*(p+2)+3) 阅读程序 1.写出下面程序的运行结果。 #include usingnamespacestd; intmain() { doublenumOne=2.5; intnumTwo=3; doublequotient=numOne/2; cout<<"Quotient: "< quotient=numTwo/2; cout<<"Quotient: "< return0; } 2.写出下面程序的运行结果。 #include usingnamespacestd; intmain() { intnumber=103; intdigit,tens,hundreds; digit=number%10; tens=(number/10)%10; hundreds=(number/100)%10; cout<<"Hundreds: "< "<< tens<<",Digit: "< return0; } 3.运行下面的程序3次,分别输入90、78、60,写出每次程序执行的输出结果。 #include usingnamespacestd; intmain() { intgrade; cout<<"Enteragrade(1-100): "; cin>>grade; if(grade>=85) cout<<"Excellent\n"; elseif(70<=grade<85) cout<<"Pass\n"; else cout<<"Fail\n"; return0; } 4.写出下面程序的运行结果。 #include usingnamespacestd; boolcheck(intscore,intbaseLine) { if(score>=baseLine) returntrue; returnfalse; } boolcheck(intscore,intbaseLine=60); intmain() { intscore=65; if(check(score)==true) cout<<"Passed! \n"; else cout<<"Failed! \n"; if(check(score,70)==true) cout<<"Passed! \n"; else cout<<"Failed! \n"; return0; } 5.写出下面程序的运行结果。 #include usingnamespacestd; intfun(inta); doublefun(doublea); charfun(chara); intmain() { cout< cout< cout< cout< return0; } intfun(inta){returna/2;} doublefun(doublea){returna/2;} charfun(chara) { charresult=a; if(a>='a'&&a<='z') result=a-32; if(a>='A'&&a<='Z') result=a+32; returnresult; } 6.写出下面程序的运行结果。 #include usingnamespacestd; intgcd(intm,intn) { if(n==0) returnm; returngcd(n,m%n); } intmain() { cout<<"1: "< cout<<"2: "< return0; } 7.写出下面程序的运行结果,假定输入"Hello_123"。 #include usingnamespacestd; intmain() { charword[50]; cout<<"Enteraword: "; cin>>word; for(inti=0;word[i]! ='\0';++i) { if(word[i]>='a'&&word[i]<='z') word[i]-=32; } cout<<"Uppercase: "< return0; } 8.写出下面程序的运行结果,假定输入"Hello123_World"。 #include usingnamespacestd; intmain() { charword[50]; cout<<"Enterastring: "; cin>>word; intpos=0; for(inti=0;word[i]! ='\0';++i) { if(word[i]<'0'||word[i]>'9') { word[pos]=word[i]; ++pos; } } word[pos]='\0'; cout<<"result: "< return0; } 9.写出下面程序的运行结果。 #include usingnamespacestd; intmain() { inti,j; for(i=0;i<5;i++) { for(j=i;j<5;j++)cout<<"*"; cout< } return0; } 10.写出下面程序的运行结果。 #include usingnamespacestd; intsum(inta,intb=1,intc=3) { returna+b+c; } intmain() { intsum(inta,intb=3,intc=4); cout< (2)< cout< cout< return0; } 11.写出下面程序的运行结果。 #include usingnamespacestd; char&elem(char*s,intn) { returns[n]; } intmain() { charstr[]="HelloWorld"; elem(str,1)='A';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 高级 编程 练习题