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

内容

  1. 阶乘
  2. 斐波那契数列

阶乘

在这里插入图片描述

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

斐波那契数列

在这里插入图片描述

  1. 仅限于正整数,即表示数列元素的个数,其它非法输入则报错,例如12.3、456abc、abc
  2. 第一、二个元素为1,从第三个元素开始,后个元素为前两个元素之和
  3. 即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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值