第五次实验答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{return a*b; }
运行结果:
8
(7)#include <iostream.h>
#include <string.h>
void fun(char string[ ]);
void main( )
{char str[20]="this is a book";
cout<<str<<endl;
fun(str);
C.auto型变量D.函数形参
答案:B
(7)在C++语言中,关于参数默认值的描述正确的是()。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
答案:B
(8)对于一个功能不太复杂,并且要求加快执行速度,选用(A)合适。
A.内联函数B.重载函数C.递归调用D.嵌套调用
答案:A
(9)预处理命令以()开头。
A.* B.# C./ D.:答案:B
(10)对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组B.数组名作函数的参数,主调函数和被调函数共用一段存储单元C.数组名作参数时,形参定义的数组长度不能省略
A.参数类型B.参数个数C.函数类型D.函数名
答案:C
(5)在参数传递过程中,对形参和实参的要求是()。
A.函数定义时,形参一直占用存储空间B.实参可以是常量、变量或表达式
C.形参可以是常量、变量或表达式D.形参和实参类型和个数都可以不同
答案:B
(6)下列各类变量,哪个不是局部变量()。A.register型变量B.外部static变量
cout<<sum(b,3,4)<<endl;
}
8.编写函数利用递归的方法计算x的n阶勒让德多项式的值。该公式如下:
1(n0)
P
X(x)
x (n1)
((2n-1)xPn-1(x)-(n-1)P
n-2(x))/n(n1)
#include<iostream.h>
void main()
{int x,n;
float p(int,int);
{int i;
for(i=2;i<n;i++)
array[i]=array[i-1]+array[i-2];
}
运行结果:
581321345589144233377
(4)#include <iostream.h>
#define M 20
#define N 10
#define L(r) r*r
void main( )
4.分别利用非递归和递归的方法编写函数求斐波那契数列第n项。
分析:斐波那契数列具有这样的特点,数列的第一项和第二项都等于1,从第三项开始每项的数值都等于它前面两项之和。
非递归:
#include<iostream.h>
float feb(int n0,int n1)
{ return n0+n1;}
void main()
cout<<"input n & x:"<<endl;
cin>>n; cin>>x;
cout<<n<<' '<<x<<endl;
cout<<"pn(x)=:"<<p(n,x);
}
float p(int n,int x)
{if(n==0) return(1);
else if(n==1) return(x);
{int a=1,b=1,c,i;
cout<<a<<'\t'<<b<<'\t';
for(i=3;i<=20;i++)
{c=feb(a,b);cout<<c<<'\t';
if(i%5==0) cout<<endl;
a=b;b=c;
}}
递归:
#include<iostream.h>
float feb(int n)
运行结果:
10
5
(2)#include <iostream.h>
void fun( );
void main( )
{int i;
for(i=0;i<5;i++) fun();
}
void fun( )
{static int m=0;
cout<<m++<<endl;
}
运行结果:
0
1
2
3
4
(3)#include <iostream.h>
A.任意B.int C.void D.无
答案:C
(3)关于函数返回值的的描述正确的是()。
A.函数返回表达式的类型一定与函数的类型相同
B.函数返回值的类型决定了返回值表达式的类型
C.当函数类型与返回值表达式类型不同,将对返回值表达式的值进行类型转换
D.函数返回值类型就是返回值表达式类型
答案:C
(4)下列哪个不是重载函数在调用时选择的依据()。
}
1.选择题
(1)以下正确的说法是()。
A.用户若需要调用标准函数,调用前必须重新定义
B.用户可以直接调用所有标准库函数
C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
答案:D
(2)如果一个函数无返回值,定义时它的函数类型应是()。
D.函数返回值类型决定了返回值表达式的类型
答wenku.baidu.com:B
分析:因为函数的返回值类型与返回值表达式的类型可能不同,在不同时将返回值表达式类型自动转换为函数返回值的类型。
例题4:下面程序的输出结果为()。
#include”iostream.h”
f(int a)
{int b=0;
static int c=3;
b++;c++;
for(i=0;i<n/2;i++)
{temp=s[i];s[i]=s[n-i-1]; s[n-i-1]=temp;}
cout<<"Now,string:"<<endl;
puts(s);
}
6.编写函数实现字符串拷贝功能。
#include<iostream.h>
#include<string.h>
void main()
}}
5.编写函数将字符串按逆序存放。
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{int i,n;
char s[100],temp;
cout<<"input string:"<<endl;
gets(s);
n=strlen(s);
return(a+b+c);
}
void main( )
{int a=2,I;
for(I=0;I<3;I++)
cout<<f(a)<<endl;
}
A.7 B.7 C.7 D.7
8 7 10 9
9 7 13 11
答案:A
分析:注意静态局部变量c的特点:在编译时候只赋一次初值,以后每次调用函数时不再重新赋初值而是保留上次函数调用结束时的值,故本题选A。
cout<<str<<endl;
}
void fun(char string[ ] )
{int i;
for(i=0;i<strlen(string);i++)
if (string[i]>='a'&&string[i]<='z')string[i]-=32;
}
运行结果:
this is a book.
THIS IS A BOOK.
else num=-num1;
return num;
}
int fabnum(int num2)
{int num;
if(num2>=0) num=num2;
else num=-num2;
}
int add(int x,int y)
{return x+y; }
运行结果:
12
16
(6)#include <iostream.h>
int fun(double a,double b);
void main( )
{cout<<fun(2.5,3.5)<<endl; }
int fun(double a,double b)
例题
A.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
B.函数的调用可以在任意函数之间进行,只要有需要
C.一个函数可以自己调用自己
D.函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示
答案:A
分析:因为在C++中程序从主函数开始是正确的,但并未规定函数的调用只能发生在主函数和其他函数之间。
else
return(((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n);
}
9.利用重载编写求整数绝对值和求实数绝对值两个函数。
#include<iostream.h>
float fabnum(float num1)
{ float num;
if(num1>=1e-6) num=num1;
#include<iostream.h>
int sum(int a[][4],int n,int m)
{ int p=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
p+=a[i][j];
return p;
}
void main()
{ int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
{ cout<<L(M)<<endl;
cout<<L(N+N)<<endl;}
运行结果:
400
120
(5)#include <iostream.h>
int add(int x,int y=8);
void main( )
{int a=4;
cout<<add(a)<<endl;
cout<<add(a,add(a))<<endl;
例题2:关于函数的声明和定义正确的是()。
A.函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确
B.函数的定义和声明可以合二为一,可以只有函数定义即可C.函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略
D.函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义
else I=3;
return I;}
void main( )
{ int I;
cout<<”请输入一个字符:”;
cin>>ch;
I=fun(ch);
If(I==1)
cout<<”是小写字母!”<<endl;
else if(I==2)
cout<<”是大写字母!”<<endl;
else cout<<”是其他字符!”<<endl;
{ char s1[80],s2[80];
int i;
cout<<"Input s2:"<<endl;
cin>>s2;
for(i=0;i<=strlen(s2);i++) s1[i]=s2[i];
cout<<"s1:"<<s1<<endl;
}
7.编写函数利用数组名作参数计算数组arr[3][4]所有元素的和。
{ if(n==0 ) return 1;
else if(n==1) return 1;
else return feb(n-1)+feb(n-2);
}
void main()
{ for(int i=0;i<20;i++)
{cout<<feb(i)<<'\t';
if(i%5==4) cout<<endl;
例题5:编写一个函数来检验输入的一个字符是大写字母还是小写字母或不是26个英文字母。
分析:本题要掌握判断字符是大写或者小写字母的方法,程序代码如下:
#include”iostream.h”
char ch;
fun(char ch)
{int I;
if((ch>=’a’)&&(ch<=’z’))
I=1;
else if((ch>=’A’)&&(ch<=’Z’)) I=2;
#include <iomanip.h>
void fun(int array[ ],int n);
void main( )
{ int a[10]={5,8};int i;
fun(a,10);
for(i=0;i<10;i++)
cout<<setw(4)<<a[i];
cout<<endl;
}
void fun(int array[ ],int n)
D.数组名作参数,不能改变主调函数中的数据
答案:B
2.分析程序并写出结果
(1)#include <iostream.h>
void fun( );
int n=5;
void main( )
{int n=10;
cout<<n<<endl;
fun();
}
void fun( )
{cout<<n<<endl; }
答案:C
分析:函数的声明并非必须,可以只要函数定义而不要声明,但要注意符合一定条件,函数不可嵌套定义。
例题3:在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。
A.函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B.函数返回值的类型就是返回值表达式的类型
C.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
相关文档
最新文档