下面的程序使用了函数指针,其运行结果是______。

题目
下面的程序使用了函数指针,其运行结果是______。
#include<stdio.h>#include<math.h>int f1(int a){return a*a;}int f2(int a){return a*a*a;}void main( ){int x=3,y1,y2,y3,y4;f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf("y1=%d,y2=%d,y3=%d,y4=%d\n",y1,y2,y3,y4);}

A.y1=27,y2=9,y3=9,y4=27
B.y1=9,y2=9,y3=27,y4=27
C.y1=9,y2=27,y3=9,y4=27
D.y1=27,y2=27,y3=9,y4=9
参考答案和解析
答案:B
解析:
本题考查C语言函数指针的基础知识。仔细阅读程序,正确理解函数指针并将参数正确代入函数,可得到y1=9,y2=9,y3=27,y4=27的结果。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 32 ) 虚函数支持多态调用 , 一个基类的指针可以指向派生类的对象 , 而且通过这样的指针调用虚函数时 ,

被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:

#include

using namespace std;

class Base

{

public:

virtual void f () {cout<< ” f0+ ” ;}

void g () {cout<< ” g0+ ” ;}

};

class Derived:public Base

{

public:

void f () {cout<< ” f+ ” ;}

void g () {cout<< ” g+ ” ;}

};

int main ()

{

Derived d;

Base*p= & d;

p->f () ; p->g () ;

return 0:

}

运行时输出的结果是

A ) f+g+

B ) f0+g+

C ) f+g0+

D ) f0+g0+


正确答案:C

第2题:

下面的程序的运行结果是__________func main() {x := 1{ x := 2 fmt.Print(x)}fmt.Println(x)}


参考答案:21

第3题:

C语言中rewind函数使位置指针回到文件的开头位置,而fseek函数使位置指针移到指定的位置。()

此题为判断题(对,错)。


参考答案:正确

第4题:

以下程序的运行结果是______。 include include template class TA

以下程序的运行结果是______。

include<iostream.h>

include<math.h>

template<class T>

class TAdd//定义类模板TAdd,T为类型

{

Tx,y;

public:

TAdd (Ta,Tb) {x=a,y=b;) //构造函数

Tadd() { retum x+y;}//成员函数

};

void main( )

{

TAdd<int>A (5,6);


正确答案:s1=11 s2=8.2
s1=11 s2=8.2

第5题:

下面的程序的运行结果是__________for i := 0; i < 5; i++ {defer fmt.Printf("%d ", i)}


参考答案:4 3 2 1 0

第6题:

虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序; #include <iostream> using namespace std; class Base { public: virtual void f() {cout<<"f0+";} void g() {cout<<"g0+";} }; class Derived: public Base { public: void f() {cout<<"f+";} void g() {cout<<"g+";} }; int main() { Derived d; Base *p=&d; P->f(); P->g(); return 0; }运行时输出的结果是

A.f+g+

B.f0+g+

C.f+g0+

D.f0+g0+


正确答案:C
解析:本题考查的知识点是:虚函数与多态性。在题目的主函数中,首先声明了一个派生类对象d,然后声明了一个基类指针p指向它。接着通过该基类指针,分别调用了f()函数和g()函数。由于在基类Base的定义中,f()函数使用了virtual关键字,因此它是虚函数,即具有多态性,所以通过指针p调用的f()是派生类Derived中定义的 f()。而g()不是虚函数,所以通过指针p调用的是Base中定义的g()。由此可见,最终输出的结果是“f+g0+”。故本题应该选择C。

第7题:

下面的程序的运行结果是__________func main() { x := []string{"a", "b", "c"}for _, v := range x { fmt.Print(v)}}


参考答案:abc

第8题:

已有函数fun(a,b),为了使函数指针变量P指向函数fun,则使用的赋值语句是______。


正确答案:p=fun
p=fun 解析:函数入口地址称为函数的指针。可以使用指针变量指向fun函数,然后通过该指针变量调用此函数。赋值语句就是将函数fun的入口地址赋值给指针变量P,只需将函数名赋给P,不能写成“p=fun(a,b)”形式。函数名就代表了函数入口地址,即p=fun。

第9题:

窗体上有一个名称为Command1的命令按钮,其单击事件过程及有关函数过程如下: Private Sub Command1 Click( ) Dim n As Integer n=add(5,10) Print n End Sub Function add(v1 As Integer,v2 As Integer,Optiona1 v3)As Integer If Not IsMissing(v3)Then add=v1+v2+v3 Else add=v1+v2 End If End Function 运行程序,单击命令按钮,以下叙述中正确的是( )。

A.程序不能正常运行,因为函数add的参数定义有错

B.程序不能正常运行,因为函数定义与函数调用语句的参数个数不匹配

C.程序能正常运行,结果是在窗体上显示15

D.程序能正常运行,结果是在窗体上显示510v3


正确答案:C
C。【解析】本题考y,-add方法里IsMissing的v3,v3是一个可选项,用来判断这个参数是否存在。根据程序语句,当输入3个参数时,就是3个参数求和,输入2个参数时是两个数求和,题目中是2个参数,因此是2个参数求和,不会报错。

第10题:

运行下面的程序,输入字符串Microsoft Visual Studio,则程序的执行结果是()。includemai

运行下面的程序,输入字符串Microsoft Visual Studio,则程序的执行结果是( )。 #include<stdio.h> main() {char Chr[20]; scanf("%s",&Chr); printf("%s\n”,Chr); }

A.Microsoft Visua1 Studio

B.M

C.Microsoft

D.MicrosoflVisualStudio


正确答案:C
解析:当从键盘输入Microsoft Visual studio时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将Microsoft这9个字符送到了字符数组str中,并在其后自动加上结束符“\0”。

更多相关问题