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;不過沒必要,會浪費時間;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章