gpt4 book ai didi

c - 我怎样才能在 C 中具体取出整数中的数字?

转载 作者:太空狗 更新时间:2023-10-29 15:51:59 25 4
gpt4 key购买 nike

假设我有一个名为 SIN 的整数,scanf 输入接收到 193456787。

所以 SIN = 193456787;

我想做的是将第一个数字之后的所有其他数字相加。

所以 9 + 4 + 6 + 8 = 27

有人可以向初学者解释如何做到这一点吗?

最佳答案

打印数字,然后每隔一个数字求和

int sum_every_other_digit_after_first(unsigned long long x) {
char buf[sizeof x * CHAR_BIT];
sprintf(buf, "%llu", x);
char *p = buf;
int sum = 0;
while (*p) {
p++; // Skip digit
if (*p) {
sum += *p++ - '0';
}
}
return sum;
}

或受 @PageNotFound 的启发

int sum_every_other_digit_after_first(unsigned long long x) {
int esum = 0;
int osum = 0;
while (x > 0) {
esum += x%10;
x /= 10;
if (x == 0) {
return osum;
}
osum += x%10;
x /= 10;
}
return esum;
}

或者为了好玩,一个递归的解决方案

int sum_every_other_digit_after_first_r(unsigned long long x, int esum, int osum) {
if (x >= 100) {
int digit2 = x % 100;
esum += digit2 % 10;
osum += digit2 / 10
return sum_every_other_digit_after_first_r(x / 100, esum, osum);
}
if (x >= 10) {
return esum + x % 10;
}
return osum;
}
sum_every_other_digit_after_first_r(1234567,0,0) --> 12

关于c - 我怎样才能在 C 中具体取出整数中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239887/

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