}
(12)下列函数的返回类型为( )。
A. void B. float C. int D. 无法确定 fun(void) { float x=3.0,y; y=x*x/2; return (y); }
(13)下列程序的输出结果为( )。
A. x=15 B. x=17 C. x=23 D. x=25 #include
void main() { int x=3; int a=4; x=x+fun(a); cout<<\}
参考答案:
(1)B (2)C (3)B (4)D (5)B (6)C (7)C (8)B (9)C (10)C (11)D (12)C (13)C
3.简答题
(1)在C++中,函数定义的格式是怎样的?
(2)什么是函数的声明?函数声明和函数定义有什么区别?是否必须要进行函数的声明?
(3)什么是内联函数?引入内联函数的目的是什么? (4)什么是函数重载?函数重载的原则是什么? (5)函数的嵌套调用应注意什么? (6)函数的递归调用的步骤是什么? (7)什么是局部变量?什么是全局变量? (8)在C++中,如何使用系统函数? 参考答案:
(1)类型 函数名(形参表)
{
语句序列
}
(2)函数原型又称函数声明,用来告诉编译器函数的名称、函数的返回类型、函数要接收的参数个数、参数类型和参数顺序,编译器用函数原型验证函数调用。在定义函数之前常用函数原型加以说明。
函数原型通常位于程序代码的开始处。在函数原型说明中也可以不给出参数名,只给出类型。
如果函数调用在函数定义之前则必须声明。若在后则可以不用声明。 (3)内联函数是在函数名第一次出现时在函数名之前冠以关键字inline。在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换。
使用内联函数,加快了程序的执行速度,节省程序运行时的开销。 (4)函数重载是指同一个函数名可以对应着多个不同函数的实现。
原则:函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码。确定函数时,编译器是通过函数的参数个数、参数类型和参数顺序来区分的。也就是说,进行函数重载时,要求同名函数参数个数不同、参数类型不同或参数顺序不同。否则,将无法确定是哪一个函数体。
(5)在使用函数的嵌套调用时要注意函数的返回地址,在函数体执行完毕后,一定要返回调用该函数的主调函数,不能出现越级返回的情况。
(6)第一阶段:递推。将原问题不断分解为新的子问题,逐渐从未知向已知递推,最终达到已知的条件,即递归结束的条件,这时递推阶段结束。
第二阶段:回归。从已知条件出发,按照递推的逆过程,逐一求值回归,最后达到递归的开始处,结束回归阶段,完成递归调用。
(7)在函数或者类内说明的变量是局部变量。全局变量是在函数和类外部定义的变量。 (8)C++将所提供的系统函数的说明分别放在不同的头文件中,即.h文件,在程序中使用系统函数时,要在程序开始处说明函数所在的头文件名。
4.编程题
(1)从键盘输入10个浮点数,求其和及其平均值。要求写出其和及平均值的函数。 (2)编写函数fun,函数首部为double fun(int n),其功能是计算S??i!的值,并通过
1n函数值返回主调函数。
(3)输入一个年份,判断是否是闰年。
(4)写出一个函数,使从键盘输入的一个字符串反序存放,并在主函数中输入、输出该字符串。
(5)编写一个函数,其功能是:输入全班学生的成绩,以负数结束输入,统计学生人数,作为函数值返回主调函数,并计算平均分,通过函数ave返回主调函数。
参考答案: (1)void sa()
{ float x,sum=0,ave=0; cout<<\请输入10个符点数:\ for(int i=0;i<10;i++) { cin>>x; sum=sum+x; } ave=sum/10;
cout<<\个符点数的和为:\平均值为:\}
(2)double fun(int n)
{ int sum=0,fac=1; for(int i=1;i<=n;i++) { fac=fac*i; sum=sum+fac; } return(sum); }
(3)void leap(int year)
{ int flag; if(year%4==0) if(year0==0) if(year@0==0) flag=1; else flag=0; else flag=1; else flag=0;
if(flag) cout< (4)#include void inverts() { char ch; cin>>ch; if(ch=='0') return; else inverts(); cout< void main() { cout<<\请输入字符串,输入0结束:\ inverts(); cout< (5)#include int total(float &ave) { float score; float sum=0; int n=0; cout<<\请输入全班学生成绩,以负数结束\cin>>score; do { n=n+1; sum=sum+score; cin>>score; }while(score>0); ave=sum/n; return n; } float ave() { float average; cout<<\人数为:\ return average; } void main() { cout<<\平均值为:\} 第4章 数组 1.填空题 (1)若定义int a[8]; 则a数组元素下标的下限是___________,上限是___________。 (2)若定义float b[3][4]; 则b数组中含有_________ 个 __________类型的数组元素。 (3)在C++中二维数组的存放顺序为_______________。 (4)要使一个数组a[5]中全部元素的值为0,可以定义为_______________。 (5)以下程序段为数组a中所有元素输入数据,请填空。 void main() { int i,a[5]; for(i=0;i<5;i++) cin>>___________; } (6)以下程序按2行3列输出二维数组,请填空。 #include int b[2][3]={1,2,3,4,5,6},i,j; for(i=0; _________;i++) { for(j=0; _________;j++) cout< } } (7)下列函数的功能是:将数组a中n个元素逆序存放,请填空。 void invert(int a[],int n) { int i=0,j=n-1; while( _________) { int t; t=a[i]; ________; a[j]=t; i++; _________; } } (8)已知整数数组b[2][5]={{7,15,2,8,20},{12,25,37,16,28}},求数组中所有元素的最大值,请填空。 #include