C语言第十一堂课后作业

作业题1:
任意输入一个整数如 123456(或-123456),逆序输出;654321(或-654321)

-----------------------分割线-----------------------

#include<stdio.h>
int main(void)

{
	int num;
	while(scanf("%d",&num)!=EOF)
	{
		if(num==0)printf("0\n");
		else {
			int a=0,b=0,Q=0,p=0;
		while(num%10==0)
		{
			p++;
			num/=10;
		}
		
		if(num<0){
			Q=1;
			num=-num;
		}
	    while(num!=0)
		{
			b=num%10;
			a=a*10+b;
			num=num/10;
		}if(Q)printf("-");
		while(p--)printf("0");
		printf("%d\n",a);
		}
			
	}
}

不知道     比如    输入1230      输出  是  321   还是    0321       不过输入0123就只能输出321了,  如果要实现0123-3210,我想可以用指针实现;



作业题2:
费式数列(Fibonacci)的前两项为1、1,之后的每一项为前两项之和,即Fn =Fn-1 +Fn-2,费式数列的前10项为:1 、1、2、3、5、8、13、21、34、55。输入一个正数数n ( n <= 40 ),计算出费式数列的第n项之值并输出。
要求:利用递归函数
-----------------------分割线-----------------------


#include<stdio.h>
int fun(int n);
int t[40];
int main(void)
{
	
	t[0]=t[1]=1;
	int n;
	while(scanf("%d",&n)!=EOF&&n<40&&n>0)
	{
		t[n-1]=fun(n);
		printf("%d\n",t[n-1]);
	}
}
int fun(int n)
{
	if(t[n-1])return t[n-1];
	else return fun(n-1)+fun(n-2);
}

不单单用了直接的递归,还照顾了一下时间效率;




作业题3:
编写程序,输入一个正整数N,如果N 是质数则输出Y,否则输出N。:
要求:利用自定义函数P(N)检查N 是不是质数


#include<stdio.h>
char fun(int n);
int main(void)
{
	int n;
	while(scanf("%d",&n)!=EOF&&n>0)
		printf("%c\n",fun(n));
}
char fun(int n)
{
	int i;
	for(i=2;i*i<=n;i++)
	if(n%i==0)return 'N';
	return 'Y';
}

就这么实现;i*i<=n也可以换成i<=n;不过没必要,会浪费时间;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值