gpt4 book ai didi

c - 解释代码: positive integer conversion to other cardinal number,逆序显示

转载 作者:行者123 更新时间:2023-11-30 15:03:05 24 4
gpt4 key购买 nike

// Program to convert a positive interger another base 
#include <stdio.h>

int main (void)
{
const char baseDigits[16] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F' };
int convertedNumber[64];
long int numberToConvert;
int nextDigit, base, index = 0;

// get the number and the base


printf ("Number to be converted?");
scanf ("%ld", &numberToConvert);
printf("Base?");
scanf ("%i",&base);

// convert to the indicated base

do {
convertedNumber[index] = numberToConvert % base;
++index;
numberToConvert = numberToConvert / base;
}
while (numberToConvert != 0);
//display the result in the reverse order

printf(" Converted number = ");

for (--index;index >= 0; --index) {
nextDigit = convertedNumber[index];
printf ("%c", baseDigits[nextDigit]);
}

printf("\n");
return 0;
}

我不明白这段代码。它如何能够显示相反的顺序?特别是括号内的 for 语句。为什么--index出现两次?它和index >=0是什么意思? nextDigit有什么用?

for (--index;index >= 0; --index) {   
nextDigit = convertedNumber[index];
printf ("%c", baseDigits[nextDigit]);

另一个新问题:“”为什么我们至少还应该输出一个数字?那么这里有 do 循环吗?""

(因为使用scanf读取格式化输入符号的长整数个数是%ld。因为即使用户输入的是0,我们也应该输出一个数字至少,所以这里使用 do 循环)

最佳答案

例如,考虑一个需要转换为二进制的数字 n。
现在,如果数字 n 被多次除以 2,您将获得该数字的倒数二进制表示形式。例如,

假设n=4,然后考虑循环,我们发现,该数字在convertedNumber中存储为001,这基本上是4(100)的二进制表示的反转。

转换结束时,索引会额外增加一次。对于 n=4 的情况,索引=3(2 个增量 + 一个额外的时间)。
因此, for(--index;index>=0;--index) 基本上表明,
从索引=2(--索引(3)=2)开始for循环,循环直到索引>=0,每次循环后递减一次。这将打印出反向的“反向”。(在n=4的情况下,001 打印为 100,即二进制 4)。

关于c - 解释代码: positive integer conversion to other cardinal number,逆序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40845946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com