好的,所以我试图保持一个函数在while循环中运行的时间得分,直到满足条件。它运作得不是很好。当while循环启动时,它似乎需要永远完成并崩溃,而它应该只需要循环两次。有什么建议吗?
这是我到目前为止所拥有的:
void reverseArray (int arr[], int m){
int arr2 [100000000];
for (int i = m-1, d = 0; i >= 0;i--, d++)
arr2[d] = arr[i];
for (int i=0; i<m; i++)
arr[i] = arr2[i];
}
int main (){ // score, score = time number is reversed
int points=0, n, m;
int arr[10];
scanf ("%d", &n);
printf("Enter the array elements\n");
for (int i=0; i<n; i++)
scanf("%d", &arr[i]);
m = arr[0];
while (m!=1){
void revereseArray (int arr[], int m);
points ++;
}
printf ("\n\n%d", points);
}
这一点是取一个数组并重新组装它,直到第一个元素等于1.我还必须看到我必须运行该函数多少次,直到第一个元素等于1.
现在,我不必在while循环中运行该函数,直到满足条件。
由于
答案 0 :(得分:4)
您的代码存在一些问题。第一个阻止while
循环完成的第一个是,您实际上并未更改循环中m
的值。因此,循环永远运行,无法终止。
该行
void revereseArray (int arr[], int m);
不是函数调用,而是名为revereseArray
的函数的函数声明。它在循环中没有做任何事情。如果要调用函数,则必须编写
reverseArray(arr, m);
最后请注意,当您调用reverseArray
时,您的程序可能会立即崩溃,因为int arr2 [100000000];
太大(您在堆栈上分配400MB)。如果您使用的是C99,则可以制作VLA:int arr2[m]
。否则,在返回之前,您必须malloc
一个临时数组并free
。