2009年3月23日 星期一

C語言的範例 –數學問題*2

C語言的範例 數學問題
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大? 
1.程式分析:利用遞迴的方法,遞迴分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10歲),再往回推。 
2.程式源代碼: 
age(n) 
int n; 
{ 
int c; 
if(n==1) c=10; 
else c=age(n-1)+2; 
return©; 
} 
main() 
{ printf("%d",age(5)); 
} 
============================================================== 
C語言的範例 –數學問題
題目:給一個不多於5位元的正整數,要求:一、求它是幾位數,二、逆序列印出各位數位。 
1. 程式分析:學會分解出每一位數,如下解釋:(這裏是一種簡單的演算法 
2.程式源代碼: 
main( ) 
{ 
long a,b,c,d,e,x; 
scanf("%ld",&x); 
a=x/10000;/*分解出萬位*/ 
b=x%10000/1000;/*分解出千位*/ 
c=x%1000/100;/*分解出百位*/ 
d=x%100/10;/*分解出十位*/ 
e=x%10;/*分解出個位*/ 
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); 
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); 
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); 
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d); 
      else if (e!=0) printf(" there are 1,%ld\n",e); 
}