C实例No.2|阶乘与斐波那契数列

it2025-04-02  9

C实例

内容阶乘斐波那契数列 代码

内容

阶乘斐波那契数列

阶乘

阶乘就是指所有小于及等于该数的正整数的积仅限于正整数,其它非法输入则报错,例如12.3、456abc、abc0的阶乘为1

斐波那契数列

仅限于正整数,即表示数列元素的个数,其它非法输入则报错,例如12.3、456abc、abc第一、二个元素为1,从第三个元素开始,后个元素为前两个元素之和即1、1、2、3、5、8、13、…

代码

1.阶乘

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char m[20]= {0}; int n,i; int s; printf("输入阶乘的数:\n"); while(scanf("%s",&m)!=EOF) { if (strspn(m, "0123456789") == strlen(m)) //排除出现小数以及输入字母等非法错误 { n=atoi(m); if(n>0) { s=1; for(i=1;i<=n;i++) { s=s*i; } } if(n==0) { s=1; } printf("%s的阶乘结果是:%d\n",&m,s); if(n<0) { printf("****输入出错****\n"); } //printf("%s的阶乘结果是:%d\n",&m,&s); } else { printf("****输入出错****\n"); } } return 0; }

2.斐波那契数列

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char m[200]= {0}; int n,i; int a,b,s; a=1;b=1; printf("斐波那契数列元素的个数为:\n"); while(scanf("%s",&m)!=EOF) { if(strspn(m,"0123456789") == strlen(m)) { n = atoi(m); if(n>2) { a=1;b=1; //每一轮输出后变量要重新初始化 printf("输出结果为:1,1,"); //特殊的值单独提出来 for(i=1; i<=n-2; i++) { s = a+b; a = b; b = s; printf("%d,",s); } printf("\n"); } if(n>0&&n<=2) { printf("输出结果为:"); for(i=1; i<=n; i++) { printf("%d,",b); } printf("\n"); } if(n<=0) { printf("****输入出错****\n"); } } else { printf("****输入出错****\n"); } } return 0; }
最新回复(0)