大河之jian 发表于 2020-2-28 21:24:08

为什么只有我输入两次初始数字才会显示正确结果

[ 本帖最后由 大河之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

qiuyouzhi 发表于 2020-2-28 21:28:24

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;
}

大河之jian 发表于 2020-2-28 21:35:18

qiuyouzhi 发表于 2020-2-28 21:28
scanf里只能有数据类型格式

谢谢

qiuyouzhi 发表于 2020-2-28 21:40:28

大河之jian 发表于 2020-2-28 21:35
谢谢

如果有帮助,请设置最佳答案{:10_254:}

major_lyu 发表于 2020-2-28 22:16:42

建议你每个函数根据其功能起有一定意义的命字,不要用function1,funtion2这种命字。自己调用的时候都不知道调的函数啥作用
页: [1]
查看完整版本: 为什么只有我输入两次初始数字才会显示正确结果