c语言指针求解!!!!!!!!!!
#include<stdio.h>intf(int);inta(int(*pf)(int));intmain(void){printf("%d\n",a(f));retu...
#include <stdio.h>
int f(int);
int a(int (*pf)(int ));
int main(void){
printf("%d\n",a(f));
return 0;
}
int f(int i){
return i*i+i-12;
}
int a(int (*pf)(int)){
int n=0;
while(pf(n))
++n;
return n;
}
改程序运行结果为什么是3,求解释!!!! 展开
int f(int);
int a(int (*pf)(int ));
int main(void){
printf("%d\n",a(f));
return 0;
}
int f(int i){
return i*i+i-12;
}
int a(int (*pf)(int)){
int n=0;
while(pf(n))
++n;
return n;
}
改程序运行结果为什么是3,求解释!!!! 展开
5个回答
展开全部
#include <stdio.h>
int f(int);
int a(int (*pf)(int ));
int main(void)
{
printf("%d\n",a(f)); //结果就是3
return 0;
}
int f(int i) {
return i*i+i-12; //(i-3)(i+4)
}
int a(int (*pf)(int)) //函数a,参数函数指针,参数是int
{
int n=0;
while(pf(n)) //当pf(n) = 0时结束循环,也就是说此时n = 3
++n; //由于是++n,是先加然后给n值,当上一次给的n为2时,运行这条指令侯为3,然后结束循环,此时n = 3,就返回3
return n; //返回3
}
你的错主要是没有区分n++(先用n值,然后n+1)和++n(先n+1然后使用n值)
int a(int (*pf)(int))既然是指针,我给你说怎么看嘛,显示a后面一个括号,表示函数。
返回int,参数也是个int,里面pf前面一个*表示是一个指针,后面有个括号,表示函数,也就是函数指针
谢谢采纳!
int f(int);
int a(int (*pf)(int ));
int main(void)
{
printf("%d\n",a(f)); //结果就是3
return 0;
}
int f(int i) {
return i*i+i-12; //(i-3)(i+4)
}
int a(int (*pf)(int)) //函数a,参数函数指针,参数是int
{
int n=0;
while(pf(n)) //当pf(n) = 0时结束循环,也就是说此时n = 3
++n; //由于是++n,是先加然后给n值,当上一次给的n为2时,运行这条指令侯为3,然后结束循环,此时n = 3,就返回3
return n; //返回3
}
你的错主要是没有区分n++(先用n值,然后n+1)和++n(先n+1然后使用n值)
int a(int (*pf)(int))既然是指针,我给你说怎么看嘛,显示a后面一个括号,表示函数。
返回int,参数也是个int,里面pf前面一个*表示是一个指针,后面有个括号,表示函数,也就是函数指针
谢谢采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int n=0;
while(pf(n))
++n;
第一次调用 pf(0) return 0*0+0-12=-12 while()条件不为0 ++n n=1
第二次调用 pf(1) return 1*1+1-12=-10 while()条件不为0 ++n n=2
第三次调用 pf(2) return 2*2+2-12=-6 while()条件不为0 ++n n=3
第四次调用 pf(3) return 3*3+3-12=0 while()条件为0 循环结束
所以return n=3
while(pf(n))
++n;
第一次调用 pf(0) return 0*0+0-12=-12 while()条件不为0 ++n n=1
第二次调用 pf(1) return 1*1+1-12=-10 while()条件不为0 ++n n=2
第三次调用 pf(2) return 2*2+2-12=-6 while()条件不为0 ++n n=3
第四次调用 pf(3) return 3*3+3-12=0 while()条件为0 循环结束
所以return n=3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pf是一个函数指针
int (*pf) (int);
这个函数指针可以指 返回int参数类型为int的函数,这里指向了f函数,计算f(0)=-12 <0,f(1) = -10<0,f(2)=-6<0,f(3)=0,所以应该在n=3时退出while循环,所以改为a函数里的while语句改为while(pf(n) <0)。
int a(int (*pf)(int))
{
int n=0;
int y=0;
while(pf(n)<0)
++n;
return n;
}
int (*pf) (int);
这个函数指针可以指 返回int参数类型为int的函数,这里指向了f函数,计算f(0)=-12 <0,f(1) = -10<0,f(2)=-6<0,f(3)=0,所以应该在n=3时退出while循环,所以改为a函数里的while语句改为while(pf(n) <0)。
int a(int (*pf)(int))
{
int n=0;
int y=0;
while(pf(n)<0)
++n;
return n;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int f(int); //函数f,参数为整形
int a(int (*pf)(int )); //函数a,参数为函数指针pf
int main(void){
printf("%d\n",a(f)); //调用函数a,参数为函数f的指针,最终函数a会返回3
return 0;
}
int f(int i){
return i*i+i-12; //注意当i=3时,表达式值为0,返回0
}
int a(int (*pf)(int)){
int n=0;
while(pf(n)) //调用函数,在main中传进来的是函数f,当n为3时函数f的为0时退出循环
++n;
return n; //返回3
}
int f(int); //函数f,参数为整形
int a(int (*pf)(int )); //函数a,参数为函数指针pf
int main(void){
printf("%d\n",a(f)); //调用函数a,参数为函数f的指针,最终函数a会返回3
return 0;
}
int f(int i){
return i*i+i-12; //注意当i=3时,表达式值为0,返回0
}
int a(int (*pf)(int)){
int n=0;
while(pf(n)) //调用函数,在main中传进来的是函数f,当n为3时函数f的为0时退出循环
++n;
return n; //返回3
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环了3次,++n了3次;//当n=3时,pf返回0,while(pf(n))循环结束,主函数打印返回值n。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询