0

一段时间以来,我一直在努力完成这项作业。而且我似乎找不到它有什么问题。

我的问题是为什么每次执行此程序时都会出现分段错误错误。

/* Description: A program that takes an input array argument with type double values and displays a table of those inputs and their absolute values.
*/

...

int main() /* Main Function */
{
    /* Variables */

    int size=5,n;
    double value[n];
    double table;

    /* Instructions and Input */

    for(n=0;n<size;n++){
            printf("\nPlease enter value #%d:\n",n);
            if(n=size-1){printf("\nPlease enter the last value.\n");}
            scanf("%lf",&value[n]);
    }

    /* Recalling the Function and Output */

    printf("\nValue\t|Value|\n"); /* Table Header */
    table=abs_table(value[n],size); /*Absolute Value Table */

    return 0;
}

double abs_table(double value, int size) /* Absolute Value Function */
{
    int i,j; /* Counter Variables */
    double v;

    for(j=1;j<=size;j++){ /* For the Number of rows */
            for(i=0;i<=size;i++){ /* For the number of columns */
                            v = abs(value); // For the absolute values */
                            printf("\n%g\t%g\n",value,v);
                    }
    printf("\n"); /* To make sure the rows display on their own line */
    }

    return;
}
4

3 回答 3

1

您的代码中有几个错误:

错误1:在 main() 你声明double value[n];我相信你想要的是double value[size];

错误2:在 main() 语句中if(n=size-1)应更改为if(n==size-1)

错误3:在 main() 你调用函数table=abs_table(value[n],size);它应该是table=abs_table(value,size);

错误4:你定义double abs_table(double value, int size){...}了它应该是的功能double abs_table(double value[], int size){...}

Error5: inside functionabs_table我实际上不知道你想在这里显示什么。一个地方是变量i应该从 0 运行到 size-1,另一个地方是你应该返回一些东西

于 2013-10-28T21:29:48.913 回答
1

您的程序中有许多错误:

  1. 数组不能用可变长度初始化ndouble value[n];
  2. 中还=缺少一个if(n=size-1)
  3. 即使您使用长度n(点 1)正确初始化数组,scanf("%lf",&value[n]);也会写入超出value数组长度的内存位置。
  4. abs编码为整数但不是双精度:v = abs(value);.
  5. ...可能还有更多错误,但列表已经很长了。
于 2013-10-28T21:19:36.130 回答
0

main您声明int n时没有初始化它,随后double value[n]. 因此n具有未定义的值,因此value具有未定义的大小。我认为您的意思是声明double value[size],您确实对其进行了初始化。

此外,abs_table应该返回 adouble但你返回的是 void。

于 2013-10-28T21:20:25.790 回答