如何在C中以main打印函数?

如何在C中以main打印函数?,c,C,我想从main调用所有三个函数 并将两个函数定义中的结果打印回main 我找不到如何做到这一点,我已经创建了我需要的所有函数和指针 #include <math.h> #include <stdio.h> #define _CRT_SECURE_NO_WARNINGS //to avoid scanf warning or error int CalculateSum(int num1, int num2); int CalculateProduct(int nu

我想从main调用所有三个函数 并将两个函数定义中的结果打印回main 我找不到如何做到这一点,我已经创建了我需要的所有函数和指针

#include <math.h> 
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS    //to avoid scanf warning or error
int CalculateSum(int num1, int num2);
int CalculateProduct(int num1, int num2);
void CalculateBoth(int num1, int num2, int*sumPtr, int *prodPtr);
int main(void)
{



}
int CalculateSum(int num1, int num2)
{
    int temp1;
    num1 = 1;
    num2 = 2;
    temp1 = num1 + num2;
    //printf("calculatesum value %d ", temp1);
     return (temp1); 

}
int CalculateProduct(int num1, int num2)
{
    num1 = 3;
        num2 = 4;
    int temp2;
    temp2 = num1*num2;
    printf("calc product  %d ", temp2);
        return temp2;

}


void CalculateBoth(int num1, int num2, int*sumPtr, int *prodPtr)
{
    num1 = 5;
    num2 = 6;
    int temp3 = num1 + num2;
    sumPtr = &temp3;
    int temp4 = num1*num2;
    prodPtr = temp4;
    printf("calc sumptr  %d ", temp3);
    printf("Calc both prodptr  %d ", temp4);

}
#包括
#包括
#定义\u CRT\u SECURE\u NO\u警告//以避免扫描警告或错误
int CalculateSum(int num1,int num2);
int计算产品(int num1,int num2);
无效计算边界(int num1、int num2、int*sumPtr、int*prodPtr);
内部主(空)
{
}
计算整数(整数m1,整数m2)
{
int temp1;
num1=1;
num2=2;
temp1=num1+num2;
//printf(“计算最大值%d”,temp1);
返回(temp1);
}
int计算产品(int num1,int num2)
{
num1=3;
num2=4;
int temp2;
temp2=num1*num2;
printf(“计算产品%d”,temp2);
返回temp2;
}
无效计算边界(整数m1、整数m2、整数*sumPtr、整数*prodPtr)
{
num1=5;
num2=6;
int temp3=num1+num2;
sumPtr=&temp3;
int temp4=num1*num2;
prodPtr=temp4;
printf(“计算用水量%d”,temp3);
printf(“计算两个产品%d”,temp4);
}

如果要返回多个值,请从函数返回数组

int * CalculateBoth(int num1, int num2, int*sumPtr, int *prodPtr)
{
    num1 = 5;
    num2 = 6;
    int arr[2];
    arr[0] = num1 + num2;
    sumPtr = &temp3;
    arr[1] = num1*num2;
    prodPtr = temp4;
    printf("calc sumptr  %d ", temp3);
    printf("Calc both prodptr  %d ", temp4);
    return arr;
}
然后主要

int main()
{
int *p;
p=CalculateBoth(...);
printf("%d %d",p[0],p[1]);
return 0;
}

很明显你需要一些帮助。你的功能并不是你所期望的那样。首先,您要将
num1
num2
传递给函数。为了实现这一点,它们必须在主体中声明。除了
num1
num2
之外,还需要声明变量来保存前两个函数的返回,比如
sum
prod
。这些变量也将是作为指针传递给CalculateBoth函数的同一个变量,以便它们的值在
main()
中更新和可用。
main()中有一个简单的定义。
就是您所需要的:

/* declare and initialize variables */
int n1 = 0, n2 = 0, sum = 0, prod = 0;
虽然更改函数中变量的值没有错,但由于您编写了所有函数,因此完全无法将
num1
num2
传递给函数。看起来您打算将
num1
num2
的值传递给每个函数,而不是更改函数中的值。例如,在
main()
中,您将看到:

/* CalculateSum */
n1 = 1, n2 = 2;
sum = CalculateSum (n1, n2);

/* CalculateProduct */
n1 = 3, n2 = 4;
prod = CalculateProduct (n1, n2);

/* CalculateBoth (passing pointer to have value back in main()) */
n1 = 5, n2 = 6;
CalculateBoth (n1, n2, &sum, &prod);
任务的剩余部分是简单地打印函数中的值(
sum
prod
两者都
),然后再次打印到
main()
,以确保已成功更新函数范围内的值以及
main()
(函数本身)。下面显示了在函数和main中简单添加相同的print语句。如果你有问题,请告诉我

#include <stdio.h>

#define _CRT_SECURE_NO_WARNINGS    // I'll take your word for it...

int CalculateSum (int num1, int num2);
int CalculateProduct (int num1, int num2);
void CalculateBoth (int num1, int num2, int *sumPtr, int *prodPtr);

int main(void)
{
    /* declare and initialize variables */
    int n1 = 0, n2 = 0, sum = 0, prod = 0;

    /* CalculateSum */
    n1 = 1, n2 = 2;
    sum = CalculateSum (n1, n2);
    printf (" calculatesum value %d\n", sum);

    /* CalculateProduct */
    n1 = 3, n2 = 4;
    prod = CalculateProduct (n1, n2);
    printf (" calc product  %d\n", prod);

    /* CalculateBoth (passing pointer to have value back in main()) */
    n1 = 5, n2 = 6;
    CalculateBoth (n1, n2, &sum, &prod);
    printf(" calc both sumPtr   %d\n", sum);
    printf(" calc both prodPtr  %d\n", prod);


    return 0;
}

int CalculateSum (int num1, int num2)
{
    int sum;
    sum = num1 + num2;

    printf ("\n calculatesum value %d\n", sum);

    return sum; 
}

int CalculateProduct (int num1, int num2)
{
    int prod;
    prod = num1 * num2;
    printf ("\n calc product  %d\n", prod);

    return prod;
}

void CalculateBoth (int num1, int num2, int *sumPtr, int *prodPtr)
{
    int sum = num1 + num2;
    *sumPtr = sum;

    int prod = num1 * num2;
    *prodPtr = prod;

    printf("\n calc both sumPtr   %d\n", sum);
    printf(" calc both prodPtr  %d\n", prod);
}
#包括
#包括
#包括
#定义\u CRT\u SECURE\u NO\u警告//以避免扫描警告或错误
int CalculateSum(int num1,int num2);
int计算产品(int num1,int num2);
无效计算边界(int num1、int num2、int*sumPtr、int*prodPtr);
内部主(空){
int x=5,y=6,prod,sum;
总和=计算总和(x,y);
prod=CalulateProduct(x,y);
printf(“总和=%d乘积=%d”,x,y);
printf(“现在同时计算两者”);
x=4;
y=3;
计算框(x、y、sum和prod);
printf(“%d%d”,总和,产品);
getch();
返回0;
}
计算整数(整数m1,整数m2){
int temp1;
temp1=num1+num2;
printf(“计算最大值%d”,temp1);
返回(temp1);
}
int计算产品(int num1,int num2){
int temp2;
temp2=num1*num2;
printf(“计算产品%d”,temp2);
返回temp2;
}
无效计算边界(整数m1、整数m2、整数*sumPtr、整数*prodPtr){
int temp1,temp2;
temp1=num1+num2;
*sumPtr=temp1;
temp2=num1*num2;
*prodPtr=temp2;
printf(“计算用水量%d”,temp1);
printf(“计算两个产品%d”,temp2);
}

您确定这会起作用吗?当您试图在写入时为
p[1]
赋值时会发生什么情况?
$ ./bin/fncinmain

 calculatesum value 3
 calculatesum value 3

 calc product  12
 calc product  12

 calc both sumPtr   11
 calc both prodPtr  30
 calc both sumPtr   11
 calc both prodPtr  30
#include <math.h> 
#include <stdio.h>
#include <conio.h>
#define     _CRT_SECURE_NO_WARNINGS     //to avoid scanf warning or error
int CalculateSum(int num1, int num2);
int CalculateProduct(int num1, int num2);
void CalculateBoth(int num1, int num2, int*sumPtr, int *prodPtr);

int main(void) {
    int x = 5, y = 6, prod, sum;
    sum = CalculateSum(x, y);
    prod = CalulateProduct(x, y);
    printf("sum=%d Product=%d", x, y);
    printf("now calulate both at once");


    x = 4;
    y = 3;
    CalculateBoth(x, y, &sum, &prod);
    printf("%d %d", sum, prod);
    getch();
    return 0;

}

int CalculateSum(int num1, int num2) {
    int temp1;
    temp1 = num1 + num2;
    printf("calculatesum value %d ", temp1);
    return (temp1);

}

int CalculateProduct(int num1, int num2) {
    int temp2;
    temp2 = num1*num2;
    printf("calc product  %d ", temp2);
    return temp2;

}

void CalculateBoth(int num1, int num2, int* sumPtr, int *prodPtr) {
    int temp1, temp2;
    temp1 = num1 + num2;
    *sumPtr = temp1;
    temp2 = num1*num2;
    *prodPtr = temp2;
    printf("calc sumptr  %d ", temp1);
    printf("Calc both prodptr  %d ", temp2);

}