c语言先输入一个(1, 10)范围内的整数n,然后用函数编程计算并输出1!+2!+3!+···+ n!。 要求程序具有防止非法字符输人和错误输人的能力,即如果用户输入了非法字符或者不在[1, 10范围内的整数,则提示用户重新输人数据。
时间: 2024-12-02 15:29:04 浏览: 42
在C语言中,你可以通过循环结构、输入验证以及递归函数来实现这个功能。下面是一个示例程序:
```c
#include <stdio.h>
unsigned long factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
int main() {
int n;
char input[10];
printf("请输入一个1到10之间的整数:");
fgets(input, sizeof(input), stdin); // 使用fgets避免直接读取换行符
while (1) { // 循环处理非法输入
int parsed_num = strtol(input, &endptr, 10); // 尝试转换输入字符串为整数
if (*endptr != '\0' && endptr != input && parsed_num >= 1 && parsed_num <= 10) { // 验证输入是否合法
n = parsed_num;
break; // 输入合法,退出循环
} else {
printf("输入无效,请重新输入一个1到10之间的整数:");
input[strlen(input) - 1] = '\0'; // 清除上一次输入
}
}
unsigned long sum = factorial(n);
printf("1! + 2! + ... + %d! = %lu\n", n, sum);
return 0;
}
```
在这个程序中,`factorial` 函数用于计算阶乘,`main` 中有一个无限循环用于接收用户输入,并检查其有效性。如果输入合法,计算结果会输出;否则会提示用户重新输入。
阅读全文