我正在写一个简单的程序来计算圆柱体的表面积和体积。我没有在main()中写所有的代码,而是使用了3个函数。用指针传递引用
第一个函数读取高度和半径的输入数据,并将值传递回主程序。
第二个函数使用参数height和radius来计算面积和体积的值,并将每个参数传递回主程序。
第三个函数在打印语句中使用参数area和volume。
#include<stdio.h>
#define PI 3.14159
static void inputData(double *ph, double *pr);
static void computeResults(double h, double r, double *pa, double *pv);
static void displayAnswer(double a, double v);
main()
{
double h,r,a,v;
inputData(&h, &r);
computeResults(h, r, &a, &v);
displayAnswer(a, v);
return;
}
static void inputData(double *ph, double *pr)
{
printf("Height: ");
scanf("%g", ph);
printf("Radius: ");
scanf("%g", pr);
}
static void computeResults(double h, double r, double *pa, double *pv)
{
*pa = (2 * PI * h * r);
*pv = (PI * h * r * r);
}
static void displayAnswer(double a, double v)
{
printf("The Area is: %f", a);
printf("The Volume is: %f", v);
}
我在inputData函数中遇到scanf行问题。
错误消息:
surfaceAreaCylinder.c:22:8:警告:格式 '%G' 期望类型 '浮动*' 的参数,但参数2具有输入 '双*'[-Wformat =] scanf(“%g”,ph); ^
surfaceAreaCylinder.c:24:8:警告:格式 '%G' 期望类型 '浮动*' 的参数,但参数2具有输入 '双*'[-Wformat =] 的scanf(“%克“,pr);
我对指针有一个基本的了解,并且知道scanf必须将该信息返回给调用者,因此控件字符串后面的参数必须使用调用引用。请帮我理解!
C只能通过值传递而不能通过引用 – krpra
在'math.h'中有一个值PI –
'* pa =(2 * PI * h * r);' - >'* pa = 2 * PI * r *(h + r);'? – BLUEPIXY