【发布时间】:2021-07-13 00:16:05
【问题描述】:
我需要在 C 中创建一个随机数组,在其中找到非负值,当连续至少有 2 个时,将它们反转。例如,如果我有随机数组5 6 -7 -8 9 -4 7 8 2 -2,我需要得到6 5 -7 -8 9 -4 2 8 7 -2。这是我迄今为止尝试过的:
#include <stdio.h>
#include <stdlib.h>
int ARRAY[100];
int main(void) {
int i;
int nn;
int temp = ARRAY[i];
rand();
for (i=0; i<100; ARRAY[i++]=rand()%100-50 );
printf("FIRST ARRAY:\n");
for (i=0; i<100; i++)
printf("%3d ",ARRAY[i]);
putchar('\n');
putchar('\n');
for(i=0; i<100; i++){
if (ARRAY[i]<0) {
if(!nn) {
nn = 1;
}
}
else {
temp=ARRAY[i];
ARRAY[i] = ARRAY[nn - 1];
ARRAY[nn - 1] = temp;
}
}
printf("Result:\n");
putchar('\n');
for (i=0; i<100; printf("%3d ",ARRAY[i++]));
putchar('\n');
return 0;
}
但运气不好。
【问题讨论】:
-
通过编写空体
for循环来停止如此“聪明”。它们很少合适,而且在您使用它们的任何地方都不合适。 -
在分配局部变量之前停止读取它们。
标签: arrays c reverse function-definition sub-array