C语言谭浩强第四版例题(5)

2018-12-29 17:54

111?1?????例5.7用 4 7 公式求 ? 的近似值,直到发现某一项的绝对值小于3 510*6 为止(该项不累计加)。 编写程序:

#include #include int main() {

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 #include int main() {

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 main() {

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 main() {

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 int main() {int n,i;

printf(\ scanf(\ for (i=2;i<=n-1;i++) if(n%i==0) break;

if(i

#include #include int main() {int n,i,k;

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 # include int main()

{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=k+1) // 若j>=k+1,表示n未被整除 {printf(\ // 应确定n是素数 m=m+1; // m用来控制换行,一行内输出10个录素数 } if(m==0) printf(\ // m累计到10的倍数,换行 }

printf (\ return 0; }

例5.11 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。

A B C D E F G …… W X Y Z

编写程序:

#include int main() {char c;

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 int main() {char c;

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 main() {

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 main() { int i;

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; }


C语言谭浩强第四版例题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京理工大学汇编上机试题和代码

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: