2014-02-26 107 views
-1
#include <stdio.h> 
#include <time.h> 
#include <stdlib.h> 
#include <math.h> 

double main(){ 
    int N, x; 

    printf("\nEnter the number of randoms to go into the array = "); 
    scanf("%d", &N); 

    double myArray[N]; 

    srand(time(NULL)); 

    for(x = 0; x < N; x++){ 
    myArray[x] = (rand() % 101); 
    printf("myArray[x]: %d\n" , myArray[x]); 
    } 

    printf("\n Unsorted Array \n"); 
    for(x = 0; x < N; x++) 
    printf("myArray[x]: %d\n" , myArray[x]); 

    BubbleSort(myArray); 

    printf("\n Sorted Array \n"); 
    for(x = 0; x < N; x++) 
    printf("myArray[x]: %d\n" , myArray[x]); 
} 

這是我的代碼。我需要做的是從0-100創建隨機值,然後對這些數字進行排序。但是,我似乎無法正確地將數字存儲在C中。當我使用的5測試我的輸出是:C中的隨機數和數組

myArray[x]: -30926580 
myArray[x]: -28464932 
myArray[x]: -17742016 
myArray[x]: -5561396 
myArray[x]: -6919840 

排序的數組

myArray[x]: 2048 
myArray[x]: 2304 
myArray[x]: 2560 
myArray[x]: 2816 
myArray[x]: 3072 

有序數組

myArray[x]: 3584 
myArray[x]: 3840 
myArray[x]: 4096 
myArray[x]: 4352 
myArray[x]: 4608 

我已經通過,而不是我好像前幾個線程讀取找出爲什麼我的隨機不工作。

+1

'double main(){':'main'返回'int',而不是'double'。 – Nabla

+2

您也打印%d的雙打。使用整數。 – deviantfan

+0

如果你正在用整數進行所有的工作,爲什麼你要創建一個雙精度浮點數的數組(double myArray [N]')? – abelenky

回答

1

printf()的一點點細微差別在於%d替代代表「decimal」,而不是「double」。 「小數」是整數,並通過雙打printf期望整數將導致輸出錯亂。

要打印出雙精度型,請使用%f說明符,它代表「float」。

此外,main函數應該返回int而不是double。不是一個大問題,但返回double是非標準的,可能會混淆執行環境。

1

myArray被打印爲雙精度數組,並將其打印爲整數。 如果您想打印它們,請使用%lf。