2015-08-08 72 views
0

我需要編寫一個腳本來計算數字1-9出現在數組中的次數。但是當我運行腳本時,它會打印非常大的數字。例如:意外地訪問隨機內存,C++

0:1; 1:65538; 2:32737; 3:-1697300255; 4:1; 5:4197244; 6:3; 7:6299100; 8:32772; 9:6

不確定錯誤在哪裏。

#include <iostream> 
using namespace std; 

void count_numbers(int array[4][4]) 
{ 
    int num_0, num_1, num_2, num_3 ,num_4, num_5, num_6 , num_7 ,num_8 , num_9 = 0; 
    int i, j = 0; 

    for (i = 0; i < 4; i++) 
{ 
     for (j = 0; j < 4; j++) 
     { 
     switch(array[i][j]){ 
      case 0: 
       num_0++; 
      case 1: 
       num_1++; 
      case 2: 
       num_2++; 
      case 3: 
       num_3++; 
      case 4: 
       num_4++; 
      case 5: 
       num_5++; 
      case 6: 
       num_6++; 
      case 7: 
       num_7++; 
      case 8: 
       num_8++; 
      case 9: 
       num_9++; 
     } 
    } 
} 

cout << "0:" << num_0 << ";1:" << num_1 << ";2:" << num_2 << ";3:" << num_3 << ";4:" << num_4 <<";5:" << num_5 << ";6:" << num_6 << ";7:" << num_7 << ";8:" << num_8 << ";9:" << num_9 <<endl; 


} 

#ifndef WEBSUBMIT 
int main() 
{ 
    int array[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; 
    count_numbers(array); 
} 
#endif //WEBSUBMIT 

回答

2
int num_0, num_1, num_2, num_3 ,num_4, num_5, num_6 , num_7 ,num_8 , num_9 = 0; 

僅初始化num_9爲0。其它變量初始化


這本來是少了很多的工作使用數組,而不是10個num_x變量:

void count_numbers(int array[4][4]) { 
    int num[10] = {0}; 
    int i, j = 0; 
    for (i = 0; i < 4; i++) { 
     for (j = 0; j < 4; j++) { 
      if (array[i][j] >= 0 && array[i][j] < 10) { 
       ++num[array[i][j]]; 
      } 
     } 
    } 
    for (i = 0; i < 10; ++i) { 
     cout << i << ":" << num[i] << ';'; 
    } 
    cout << '\n'; 
} 
1

形式的陳述:

int a, b, c = 0; 

只有初始化int c。你想:

int a = 0, b = 0, c = 0; 

而不是讓10個不同的變量,你可以使用數組。

int count[10] = {0}; 

這個符號初始化整個數組0(請注意,如果你寫{k}而不是{0},它將僅初始化第一個元素k和陣列來0休息)。

count[i]將是數字i的實例的數量。

0

您還沒有初始化,除了最後一個變量即num_0,1,2你的局部變量...

INT A,B = 0在這種情況下「一」將保持未初始化,只有「B」將是初始化。無論是在不同的行中定義它們像

int a = 0; 
int b = 0; 

int a = 0 , b = 0, 

static int a, b; //default initialized to 0, no need to worry about初始化。