【发布时间】:2020-03-19 22:17:34
【问题描述】:
基本上,我只是想按正数或负数对所有用户输入的数字进行排序。到目前为止,我只是想创建一个只有正整数的数组,但似乎无法做到正确。
在此问题上停留了一段时间,无法完全理解为什么我的程序将负整数分配给我的数组,而我的数组应该只用于正整数,尽管我的 if 语句另有指示。任何意见将不胜感激!
#include <stdio.h>
#include <stdlib.h>
int main() {
int num_of_elements = 0, i, j, x;
int elements[num_of_elements];
int positive_total = 0, negative_total = 0;
int negative_elements[20];
int positive_elements[20];
printf("How many elements in N? \n:");
scanf("%d", &num_of_elements);
for (i=0; i<num_of_elements; i++) {
printf("\nEnter element a%d. \n:", i+1);
scanf("%d", &elements[i]);
}
for (j=0; j<num_of_elements; j++)
{
if (elements[j] > 0)
{
positive_elements[positive_total] = elements[j];
positive_total++;
} else if (elements[j] < 0) {
negative_elements[negative_total] = elements[j];
negative_total++;
}
}
int num;
for (num=0; num<=positive_total;num++) {
printf("\npositive element %d is %d", num, positive_elements[num]);
}
int MAX_pos_element = 0;
for (x=0; x<=positive_total; x++) {
if (MAX_pos_element < positive_elements[x]) {
MAX_pos_element = positive_elements[x];
printf("\n%d is larger than %d", MAX_pos_element, positive_elements[x]);
printf("\nelement[%d] has the largest value: %d", x, MAX_pos_element);
}
}
return 0;
}
【问题讨论】:
-
在
num<=positive_total中,您应该使用<,因为您的程序中的索引来自0..n-1。 -
我爱你@PaulOgilvie
标签: c arrays sorting memory-management