C语言习题答案2012年版- 副本- 副本(3)

2019-06-11 00:57

main( ) {

int i; long s=0;

for(i=1;i<=10;i++) s=s+fun(i); printf(\}

long fun(int n) {

int j; long t=1;

for(j=1;j<=n;j++) t=t*j; return t; }

参考程序2(递归算法): #include main( ) {

int i; long s=0;

for(i=1;i<=10;i++) s=s+fun(i); printf(\}

long fun(int n) {

long t;

if(n==1)t=1;

else t=n*fun(n-1); return t; }

5.已知y =

f(x,n),其中,f(x, n) = 1 ? x2 / 2! + x4 / 4! ? ?

f(x?2.3,n)?f(x?3.2,n?3)(?1)nx2n / (2n)!(n≥0),当x = 5.6,n = 7时,求y的值。 解:0.007802

#include

double fun(double x,int n) {

int i,t=1,m=1;

double s=1.0,w=1.0;

for(i=1;i<=2*n;i++) { w=w*x; t=t*i; if(i%2==0) { m=-m;s=s+m*w/t;} }

return s; }

main() { double x=5.6; int n=7; double p,q,t,s; p=fun(x,n); q=fun(x+2.3,n); t=fun(x-3.2,n+3); s=p/(q+t); printf(\}

6.编写程序,求三个数的最小公倍数。 #include int fun(int x,int y,int z) { int j,t,m,n; j=1; t=j%x; m=j%y; n=j%z; while(t!=0||m!=0||n!=0) { j=j+1; t=j%x; m=j%y; n=j%z; } return j; }

main() { int x1,x2,x3,j; printf(\ x2 x3: \ scanf(\ printf(\ j=fun(x1,x2,x3); printf(\

}

?2k?22427.已知:S?,编写程序,求S的值。 ????1?33?5?2k?1???2k?1?例如,当k为10时,S的值应为:1.533852。

2#include double fun(int k) { int n; double s,w,p,q; n=1; s=1.0; while(n<=k) { w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } return s; }

main() { printf(\}

习题7答案

一、选择题

1.C 2.A 3.C 4.D 8.A 9.A 10.B 11.A 15.C 16.D 17.D 18.D 22.D 23.B 24.C 25.D

二、写出下列程序的运行结果

1.abcdabcdabcdabcdbcdabcdabcdcdabcdd 3.1,2,3,8,7,6,5,4,9,10,

三、程序填空

1. (1) k 5.D 6.C 12.D 13.D 19.B 20.A 26.D 27.D 2.4 4.9,8 (2) -1

7.A .C 21.B

28.D 29.C 14 2. (1) nose (2)[d] 3. (1) x[i++]或y[i++] (2)i++ 4. (1) ‘a’+h-10 (2)s[i]= ’\\0’ 5. (1)s[i]!=’\\0’ (2)s[j++]=s[i] 6. (1)s[j]!=’\\0’&& t[k]!=’\\0’ (2)t[k]==’\\0’

四、编程题(每个程序的数据结构均用数组)

1.编写程序:从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若该字符不在a中则输出**。 #include main() { char c,a[10]=\ int top,bot,mid; printf(\ scanf(\ printf(\ for(top=0,bot=10;top<=bot;) { mid=(top+bot)/2; if(c==a[mid]) { printf(\ break; } else if(c>a[mid]) top=mid+1; else bot=mid-1; } if(top>bot) printf(\}

2.编写程序:输出某数列的前20项,该数列第1、2项分别为0和1,以后每个奇数编号的项是前两项之和,每个偶数编号的项是前两项之差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。 #include #include main() { int x[21],i; x[1]=0,x[2]=1; i=3; do { x[i]=x[i-2]+x[i-1];

x[i+1]=fabs((double)(x[i-1]-x[i])); i=i+2; }while(i<=20); for(i=1;i<=20;i++) { printf(\ if(i%4==0) printf(\ } }

3.编写程序:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如:若s所指字符串中的内容为:“ABCDEFG12345”,则最后t所指的数组中的内容应是:“135”。

#include #include

void fun(char *s,char t[]) { int i,j=0; for(i=1;i

main() { char s[100],t[100]; printf(\ scanf(\ fun(s,t); printf(\} 4.编写程序:一个自然数平方的末几位与该数相同时,称此数为自同构数。例如,因252=625,故25为自同构数。求出[1,700]之间的:① 最大的自同构数;② 自同构数数目。

(1)最大的自同构数:625 (2)自同构数数目:7个(1、5、6、25、76、376、625) #include main() { int i,n,ns,flag,count,r,rs; static int a[50]; count=0; for(i=1;i<700;i++) { n=i;


C语言习题答案2012年版- 副本- 副本(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:根据安县人事局关于做好2009年度全县机关事业单位技术工人晋升(

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

马上注册会员

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