内容
- 阶乘
- 斐波那契数列
阶乘
- 阶乘就是指所有小于及等于该数的正整数的积
- 仅限于正整数,其它非法输入则报错,例如12.3、456abc、abc
- 0的阶乘为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;
}