链接程序时面对错误的输出

时间:2014-06-05 15:52:26

标签: unix

我在使用unix调用主程序中的用户定义函数时遇到了麻烦。程序仅针对主程序中的数字生成执行。但是当我调用预定义的函数时。检索到的输出不正确。有人可以在我错误的地方纠正我吗

我的主要节目表示为

#include <stdio.h>
#include <stdlib.h>

void sort1(int []);

int main(void) {

int array[100];
 int i , j;

 printf("ten random numbers in [1,1000]\n");

 for (i = 1; i <= 10; i++) 
{
  generate random numbers
}

  printf("The list of Hundred random numbers are \n");

for (j = 1; j <= 10; j++ )
  {
     //to print the random numbers
  }

sort1(array);
return 0;
}


//this is my user defined function: sort1.c

include <stdio.h>

int sort1(int a[])
{
 int array[100], i, d, swap, e=10;

// algortithm
   }
 }

 printf("Sorted list in ascending order:\n");

 for ( i= 0 ; i< e ; i++ )
    printf("%d\n", array[i]);

}

我的输出为

ten random numbers in [1,1000]
The list of Hundred random numbers are 

- 这给出了正确的输出     按升序排序列表:     1     -1442229816     0     -1444472964

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

void sort1(int []);

int main(void) {
  int array[100];
  int i;

  printf("ten random numbers in [1,1000]\n");

  for (i = 1; i <= 10; i++) 
  {
     array[i] = rand()%1000 + 1;
  }

  printf("The list of Hundred random numbers are \n");

  for (i = 1; i <= 10; i++ )
  {
   printf("Element[%d] = %d\n", i, array[i] );
  }
  //Up to here it's ok but you have set the values in the positions 1-10 of the array so keep consistent with it

  sort1(array);

  printf("Sorted list in ascending order:\n");

  for ( i= 1 ; i<= 10 ; i++ )
    printf("%d\n", array[i]);
  return 0;
}

void sort1(int a[])
{
   int i,swap,sorted=0;
   while(sorted==0){ //flag to know if array is sorted 0 means not sorted.
     sorted=1;  // we set the flag to sorted at start of sweep
     for (i= 1 ; i<= (10-1); i++)  //sweep through array
     {
        if (a[i] > a[i+1]) //check if sorted
        {
          swap   = a[i];
          a[i]   = a[i+1];
          a[i+1] = swap;
          sorted=0;  //if not sorted set flag to 0 and swap
        }
     }
   }
}

代码中的主要问题:

1)数组[100]未在sort1函数中初始化。

2)我不理解你的排序算法但是在任何情况下你都在检查未初始化的[0]的值,所以要注意每次使用的数组位置并与之保持一致。

3)函数原型不匹配