簡體   English   中英

我的 for 循環的某個部分的輸出

[英]The output of a certain part of my for loop

#include <stdio.h>
int num, i, k, a[5];
int main() {
    a[0]=2;
    a[1]=11;
    a[2]=12;
    a[3]=16;
    a[4]=28;
    num=a[1+3]
    i=4;
    while(num>0){
        a[i]=num%4;
        num=num/3;
        printf("%d ",num);
        i--;
    }
    printf("8\n");
    for(k=0;k<5;k++){
        printf("%c ",65+a[k]);
    }
    printf("\n);
}

這個程序的輸出是:

9 3 1 0 8

生物多樣性公約

我完全理解第一行的輸出如何,但對第二部分感到相當困惑。

for(k=0;k<5;k++){
    printf("%c ",65+a[k]);

這一點讓我感到困惑,因為根據我的理解,循環第一次應該是 k=0 然后打印 %c 來自 65+a[k] 其中 k 當前為 0 所以 65+a[0]。 從前面的部分,我們看到 a[0]=2 和 65+2 是 67,它是字符“C”。 這在輸出上是正確的,但如果我對第二個循環 65+a[k] 遵循相同的邏輯,其中 k=1 所以 65+a[1] 和 a[1] 是 11,65+11 是 76,這將等於字符“K”但這是錯誤的,因為它應該是字符“B”。

我覺得這行代碼是我遺漏的地方:

a[i]=num%4

但它實際上並沒有設置一個數字,所以仍然很困惑。

任何幫助表示贊賞

a[i]=num%4確實設置了數字。 這是如何:

在你的循環中:

 while(num>0){
    a[i]=num%4;
    num=num/3;
    printf("%d ",num);
    i--;
}

num與輸出的第一行相同。

a[i]=num%4;

實際上設置數組中的值如下:

最初, i=4num=28 所以,

a[i]=num%4; a[4]28%4=0 因此,您的最后一個字符是A+0=A

然后i=3num=9 所以,

a[i]=num%4; a[3]9%4=1 因此,您的倒數第二個字符是A+1=B

然后i=2num=3 所以,

a[i]=num%4; a[2]3%4=3 因此,您的倒數第三個字符是A+3=D

然后i=1num=1 所以,

a[i]=num%4; a[1]1%4=1 因此,您的倒數第四個字符是A+1=B

然后i=0num=0 所以,

我們不進入循環。 a[0]=C ,它的初始值。

因此我們得到: CBDBA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM