代码返回不可能的值

时间:2015-02-10 17:22:59

标签: c

我开始研究生成数组的程序,遵循用户输入的元素数量,第一元素和比率的几何级数。出于某种原因,它回复了......令人沮丧的数字。

以下是代码:

#include <stdio.h>

void GenProg(float input[], int n, float first, float ratio, float *last){

for (int i = 1; i < n; i++){
    first = input[0];
    input[i] = input[i - 1] * ratio;
    }
*last = input[n - 1];
for (int i = 0; i < n; i++){
    printf("Element %i is: %f. \n", i + 1, input[i]);
  }
}

int main(){
float arr[25];
float a;
int n;
printf("Number of elements: ");
scanf("%i", &n);
printf("\n");
float first;
printf("First element: ");
scanf("%f", &first);
printf("\n");
printf("Ratio: ");
float ratio;
scanf("%f", &ratio);
GenProg(arr, n, first, ratio, &a);
printf("Last element: %f.\n", a);
}

感谢。

n = 5; first = 1; ratio = 2 我明白了:

`Element 1: -107374176.000000`
`Element 2: -214748352.000000`
`Element 3: -429496704.000000`
`Element 4: -858991408.000000`
`Element 5: -1717986816.000000`

2 个答案:

答案 0 :(得分:2)

您需要在调用GenProg之前添加arr[0] = first

答案 1 :(得分:2)

first = input[0];

很确定你倒退了。应该是

input[0] = first;

此外,没有理由它应该在循环体中。它应该在第一个for循环之前。