用c语言 先输入一个【1,20】范围内的整数n,然后用函数编程计算并输出s=1!+2!+...+n!的末6位(不含前导0)。若s不足6位,则直接输出s。不含前导0的意思是,如果末6位为001234,则只输出1234即可。要求程序具有防止非法字符输入和错误输入的能力,即如果用户输入了非法字符或者不在【1,20】范围内的整数,则提示用户重新输入数据。 输入 一个整数n 输出 计算出的s的末6位,不含前导0
时间: 2024-03-25 19:36:12 浏览: 178
C语言程序设计-计算并输出给定整数n的所有因子之和(不包括1与自身);注意:n的值不大于1000.c
5星 · 资源好评率100%
好的,以下是符合你要求的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
long long factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
long long s = 0;
char input[20];
while (1) {
printf("请输入一个1~20之间的整数:");
fgets(input, 20, stdin);
if (sscanf(input, "%d", &n) != 1 || n < 1 || n > 20) {
printf("输入错误,请重新输入\n");
} else {
break;
}
}
for (int i = 1; i <= n; i++) {
s += factorial(i);
}
char s_str[7];
sprintf(s_str, "%lld", s % 1000000);
printf("%d\n", atoi(s_str));
return 0;
}
```
首先定义了一个计算阶乘的函数`factorial`,然后使用一个循环,不断让用户输入一个1~20之间的整数,并且防止输入非法字符或者不在范围内的整数。当用户输入正确的整数n后,就计算1! + 2! + ... + n!的值s,并把s的末6位转为字符串,去掉前导0,最后输出结果。需要注意的是,这里使用了`sprintf`函数把`s`的末6位转为字符串,再使用`atoi`函数把字符串转为整数。
阅读全文