我不知道我對這個數組做錯了什麼

Laughcheeta1

我試圖將序列的數字分開,並將它們全部存儲在一個數組中。

對於我所看到的 C 語言,我沒有做錯任何事情,並且程序編譯得很好,但是在打印數字的那一刻,它就不起作用了。

我試圖做的事情的解釋在最後。

long int number;
    
do
{
    number = get_long("number:\n");
}
while (number<1 || number>9999999999999999);
    
int numbers[16], n;
//We separate the numbers, from right to left
for (long int I=10; I>100000000000000000; I*=10)
{
    for (long int J=1; J>100000000000000000; J*=10)
    {
        for (n=0; n>16; n++)
        {
            numbers[n]=(number%I)/J;
        }
    }
}
    
printf("%i\n", numbers[1]);

它應該接受 1 位到 16 位的數字,並將每個數字分開。

例如,如果我們有16,它會分離1,並6分為兩個數字,使得6第一個數字,而1第二個,所以要離開它會開始從右計數。它應該將每個數字存儲在 16 個空格的數組中。然後我只打印第二個數字,以確保它確實有效,但是當我運行它時,它只會給我0這意味著它不起作用,但我認為它沒有問題。

可能是我太缺乏經驗,或者我沒有必要的知識,無法在代碼中看到問題。

池上
  • 您有不正確的循環終止檢查,因此永遠不會輸入循環。
  • >轉到 後<,即使只有 16 位數字,您最終也會對內部循環的主體進行 16*16*16 = 4096 次求值。應該只有 16 次迭代的一個循環。
  • A long intis not 僅​​保證支持最多2,147,483,647. 相反,使用的一個long long intint_least64_t或者int64_t,或者其對應的無符號之一。

您試圖編寫以下內容:

uint64_t mod = 10;  // Formerly named I
uint64_t div = 1;   // Formerly named J
for (int n=0; n<16; ++n) {
   numbers[n] = ( number % mod ) / div;
   mod *= 10;
   div *= 10;
}

演示

但這比需要的要復雜一些。讓我們交換除法和模數的順序。

uint64_t div = 1;
for (int n=0; n<16; ++n) {
   numbers[n] = ( number / div ) % 10;
   div *= 10;
}

演示

最後,如果我們不介意number在這個過程中搞砸的話,我們可以稍微簡化一下

for (int n=0; n<16; ++n) {
   numbers[n] = number % 10;
   number /= 10;
}

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

計數變量不起作用,我不知道為什麼

這個 sed end-case 沒有意義,我不知道為什麼

我不斷收到段錯誤,不知道為什麼

我不斷收到此錯誤代碼,但不知道為什麼?只有整數、切片 (`:`)、省略號 (`...`)、numpy.newaxis (`None`) 和整數或

我在數據庫中創建記錄時遇到問題。我不知道它可能是什麼

向 LeafletJs 地圖添加疊加層正在改變數據,我不知道為什麼

JavaScript,我做錯了什麼?

我不知道有什麼區別

如何打印出一個階乘數?我的代碼不斷打印出太多數字,我不知道為什麼?

有人能發現我代碼中的錯誤嗎?我不知道我錯過了什麼部分,我搞砸了什麼

方法打印的比我預期的要多,我不知道為什麼

我不知道為什麼我收到錯誤“核心轉儲”C++

大學問題,我不知道該怎麼辦(質數)

誰能告訴我為什麼這個函數在調用時會拋出錯誤

“範圍內”無法正常工作,我不知道為什麼

我不知道為什麼我的數組顯示錯誤的數字。只想知道為什麼會這樣?

這段代碼得到一個錯誤,這些變量沒有被分配到,我不知道為什麼

不知道為什麼我不能調整 div 的大小?

我的代碼中是否有任何洩漏,只有 1 個案例不起作用我不知道為什麼?

str 不可調用錯誤。我正在用 python 製作一個狗頭勝過代碼,我想知道是否有人知道我為什麼會收到這個錯誤

我犯的無法讀取數組對象長度的錯誤是什麼?

我的程序總是停止,我不知道為什麼

我清楚地看到定義了一個位置參數,為什麼它給我這個錯誤?

我想標記日期,但我不知道該怎麼做

我試圖通過輸入刪除數組列表的元素,但程序在第三個輸入處停止,我想知道它為什麼這樣做

我的圖像相互重疊,我不知道為什麼

我的常數在變化,我不知道為什麼,甚至不知道如何

VLOOKUP 不工作 不工作,我不知道為什麼

我的字體出現錯誤,我不知道為什麼。我已將我的字體放在同一個文件夾中,但它說的是以下內容