为什么只有我输入两次初始数字才会显示正确结果
[ 本帖最后由 大河之jian 于 2020-2-28 21:30 编辑 ]\n\n[ 本帖最后由 大河之jian 于 2020-2-28 21:27 编辑 ]\n\n[ 本帖最后由 大河之jian 于 2020-2-28 21:24 编辑 ]\n\n#include<stdio.h>
int function1(int d) /*计算边长为d的立方体体积*/
{
int v;
v=d*d*d;
return v;
}
int function2(int x,int y) /*在 x 和 y 太于 0 时计算 x的y次幂*/
{ int i,z=1;
if(x>0&&y>0)
{for(i=1;i<=y;i++)
{
z=z*x;}}
return z;
}
void function3(int i,int j,int k,int (*ptr1)(int),int (*ptr2)(int,int))
{
int a,b;
a=(*ptr1)(i); /*调用function1函数*/
b=(*ptr2)(j,k); /*调用function2函数*/
printf("%d,%d,%d,%d,%d\n",i,j,k,a,b);
}
int main(void)
{ int (*p1)(int),(*p2)(int,int);
int m,n,p;
printf("canshu:");
scanf("%d%d%d\n",&m,&n,&p);
function3(m,n,p,function1,function2);
return 0;
}
运行如下
canshu:2 3 4
2 3 4
2,3,4,8,81 scanf里只能有数据类型格式
int function1(int d)
{
int v;
v=d*d*d;
return v;
}
int function2(int x,int y)
{
int i,z=1;
if(x>0&&y>0)
{for(i=1;i<=y;i++)
{
z=z*x;}}
return z;
}
void function3(int i,int j,int k,int (*ptr1)(int),int (*ptr2)(int,int))
{
int a,b;
a=(*ptr1)(i);
b=(*ptr2)(j,k);
printf("%d,%d,%d,%d,%d\n",i,j,k,a,b);
}
int main(void)
{
int (*p1)(int),(*p2)(int,int);
int m,n,p;
printf("canshu:");
scanf("%d%d%d",&m,&n,&p);
function3(m,n,p,function1,function2);
return 0;
} qiuyouzhi 发表于 2020-2-28 21:28
scanf里只能有数据类型格式
谢谢
大河之jian 发表于 2020-2-28 21:35
谢谢
如果有帮助,请设置最佳答案{:10_254:} 建议你每个函数根据其功能起有一定意义的命字,不要用function1,funtion2这种命字。自己调用的时候都不知道调的函数啥作用
页:
[1]