如何通过头文件使用函数在C中输入/显示数组中的数据? [已关闭]

问题描述 投票:0回答:1

我创建了两个文件来分别显示和读取数据,并将它们包含在我的主文件中,用于对其进行排序。但是当我执行主程序时,数据没有显示,但函数正在被调用。

#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 变量,但在主程序本身中出现一些错误,表明该数组未定义。所以我尝试在同一个程序中定义普通函数,但仍然有相同的输出,所以我不认为这是头文件的问题,但我仍然一无所知。

c sorting header header-files extern
1个回答
1
投票

您没有初始化

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]);
}
© www.soinside.com 2019 - 2024. All rights reserved.