所以我想我昨天解決了這個問題,當你們回答我的問題時,但今天我意識到我忘記了我禁用了名爲bubbleSort ),一旦我啓用該功能,直接在main下面的addRandomNumbers()函數開始生成與隨機數相同的數字,而不是再次生成不同的數字,即使我在程序啓動時將發生器播種一次。它只產生不同的隨機數,如果我禁用bubbleSort()函數,這是奇怪的,因爲那是一個完全不同的函數。 但我那種需要冒泡排序功能,從而使的binarySearch()函數,我去做出將工作我以爲我昨天修好了,但我搞砸了,它仍然產生相同的隨機數
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define clear system("cls")
#define pause system("pause")
#define SIZE 5000
#define LB 1 //this is the lower bound
#define UB 500 //this is the upper bound
//Lets Prototype
void addRandomNumbers(int n[]);
void binarySearch(int n[],int c[]);
void bubbleSort(int n[]);
void displayRandomNumbers(int n[],int c[]);
int main(){
int numbers[SIZE]={0}, counter[SIZE]={0};
srand((unsigned)time(NULL));
addRandomNumbers(numbers);
bubbleSort(numbers);
binarySearch(numbers,counter);
displayRandomNumbers(numbers,counter);
}//end main
void addRandomNumbers(int n[]){
int i;
for (i=0; i < SIZE; i++){
n[i] = LB + rand() % (UB - LB + 1);
}
}//end addRandomNumbers
void bubbleSort(int n[]){
int i,temp=0;
for(i=0;i<SIZE-1;i++){
temp=n[i];
n[0]=n[1];
n[i+1]=temp;
}//end for loop
}//end bubble sort
void binarySearch(int n[],int c[]){
int i,k=0,l,u,mid;
for(i=0;i<SIZE;i++){
l=0,u=SIZE-1;
while(l<=u){
mid=(l+u)/2;
if(n[i]==n[mid]){
k++;
break;
}
else if(n[i]<n[mid]){
u=mid-1;
}
else
l=mid+1;
}//end while loop
c[i]=k;
}//end for loop
}
void displayRandomNumbers(int n[], int c[]){
int i;
char flag;
for(i=0;i<UB;i++)
if(c[i]<100)
printf("The number %i appears %i times\n",n[i],c[i]);
pause;
}//end displayRandomNumbers
您的bubblesort函數用第一個元素填充數組。並有1緩衝區溢出... – hyde
「」和「」和其他頭文件在哪裏? –
haccks
你在哪個平臺上運行這個平臺?它提供了什麼輸出? –