我的for陈述有问题。我正在尝试在内部嵌套if语句,并且正在使用指针。我已经尝试了一切,并且遍及整个互联网。我已在有错误的行旁添加了注释,但如果您发现其他错误,请通知我。谢谢
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
void getinput(double*xptr, int*nptr)
{
int flag;
do
{
flag = TRUE;
printf("What is the value of x and the number of terms:");
scanf("%lf %i", xptr, nptr);
if (*nptr <= 0)
{
printf("The number of terms must be positive\n");
flag = FALSE;
}
}
while(flag == FALSE);
}
double sinHyper(double *xptr, int *nptr) {
int i;
double sum;
double ti;
i = 0;
ti = 0;
for (i = 0; i < *nptr; i = i+1)// I'm getting a Warning: comparioson between pointer and integer
{
if (i == 0)
{
sum = xptr;
} else {
ti = 2*i+1;
ti = ti*2*i;
ti = (xptr*xptr)/ti;// I'm getting a error: invalid operands to binary * (have 'double*' and 'double*')
sum = ti*sum;
}
}
return (sum);
}
void main() {
int n;
double x;
double sinhx;
getinput(&x, &n);
sinhx = sinHyper(&x, &n);
printf("For an x of %.0f with %i terms the sinh(x) is %f", x, n, sinhx);
return 0;
}
最佳答案
您忘记了在多个地方取消引用指针。
该行编译的事实
sum = xptr;
不应误导您:C可让您仅通过警告即可将指针转换为数字,而在大多数情况下,这是错误的。这行应该是
sum = *xptr;
它不允许您将指针相乘,因此将指针平方的表达式是错误的:
(xptr*xptr)
您应该两次取消引用指针,即写
((*xptr)*(*xptr))
或为
*xptr
的当前值创建一个单独的变量,然后改用它:const double x = *xptr;
ti = (x*x)/ti;
注意:此练习应纯粹是理论上的,因为
sinHyper
不会更改*xptr
或*nptr
。因此,您应该将它们作为值而不是指针传递:double sinHyper(const double x, const int n) {
...
}
...
sinhx = sinHyper(x, n);
关于c - 如何在c中的for循环中使用嵌套的if else语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46866963/