我有一個陣列 [8][8]
char d[ROWS][COLS] = {
{0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0},
{0, 2, 0, 2, 0, 2, 0, 2},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{3, 0, 3, 0, 3, 0, 3, 0},
{0, 3, 0, 3, 0, 3, 0, 3},
{3, 0, 3, 0, 3, 0, 3, 0}};
int countOccurrences(char d[ROWS][COLS], int i, int j, int res)
{
res = 0;
for (i=0; i<=ROWS; i ){
for(j=0; j<=COLS; j ){
if ('2' == d[ROWS][COLS])
res ;
}
}
return res;
printf("score%d", res);
}
我的代碼不起作用,我需要查找并計算二維陣列中的出現次數并將其列印出來
uj5u.com熱心網友回復:
我發表了評論,但我也會繼續使用固定功能進行回復。我將指出代碼中的三個主要問題:
- 在您的代碼中,陣列中有數字,但隨后您嘗試將字符與數字進行比較(
'2' == 2為假),這意味著您的結果總體上為 0 - print陳述句是之后的
return,這意味著它不會實際運行。 - if陳述句
if (2 == d[ROWS][COLS])是始終要檢查在位置的數字ROWS和COLS。第一個問題存在著ROWS和COLS不改變立場,這是一個常數; 您想檢查位置i和j。其次,由于 C 中的陣列是從零開始的,訪問d位置[ROWS][COLS]實際上會指向一些未知的記憶體空間,因為這超出了陣列的范圍,但這只是一個有趣的事實。
下面的代碼應該可以解決我上面指出的問題:
char d[ROWS][COLS] = {
{0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0},
{0, 2, 0, 2, 0, 2, 0, 2},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{3, 0, 3, 0, 3, 0, 3, 0},
{0, 3, 0, 3, 0, 3, 0, 3},
{3, 0, 3, 0, 3, 0, 3, 0}};
int countOccurrences(char d[ROWS][COLS], int i, int j, int res) {
res = 0;
// NOTICE that it is now i < ROWS and j < COLS instead of
// i <= ROWS and j <= COLS to deal with what I mentioned
// before about the zero-based indexing in C, which means
// we need to stop BEFORE ROWS and COLS
for (i = 0; i < ROWS; i ) {
for (j = 0; j < COLS; j ) {
if (2 == d[i][j])
res ;
}
}
printf("score%d", res);
return res;
}
uj5u.com熱心網友回復:
您的代碼存在一些問題:
- 您有一個 char
'2',它將轉換為您的系統使用的任何字符編碼,在我的情況下,ASCII,它將由 value 保存50,并且您將它與 value 進行比較2,它將回傳false. - 您
d[ROWS][COLS]每次都在比較,這可能不是您想要的。 - 在您的回圈中,有時會嘗試訪問
d[ROW][...],d[...][COL],這將產生越界錯誤。 - 你為你的函式做了太多不必要的引數。
- 你
return之前printf(),所以printf()永遠不會被處決。
建議代碼:
char d[ROWS][COLS] = {
{'0', '2', '0', '2', '0', '2', '0', '2'},
{'2', '0', '2', '0', '2', '0', '2', '0'},
{'0', '2', '0', '2', '0', '2', '0', '2'},
{'1', '0', '1', '0', '1', '0', '1', '0'},
{'0', '1', '0', '1', '0', '1', '0', '1'},
{'3', '0', '3', '0', '3', '0', '3', '0'},
{'0', '3', '0', '3', '0', '3', '0', '3'},
{'3', '0', '3', '0', '3', '0', '3', '0'}};
int countOccurrences(char d[ROWS][COLS])
{
int res = 0;
int i;
int j;
for (i=0; i<ROWS; i ){
for(j=0; j<COLS; j ){
if ('2' == d[i][j])
res;
}
}
printf("score%d", res);
return res;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335622.html
上一篇:為什么這段代碼沒有正確執行計算?給定半徑的球體的體積
下一篇:由于分段錯誤,哈希表不起作用
