所以一直在尝试并弄清楚为什么我的代码不想和我一起工作。在这里找不到错误..它应该让我输入所有细节,然后显示数组中的所有内容。但是我尝试过的不同的东西仍然在分段错误中结束。我在编程方面相对较新,所以批评是允许的。
#include <stdio.h>
#include <math.h>
int main (void)
{
int j, n;
int *A,*B, *H;
double const e = 2.71828183;
int x[15];
float y[15];
printf("\n");
printf(" sqrt(x)*sin(1/x)\n");
printf("y=-------------\n");
printf(" (x+e^x) \n\n");
int i=0;
while((*A)>*(B));
{
printf("Enter A :\n");
scanf("%d", A);
printf("Enter B :\n");
scanf("%d", B);
if((*A)>(*B))
{
printf("enter sometthing that.....\n");
}
i++;
}
do
{
printf("Enter H:\n");
scanf("%d", H);
if((*H)<15)
{
printf("\n");
}
while((*H)>15)
{
printf("H is wrong, try again\n");
}
j++;
}
while((*H)>15);
do
{
x[i+1]=(x[i]+(i+1)*(*H));
y[i]=(sqrt(x[i])*sin(1/x[i]))/(x[i]+(pow(e,x[i])));
i++;
n=i-1;
}
while (x[i]<=(*B));
for(i=0;i<=n;i++)
printf("X | Y\n");
{
printf("%d | %f\n", x[i], y[i]);
}
return 0;
}
答案 0 :(得分:5)
这些指针未初始化,因此它们指向随机存储位置。
int *A,*B, *H;
在这里你要取消引用未初始化的指针(未定义的行为 - &gt;分段错误)
while((*A)>*(B));
我建议声明变量,如:
int A=1, B=0, H;
修改while循环(基于A,B的初始值,它将至少执行一次)(或使用do while
):
while(A > B)
并像这样扫描:
scanf("%d", &A);