我创建了两个文件来分别显示和读取数据,并将它们包含在我的主文件中,用于对其进行排序。但是当我执行主程序时,数据没有显示,但函数正在被调用。
#include <stdio.h>
#include <stdlib.h>
#include "arrdisp.c"
#include "arrread.c"
void selsort(int arr[]);
int random(int min, int max);
int n;
void main() {
int a[10], i;
char ch;
printf("Do you want to insert student marks manually?(y/n):");
scanf("%c", &ch);
if (ch == 'y') {
read(a, n);
for (i = 0; i < n; i++) printf("%d, ", a[i]);
} else {
printf("How many random marks do you want to insert:");
scanf("%d", &n);
for (i = 0; i < n; i++) a[i] = random(0, 100);
}
printf("before sorting:\n");
disp(a, n);
printf("\nAfter sorting:\n");
selsort(a);
disp(a, n);
printf("Array elements");
for (i = 0; i < n; i++) printf("%d, ", a[i]);
}
int random(int min, int max) {
return min + rand() / (RAND_MAX / (max - min + 1) + 1);
}
void swap(int *xp, int *yp) {
int temp = *xp;
*xp = *yp;
*yp = temp;
}
void selsort(int arr[]) {
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx]) min_idx = j;
if (min_idx != i) swap(&arr[min_idx], &arr[i]);
}
}
谁能解释一下出了什么问题吗?
我尝试创建数组 extern 变量,但在主程序本身中出现一些错误,表明该数组未定义。所以我尝试在同一个程序中定义普通函数,但仍然有相同的输出,所以我不认为这是头文件的问题,但我仍然一无所知。
您没有初始化
n
,因此您的显示循环将无法工作,因为未初始化的 int
变量将为零。
我看到您初始化
n
的唯一地方是在 else 语句中,如果用户选择 y
,则不会访问该语句。
要求用户输入“n”:
printf("Do you want to insert student marks manually?(y/n):");
scanf("%c",&ch);
if(ch == 'y')
{
printf("How many students:");
scanf("%d", &n);
read(a, n);
for (i = 0; i < n; i++)
printf("%d, ", a[i]);
}