从键盘读入一个正整数,进行数据合法性检查,然后求这个正整数各个位上的数字和
时间: 2024-11-13 11:41:52 浏览: 21
要从键盘读入一个正整数并检查其合法性,然后计算各个位上的数字和,你可以使用以下C语言代码:
```c
#include <stdio.h>
int main() {
long int num;
char input[50];
// 从键盘读取整数
printf("请输入一个正整数: ");
fgets(input, sizeof(input), stdin);
// 去除末尾的换行符
input[strcspn(input, "\n")] = '\0';
// 尝试转换为长整型并检查是否合法
num = strtol(input, &endptr, 10);
if (*endptr == '\0' && num >= 0) {
// 数字有效,计算各位和
int digit_sum = 0;
while (num != 0) {
digit_sum += num % 10; // 取个位
num /= 10; // 移除个位
}
printf("各个位上的数字和为: %d\n", digit_sum);
} else {
printf("输入不是一个有效的正整数。\n");
}
return 0;
}
```
这段代码首先读取用户输入的字符串,然后使用`strtol`函数尝试将其转换为长整型。如果转换成功并且结果非负(表示正整数),则计算每个数字的和。如果转换失败(如输入包含非数字字符或不是正数),则输出错误信息。
阅读全文