基本上,我只是想按正数或负数对所有用户输入数字进行排序。到目前为止,我只是试图创建仅包含正整数的数组,但似乎无法正确处理。
一直坚持了一段时间,无法完全理解为什么我的程序将负整数分配给应该仅用于正整数的数组,尽管我的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;
}
使用:
int num_of_elements = 0, i, j, x;
int elements[num_of_elements];
您正在分配长度为[[zero的数组,因为num_of_elements
仍为零。
printf("How many elements in N? \n:");
scanf("%d", &num_of_elements);
int elements[num_of_elements];
现在num_of_elements
已初始化。((注意:您还应该检查
scanf
的返回值以确保已读取数字。)
您可能不会在执行时声明具有零个元素的可变长度数组
int num_of_elements = 0, i, j, x;
int elements[num_of_elements];
您输入变量num_of_elements
的正值后应声明数组。例如
printf("How many elements in N? \n:"); scanf("%d", &num_of_elements); int elements[num_of_elements];
也在这样的循环中
for (num=0; num<=positive_total;num++) { printf("\npositive element %d is %d", num, positive_elements[num]); }
您必须使用条件num < positive_total
而不是num <= positive_total
。