- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
7天前关闭。
Improve this question
我创建了两个文件,分别用于显示和读取数据,并将它们包含在用于排序的主文件中,但当我执行主程序时,数据没有显示,而是调用了函数。
#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]);
}
}
有人能解释一下出了什么问题吗?
我试着让数组成为外部变量,但在主程序中出现了一些错误,说数组是未定义的,所以我试着在同一个程序中定义普通函数,但仍然有相同的输出,所以我不认为这是头文件的问题,但我仍然一无所知。
1条答案
按热度按时间wn9m85ua1#
你没有初始化
n
,所以你的显示循环不会工作,因为一个没有初始化的int变量会得到零。我看到您初始化
n
的唯一位置是在else语句中,如果用户选择y,则不会访问该语句。所以我的建议是让用户输入“n”
最终建议:
使用制表符或空格来缩进作用域代码块,以便您可以立即区分它们。