对于一个正整数,有若干行,每一行一个正整数,对应输出各位数字之和,用C语言写
时间: 2024-09-27 09:08:56 浏览: 99
在C语言中,你可以遍历输入的每个整数,然后对每一位进行求和。这里有一个简单示例,使用了`scanf`和`printf`来读取和输出数值,以及`isdigit`函数来检查每一位是否有效:
```c
#include <stdio.h>
#include <ctype.h>
void sum_digits(int num) {
int digit_sum = 0;
while (num > 0) {
digit_sum += (num % 10); // 取最后一位
num /= 10; // 移除最后一位
}
printf("输入的数字各位数字之和是:%d\n", digit_sum);
}
int main() {
int number;
printf("请输入一个正整数,按回车键结束输入:");
// 使用无限循环来接收用户输入直到EOF(End of File)
while (scanf("%d", &number) == 1) {
sum_digits(number);
}
return 0;
}
```
这个程序会在输入一个正整数后立即计算并输出其各位数字之和。当用户不再输入数字时,程序会停止。
相关问题
c语言有若干行,每行一个正整数,对应输出各位数字的和
在C语言中,如果你有一个包含一行一个正整数的文本文件或数组,你可以通过遍历每个数位并累加它们的方式来计算每一位的和。这里是一个简单的示例程序,它假设输入的是字符串表示的数字:
```c
#include <stdio.h>
#include <string.h>
int sumDigits(char *num) {
int len = strlen(num);
int sum = 0;
for (int i = 0; i < len; i++) {
if (isdigit(num[i])) { // 检查字符是否是数字
sum += num[i] - '0'; // 将字符转为数字并加入总和
}
}
return sum;
}
int main() {
char input[100]; // 假设输入不超过三位数
FILE *file = fopen("numbers.txt", "r"); // 假设文件名为numbers.txt
if (file != NULL) {
while (fgets(input, sizeof(input), file)) {
int sum = sumDigits(input);
printf("Number %s: Sum of digits is %d\n", input, sum);
}
fclose(file);
} else {
printf("Failed to open the file.\n");
}
return 0;
}
```
这个程序首先打开一个文件,然后逐行读取,对每一行的数字应用`sumDigits`函数,并打印出每位数字之和。
有若干行,每行一个正整数,每行对应输出该数的位数C语言
在C语言中,你可以通过迭代和取模运算来计算每个正整数的位数。这里是一个简单的示例程序:
```c
#include <stdio.h>
// 计算正整数位数的函数
int count_digits(int num) {
int digit_count = 0;
while (num != 0) {
num /= 10; // 取除十进制位
digit_count++;
}
return digit_count;
}
int main() {
int numbers[] = {123, 456789, 78, 9999};
const int array_size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < array_size; i++) {
int current_num = numbers[i];
printf("数字 %d 的位数是: %d\n", current_num, count_digits(current_num));
}
return 0;
}
```
这个程序首先定义了一个名为`count_digits`的函数,它接受一个正整数`num`,然后通过循环不断除以10并计数直到`num`变为0,最后返回计数结果。主函数中,我们创建了一个数组`numbers`,遍历数组并对每个元素调用`count_digits`函数,打印出每个数的位数。
阅读全文