如何在C中以main打印函数?
我想从main调用所有三个函数 并将两个函数定义中的结果打印回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
#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);
}