例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=%fn",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("%dn",f1); } else { if(n%2==0) f1=f2+f1; else f2=f1+f2; if(f1>f2) printf("%dn",f1); else printf("%dn",f2); } } }
法2:(参考答案)
#include<stdio.h> void main() { int f1,f2,n; f1=1; f2=1; for(n=1;n<=20;n++) { printf("%dn%dn",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 numbern",m); break; } } if(i==m) printf("%d is a prime numbern",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("%dn",m); } } }
例5:按以下规律将电文变成密码:
将字母A变成字母E,a变成e,即变成其后的第四个字母,W变成A,X变成B,Y变成C,Z变成D。
提示:两个功能:
一、输入原文译成密码。
二、输入密码译成原文。
- 还没有人评论,欢迎说说您的想法!