基本上我試圖問的是,是否有讀取數組中的數據,以便您可以爲它創建一個'case'。預讀數組以預測後面的結果C
例如:您陣列只有整數,如:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3
,你想嘗試做的是創造一個什麼coutdown直到下一個非零數字。基本顯示倒計時。有沒有辦法做到這一點?
基本上我試圖問的是,是否有讀取數組中的數據,以便您可以爲它創建一個'case'。預讀數組以預測後面的結果C
例如:您陣列只有整數,如:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3
,你想嘗試做的是創造一個什麼coutdown直到下一個非零數字。基本顯示倒計時。有沒有辦法做到這一點?
此代碼:
#include <stdio.h>
int main(void)
{
int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };
int a_size = sizeof(array)/sizeof(array[0]);
int i = 0;
while (i < a_size)
{
if (array[i] == 0)
{
int j;
for (j = i; j < a_size; j++)
if (array[j] != 0)
break;
printf("%d\n", j - i);
i = j;
}
else
i++;
}
return 0;
}
產生這樣的輸出:
4
1
12
如果這是你想要的東西,那是大概你所需要的。如果它不是你想要的,你需要更清楚地解釋你想要的是什麼。
修訂了修正後的預計輸出代碼:
#include <stdio.h>
int main(void)
{
int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };
int a_size = sizeof(array)/sizeof(array[0]);
int i = 0;
while (i < a_size)
{
if (array[i] == 0)
{
int j;
for (j = i; j < a_size; j++)
if (array[j] != 0)
break;
int k = j - i;
while (k > 0)
printf(" %d", k--);
i = j;
}
else
{
printf(" '");
i++;
}
}
putchar('\n');
return 0;
}
修訂輸出:
4 3 2 1 ' 1 ' 12 11 10 9 8 7 6 5 4 3 2 1 '
啊,有點。 12我想象的是總的大小(20) - 4 - 3 - 1 = 12。我會盡力解釋它好一點: Couter:4 3 2 1'1'12 11 10 9 8 7 6 5 4 3 2 1' array:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3 有什麼方法可以表示這種情況嗎? –
12是數組中1和3之間的零數(至少,它是如何計算的)。它也是長度(20)減去另外兩組零的長度,減去非零的數量。是的,請嘗試再次解釋您想要的內容(編輯問題 - 主要是添加信息),以及您如何確定答案,以及給定數據的預期答案。 –
請解釋更多!我不明白... – MeNa
基本上我想顯示的倒計時,直到下一個非零數字 爲第一個案件...直到它遇到數字'4'顯示從倒數第一0到倒計時4所以4,3,2,1「實際數字」。然後,從那個4到1只有1個零,所以:1,「實際數字」等。 –
那麼,你允許多次讀取數組嗎?你的程序的目的是什麼? –