gpt4 book ai didi

c - 取数字并将其存储在C中的 vector 中

转载 作者:行者123 更新时间:2023-11-30 19:24:52 25 4
gpt4 key购买 nike

我正在尝试读取00000000000 <= n <= 99999999999的数字n,并将其数字放入向量中以对其进行运算。

#include<stdio.h>
int main(){
long long int num = 0, power = 1, cpf[12], qtd=0;
scanf("%lld",&num);
while(num != 0)
{
long long int digit = num /power;

printf("%lld\n", digit);
cpf[qtde] = digit;
qtde++;
if(digit!=0)
num=num-digit*power;
if(power!=1)
power/=10;

}

return 0;

}



它不存储前导零或尾随零。有关如何修复的任何提示?

最佳答案

您声称没有存储前导零和尾随零,但这并非完全正确。

如评论中所述,整数值没有任何前导零。这些仅是该值的打印(或键入)表示形式的一部分。整数00123123的值相同(忽略八进制表示)。

这意味着仅尾随零。但是您的代码所做的事情与您的描述所指示的完全不同。
它不会在您的数组中存储任何数字。
让我们来看一下您的代码:

  long long int num = 0, power = 1, cpf[12], qtd=0;
scanf("%lld",&num);

// Let's assume you entered 1234.

while(num != 0)
{
long long int digit = num /power;
// During first iteration we have power==1 => digits=num ==1234

printf("%lld\n", digit);
cpf[qtde] = digit;
// You store your whole number (1234) in the first element of the array.

qtde++; // advance to second element

if(digit!=0)
num=num-digit*power;
// With digit==num and power==1 you get num=num-num*1 which equals 0 !!

if(power!=1)
power/=10;
// during first iteration power==1 and will never change.
// Also: dividing by 10 would not be useful anyway.

// Now num==0 and we will not take another round in the loop...
}


除非您运行一些不同的代码,否则您不仅会丢失尾随零,而且最终只会在数组中以与初始编号相同的1个元素结束。

如何解决问题:

仅当您将输入作为字符串处理时,才能保留前导零。然后,您可以分别处理每个数字,只需要将一个字符转换为其数字值即可。 ( '1' => 1
这还将解决代码中数字的错误分隔。

如果不需要前导零,则应首先增加 power,只要它不大于初始数字即可。然后,您将循环遍历每个十进制数字。
而且您只需要在数组的每个元素中存储最高有效位。

关于c - 取数字并将其存储在C中的 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739372/

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