2017-04-12 102 views
-5

該代碼應該生成30個隨機數,0-100,並打印平均值,最大值和最小值。但它有邏輯錯誤,我不能幫助,但認爲我犯了一個愚蠢的錯誤。在陣列中生成隨機數並計算平均值,最大值,最小值和總和

****代碼應該從0-100產生30個號碼,並顯示平均,最大和最小****

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

#define SIZE 30 

int generateRandom(void); 

int main(void) 
{ 

    int points[SIZE], i, sum, max, min, num; 
    double average; 

    srand(time(NULL));      /*Seed random number generator*/ 

    num = generateRandom();     /*Genrate the random numbers*/ 

    printf("num = %d\n", num);    /*Print the random numbers*/ 

    sum = 0; 
    for (i = 0; i < SIZE; i++)    /*Find the average*/ 
    { 
     sum += points[i]; 
     average = sum/SIZE; 
    } 
    printf("Average = %f", average);  /*Print the average*/ 


    max = points[0];      /*initialize the max to 0*/ 
    for (i = 0; i < SIZE; i++)    /*find the min*/ 
    { 
     if (points[i] > max) 
     { 
      max = points[i]; 
     } 
    } 
    printf("Maximum = %d\n", max);   /*print the maximum number*/ 

    min = points[0];      /*initialize the min*/ 
    for (i = 0; i < SIZE; i++)    /*Find the min*/ 
    { 
     if (points[i] < min) 
     { 
      min = points[i]; 
     } 
    } 
    printf("Minimum = %d\n", min);   /*Print the minimum number*/ 


    return 0; 

} 

int generateRandom(void) 
{ 
    int random; 

    random = rand() % 101; 

    return random; 
} 
+0

[幫助/切合主題]:求調試幫助(「?爲什麼不是這個代碼工作」)必須包括**所期望的行爲,一個特定的問題或錯誤的和必要的最短的代碼問題在問題本身中重現它**。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+1

「我如何解決邏輯錯誤」。第一步是瞭解錯誤的位置。最好的工具是調試器。調試器將允許您跟蹤程序的執行並檢查其運行狀態。 – kaylum

回答

0

你產生只有一個隨機數,你在存儲num。然後,您的代碼就像存儲在points中的30個隨機數一樣。但它從來沒有做到這一點。

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

#define SIZE 30 

int generateRandom(void); 

int main(void) 
{ 

    int points[SIZE],i,sum,max,min,num; 
    double average; 

    srand(time(NULL));        

    for(i = 0; i < SIZE; i++){ 
     points[i] = generateRandom(); 
    } 

    sum = 0; 
    for(i = 0; i < SIZE; i++) 
    { 
     sum += points[i]; 
    } 
    average = (sum * 1.0)/SIZE; /*you need double here*/ 
    printf("Average = %f\n",average);  


    max = points[0];      
    for(i = 1; i < SIZE; i++)    
    { 
     if(points[i] > max) 
     { 
      max = points[i]; 
     } 
    } 
    printf("Maximum = %d\n",max);  

    min = points[0];      
    for(i = 1; i < SIZE; i++)    
    { 
     if(points[i] < min) 
     { 
      min = points[i]; 
     } 
    } 
    printf("Minimum = %d\n",min); 

    return 0; 
} 

int generateRandom(void) 
{ 
    int random; 

    random = rand() % 101; 

    return random; 
} 
相關問題