繁体   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