如何将用户输入函数与另一个函数一起使用?

时间:2015-09-16 10:01:00

标签: c function pointers recursion parameters

我有这两个函数,ReadData用于输入三个数字的用户输入,另一个函数ComputeSum用于获取用户输入的值并将它们加在一起。我试图将ComputeSum函数的结果分配给 total 变量,但无法打印正确的总数。有人可以解释导致这种情况发生的原因吗?

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>


void ReadData(int *x,int *y,int *z);
int ComputeSum(int x,int y,int z);


int main()
{
  int x, y, z;
  int total;

  ReadData(&x, &y, &z);
  printf("\n");

  total = ComputeSum(x,y,z);

  printf("The total is: %d", total);



  printf("\n\n");

system("PAUSE");
return 0;

}




void ReadData(int *x,int *y,int *z)
{
printf("Enter three numbers : ");
scanf("%d %d %d", &x, &y, &z );
printf("\n");

ComputeSum(x,y,z);

return ;
}

int ComputeSum(int x,int y,int z)
{
int Sum = x+y+z;

return Sum;
}

___________________________________________________________________

     **Sample Output**

 Enter three numbers : 5 5 5


The total is: 8869621

Press any key to continue . . .

3 个答案:

答案 0 :(得分:1)

ReadData()中的这一行不正确

scanf("%d %d %d", &x, &y, &z );

应该是

scanf("%d %d %d", x, y, z );

因为这三个参数已经是指针。同一函数中的以下行

ComputeSum(x,y,z);

也不正确,应该是

ComputeSum(*x, *y, *z);

但由于你没有使用结果,所以甚至没有必要,而且无论如何都会在main中调用它。

请启用编译器警告并注意它们,这两个故障都会产生警告。

答案 1 :(得分:1)

在函数void ReadData(int *x,int *y,int *z);

scanf("%d %d %d", &x, &y, &z );

xyz已经是指针,所以你不需要传递他们的地址,只需传递指针 -

scanf("%d %d %d", x, y, z );

我不明白为什么你在ComputeSum()中调用ReadData(),因为你已经在main()中调用了void ReadData(int *x,int *y,int *z) { //your code ComputeSum(x,y,z); // Why ?? No need of it return ; } 。不需要这样做。

{{1}}

答案 2 :(得分:0)

  • 这是您的解决方案,

    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include <math.h>
    
    void ReadData(int *x,int *y,int *z);
    int ComputeSum(int x,int y,int z);
    
    int main()
    {
      int x, y, z;
      int total;
    
      ReadData(&x, &y, &z);
      printf("\n");
      printf("\n\n");
    
      system("PAUSE");
      return 0;
    
      }
      void ReadData(int *x,int *y,int *z)
      {
          printf("Enter three numbers : ");
          scanf("%d %d %d", x, y, z );
          printf("\n");
    
          int total = ComputeSum(*x,*y,*z);
          printf("The total is: %d", total);
          return ;
      }
    
      int ComputeSum(int x,int y,int z)
      {
          int Sum = x+y+z;
          return Sum;
      }
    
  • 仅从ReadData调用ComputeSum函数,

      int total = ComputeSum(*x,*y,*z);