程式舉例(初學者)
例1:用Π/4=1-1/3+1/5-1/7+...公式求Π的近似值,直到某一項的絕對值小於10^6為止。
提示:(1)要確定計算的精度,可以配合while迴圈語句用fabs()函式確定精度來退出。
(2)據觀察,分子不變,分母卻每次遞增2,且正負切換。
(3)記得結果乘以4。
#include<stdio.h> #include<math.h> void main() { int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)>1e-6) { pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf("pi=%f\n",pi); }
例2:求Fibonacci數列前40個數。這個數列有如下特點:第1、2兩個數為1,1。從第三個數開始,該數是其前面兩個數之和。
即:
F(1)=1(n=1)
F(2)=1(n=2)
F(n)=F(n-1)+F(n-2)
法1:(我自己做的)
#include<stdio.h> void main() { int f1,f2,n; n=1; for(f1=1;n<=40;n++) { if(n<=2) { f2=1; printf("%d\n",f1); } else { if(n%2==0) f1=f2+f1; else f2=f1+f2; if(f1>f2) printf("%d\n",f1); else printf("%d\n",f2); } } }
法2:(參考答案)
#include<stdio.h> void main() { int f1,f2,n; f1=1; f2=1; for(n=1;n<=20;n++) { printf("%d\n%d\n",f1,f2); f1=f1+f2; f2=f2+f1; } }
例3:寫一個程式,允許輸入一個數m,並判斷m是否為素數。
演算法思想:讓m被2到k除,如果m能被2~k之中任何一個整數整除,則提前結束迴圈,此時i必然小於或等於k;如果m不能被2~k之間任意一整數整除,則在完成最後一次迴圈後,i還要加1,因此i=k+1,然後才終止迴圈。在迴圈之後判別i的值是否大於或等於k+1,若是,則表明未曾被2~k之間任意整數整除過,因此輸出“是素數”。
法1:(我自己做的)
#include<stdio.h> void main() { int i,m; scanf("%d",&m); for(i=2;i<m;i++) { if(0==m%i) { printf("%d is not a prime number\n",m); break; } } if(i==m) printf("%d is a prime number\n",m); }
法2(參考答案)
#include<stdio.h> #include<math.h> void main() { int m,i,k; scanf("%d",&m); k = sqrt(m); for(i=2;i<=k;i++) { if(m%i==0) { break; } } if(i>k) { printf("%d is a prime number",m); } else { printf("%d is not a prime number",m); } }
例4:把100~200間的素數全部打印出來。
#include<stdio.h> void main() { int m,i; for(m=100;m<=200;m++) { for(i=2;i<m;i++) { if(0==m%i) break; } if(m==i) { printf("%d\n",m); } } }
例5:按以下規律將電文變成密碼:
將字母A變成字母E,a變成e,即變成其後的第四個字母,W變成A,X變成B,Y變成C,Z變成D。
提示:兩個功能:
一、輸入原文譯成密碼。
二、輸入密碼譯成原文。