}
10.有函数原型
doublefunction(int,double);
函数function的返回值类型是什么?
函数的类型是什么?
使用typedef定义函数的类型。
有函数调用语句
x=function(10,(2(0.314+5));
其中的括号“()”与函数原型中括号有什么语义区别?
【解答】
函数function的返回值类型是double
函数类型是:
double(int,double)
可以定义为:
typedefdoublefunType(int,double);
函数调用function(10,(2*(0.314+5))中,外层括号表示调用函数匹配的实际参数表,里面的两层括号是表达式运算。
11.请分析以下各语句的意义。
intfun();
int(pf)();
fun();
pf=fun;
pf();
【解答】
int*fun();//函数原型声明。
fun是返回int*类型,没有参数的函数
int*(*pf)();//声明指针变量。
pf是指向函数的指针,函数类型为int*()
fun();//调用函数语句
pf=fun;//向指针变量赋值。
函数指针pf指向函数fun
pf();//用指针变量间址调用函数
3.4编程题
1.已知
,其中,sh为双曲正弦函数,即
。
编写一个程序,输入x的值,求y的值。
【解答】
#include
#include
usingnamespacestd;
doublesh(doublet);
intmain()
{
doublex,y;
cout<<"x=";
cin>>x;
y=sh(1+sh(x))/(sh(2*x)+sh(3*x));
cout<<"y="<}
doublesh(doublet)
{return(exp(t)-exp(-t))/2;}
2.输入m、n和p的值,求s=
的值。
注意判断运算中的溢出。
【解答】
usingnamespacestd;
doublef(longk,longnum);
intmain()
{
longm,n,p;doubles,f1,f2,f3;
cout<<"m,n,p=";
cin>>m>>n>>p;
f1=f(1,m);
f2=f(3,n);
f3=f(5,p);
if(f1&&f2&&f3)
{
s=(f1+f2)/f3;
cout<<"s="<
}
else
cout<<"溢出!
\n";
}
doublef(longk,longnum)
{
longi;
doublesum=0;
for(i=1;i<=num&&sum<2147483647;i++)
{
sum=sum+pow(double(i),double(k));
}
if(i<=num)
return0;//溢出时返回
returnsum;
}
3.输入a、b和c的值,编写一个程序求这三个数的最大值和最小值。
要求:
把求最大值和最小值操作分别编写成一个函数,并使用指针或引用做为形式参数把结果返回main函数。
【解答】
(1)使用指针参数
#include
usingnamespacestd;
voidfmaxmin(double,double,double,double*,double*);
intmain()
{
doublea,b,c,max,min;
cout<<"a,b,c=";
cin>>a>>b>>c;
fmaxmin(a,b,c,&max,&min);
cout<<"max="<cout<<"min="<}
voidfmaxmin(doublex,doubley,doublez,double*p1,double*p2)
{
doubleu,v;
if(x>y)
{u=x;v=y;}
else
{u=y;v=x;};
if(z>u)u=z;
if(z*p1=u;
*p2=v;
}
(2)使用引用参数
#include
usingnamespacestd;
voidfmaxmin(double,double,double,double&,double&);
intmain()
{
doublea,b,c,max,min;
cout<<"a,b,c=";
cin>>a>>b>>c;
fmaxmin(a,b,c,max,min);
cout<<"max="<cout<<"min="<