【程式1】
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一
對兔子,假如兔子都不死,問每個月的兔子總數為多少。
1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
斐波那契數列
<?php$k=2;$k1=0;$k2=1;$sum=0;for($i=1;$i<$k;$i++){$sum=$k1+$k2;$k1=$k2;$k2=$sum;}echo $k2;?>
【程式 2 】
題目:判斷101-200之間有多少個素數,並輸出所有素數。
1.程式分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
則表明此數不是素數,反之是素數。
<?php$sum=0;for($i=101;$i<=200;$i++){ for($j=2;$j<=sqrt($i);$j++){ if($i%$j==0){continue 2 ;} } echo $i.'<br/>'; $sum++;}echo $sum."個"?>
做了【程式 3 】
題目:列印出所有的"水仙花數",所謂"水仙花數"是指一個三位元,其各位元字立方和等於該數本身。例如:
153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
1.程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。
<?php$a = array(); for ($i=0;$i<=9;$i++) { for ($j=0;$j<=9;$j++) { for ($m=0;$m<=9;$m++) { if ($i*$i*$i + $j*$j*$j + $m*$m*$m == 100*$i + 10*$j +$m) { $a[] = 100*$i + 10*$j +$m; } } } } print_r($a);
【程式 4 】
題目:將一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。
程式分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。
(2)如果n<>k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,重複執行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。
<?php$num=320;for($i=2;$i<=$num;$i++){ if($num%$i==0){ echo $i; $num=$num/$i; $i=1; }}?>
【程式5】
題目:利用條件運算子的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下
的用C表示。
1.程式分析:(a>b)?a:b這是條件運算子的基本例子。
if(學習成績>=60){else if(學習成績<=89){學生=B;}else{學生=A;}}
【程式6】
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
1.程式分析:利用輾除法。
<?php$m=80;$n=40;function getit($j){for($k=2;$k<=$j/2;$k++){ if($j%$k==0){$arr[]=$k;} } return $arr;}$arrm=getit($m);$arrn=getit($n);for($i=count($arrm)-1;$i>=0;$i--){for($p=count($arrn)-1;$p>=0;$p--){ if($arrm[$i]==$arrn[$p]){echo '最大公約數:'.$arrm[$i];break 2;} }}echo '最小公倍數:'.$m*$n/$arrm[$i];?>
【程式7】
題目:輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。
1.程式分析:利用while語句,條件為輸入的字元不為'\n'.
<?php$str=" he ll l!1234565 _-!";$len=strlen($str);$k=0;$a=0;$b=0;$c=0;$d=0;while($k<$len){if($str[$k]==' '){$a++;}elseif(is_numeric($str[$k])){$b++;}elseif(64<ord($str[$k]) && 91>ord($str[$k]) || 96<ord($str[$k]) && 123>ord($str[$k])){$c++;}else{$d++;}$k++;}echo $a.$b.$c.$d;var_dump(64<$str[2]);?>
做了【程式8】
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),
幾個數相加有鍵盤控制。
1.程式分析:關鍵是計算出每一項的值。
<?php$k=0;$t='';for($y=1;$y<=5;$y++){$g='';for($j=1;$j<=$y;$j++){ $g=$g.'2';}$k+=intval($g);}echo $k;?>
【程式9】
題目:一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程 找出1000以內的所有完
數。
<?php//$num=320;/*for($k=2;$k<=1000;$k++){if(array_sum(part_prime($k))+1==$k){echo $k." ";}}function part_prime($num){for($i=2;$i<=$num;$i++){ if($num%$i==0){ $arr[]=$i; $num=$num/$i; $i=1; }}return $arr;}*///var_dump(part_prime($num));for($i=2;$i<=1000;$i++){ $sum=0; for($k=2;$k<=$i/2;$k++){ if($i%$k==0){$sum+=$k;} } if($sum+1==$i){echo $i.' ';}}?>
【程式10】
題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多
少米。第10次反彈多高。
<?php$k=100;$sum=100;for($i=1;$i<=10;$i++){$k/=2;$sum+=$k;}echo $sum.' '.$k;?>
【程式11】
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數位三位元。都是多少。
1.程式分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。
c語言:
#include<stdio.h>main(){ int i, j, k; int m=0; for(i=1;i<5;i++) for(j=1;j<5;j++) for(k=1;k<5;k++) { if(i!=j&&k!=j&&i!k) m++; printf("%d%d%d\n",q,j,k); } printf("%d\n",m);}
【程式 12 】
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬
元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提成7.5%;20萬到40萬之間時,高於20萬元的部
分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可
提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數。
1.程式分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
<?php$profit=1060000;$num=floor($profit/100000);switch($num){ case 0 : $bonus= $profit* 0.1; break;case 1 : $bonus= 100000* 0.1+($profit-100000)*0.075; break;case 2 :case 3 : $bonus= 100000* 0.1+100000*0.075+($profit-200000)*0.05; break;case 4 :case 5 : $bonus= 100000* 0.1+100000*0.075+200000*0.05+($profit-400000)*0.03; break;case 6 :case 7 :case 8 :case 9 : $bonus= 100000* 0.1+100000*0.075+200000*0.05+200000*0.03+($profit-600000)*0.015; break;case 10 : $bonus= 100000* 0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+($profit-1000000)*0.01; break;}echo $bonus;?>