111?1?????例5.7用 4 7 公式求 ? 的近似值,直到发现某一项的绝对值小于3 510*6 为止(该项不累计加)。 编写程序:
#include
int sign=1; // sign用来表示数值的符号
double pi=0.0,n=1.0,term=1.0; // pi代表π,n代表分母,term代表当前项的值
while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方 {
pi=pi+term; // 把当前项term累加到pi中 n=n+2; // n+2是下一项的分母
sign=-sign; // sign代表符号,下一项的符号与上一项符号相反 term=sign/n; // 求出下一项的值term }
pi=pi*4; // 多项式的和pi乘以4,才是π的近似值 printf(\ // 输出π的近似值 }
#include
int sign=1; // sign用来表示数值的符号 int t=0; // t 代表当前执行循环体的次数
double pi=0.0,n=1.0,term=1.0; // pi代表π,n代表分母,term代表当前项的值
while(fabs(term)>=1e-6) // 检查当前项term的绝对值是否大于或等于10的(-6)次方 {t=t+1; // 每进入一次循环体,t的值加1 pi=pi+term; // 把当前项term累加到pi中 n=n+2; // n+2是下一项的分母
sign=-sign; // sign代表符号,下一项的符号与上一项符号相反 term=sign/n; // 求出下一项的值term }
pi=pi*4; // 多项式的和pi乘以4,才是π的近似值 printf(\ // 输出π的近似值 }
?例5.8 求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即: (n?1)?F1?1? (n?2)?F2?1 ?F?F?F(n?3)n?1n?2?n
编写程序:
#include
int f1=1,f2=1,f3; int i;
printf(\ for(i=1; i<=38; i++) { f3=f1+f2; printf(\ f1=f2; f2=f3;
}
return 0; }
#include
int f1=1,f2=1; int i;
for(i=1; i<=20; i++) { printf(\ if(i%2==0) printf(\
f1=f1+f2; f2=f2+f1; } return 0; }
// 每个循环中输出2个月的数据,故循环20次即可 // 输出己知的两个月的兔子数 // 计算出下一个月的兔子数,并存放在f1中 // 计算出下两个月的兔子数,并存放在f2中 例5.9输入一个大于3的整数n,判定它是否素数(prime,又称质数)。 编写程序:
#include
printf(\ scanf(\ for (i=2;i<=n-1;i++) if(n%i==0) break;
if(i #include printf(\ scanf(\ k=sqrt(n); for (i=2;i<=k;i++) if(n%i==0) break; if(i<=k) printf(\ else printf(\ return 0; } 例5.10 求100~200间的全部素数。 编写程序: # include {int n,k,i,m=0; for(n=101;n<=200;n=n+2) // n从100变化到200,对每个n进行判定 { k=sqrt(n); for (i=2;i<=k;i++) if (n%i==0) break; // 如果n被i整除,终止内循环,此时i printf (\ return 0; } 例5.11 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。 A B C D E F G …… W X Y Z 编写程序: #include c=getchar(); // 输入一个字符给字符变量c while(c!='\\n') // 检查c的值是否换行符'\\n' {if((c>='a' && c<='z') || (c>='A' && c<='Z')) // c如果是字母 { if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22; // 如果是26个字母中最后4个字母之一 else c=c+4; // 如果是前面22个字母之一,就使c加4,即变成其后第4个字母 } printf(\ // 输出己改变的字符 c=getchar(); // 再输入下一个字符给字符变量c } printf(\ return 0; } #include while((c=getchar())!='\\n') // 输入一个字符给字符变量c并检查它c的值是否换行符 {if((c>='A' && c<='Z') || (c>='a' && c<='z')) // c如果是字母 { c=c+4; // 只要是字母,都先加4 if(c>='Z' && c<='Z'+4 || c>'z') // 如果是26个字母中最后4个字母之一 c=c-26; // c的值改变为26个字母中最前面的4个字母中对应的字母 } printf(\ // 输出己改变的字符 } printf(\ return 0; } 例6.1 对10个数组元素依次赋值为0,1, 2,3,4,5,6,7,8,9,要求按逆序输出。 编写程序: #include int i,a[10]; for (i=0; i<=9;i++) a[i]=i; for(i=9;i>=0; i--) printf(\ printf(\ return 0; } 例6.2 用数组处理求Fibonacci数列问题 编写程序: #include int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) printf(\ printf(\ } printf(\ return 0; }