帮我用c语言变编程,要求实现对任意输入的一个整数,输出它的位数以及各位数字之和。
时间: 2024-10-10 08:10:37 浏览: 32
C语言中的水仙花数,是指一个 n 位数,它的每个位上的数字的n次方之和等于它本身
在C语言中,我们可以使用循环和取模运算来获取整数的位数,并逐位累加。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h> // 引入math库用于取对数计算位数
int main() {
int num, digit_sum = 0, bit_count = 0; // 初始化数值、和为0,位数为0
double log_base_10;
printf("Enter an integer: ");
scanf("%d", &num);
// 计算位数(不包括符号)
log_base_10 = log10(num);
bit_count = floor(log_base_10 + 1); // 取整得到非负位数
// 计算每位数字之和
while (num != 0) {
digit_sum += num % 10; // 取余操作得到最低有效位,累加到总和
num /= 10; // 向右移一位
}
printf("Number of digits: %d\n", bit_count);
printf("Sum of digits: %d\n", digit_sum);
return 0;
}
```
在这个程序中,我们首先读取用户输入的整数。然后通过取对数再取地板值得到位数(注意,这里不包括符号位)。接着用一个while循环,不断从原始数中取出最低有效位并累加到`digit_sum`,直到数变为0。
阅读全文