C语言复习程序答案_第1页
C语言复习程序答案_第2页
C语言复习程序答案_第3页
C语言复习程序答案_第4页
C语言复习程序答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1输出斐波那契数列前40位,每6个数一行,每个数字占12列,对齐排列。#include<stdio.h>int main()int a,b,c,i;a=1,b=1;printf("%12d%12d",a,b);for(i=3;i<40;i+)c=a+b;a=b;b=c;printf("%12d",c);if(i%6=0) printf("n");2编写程序,用选择法对10个整数进行排序(从小到大)。#include<stdio.h>int main()int a10;int i,j,t,min,temp;

2、for(i=0;i<10;i+)scanf("%d",&ai);printf("n");for(i=0;i<10;i+)min=i;for(j=i+1;j<10;j+)if(amin>aj) min=j;if(min!=i)temp=amin;amin=ai;ai=temp;printf("%5d",ai);3用迭代法求某正数a平方根x1,已知求平方根的迭代公式为: x0=a/2x1=1.0/2*(x0+a/x0)当x0-x1的绝对值小于1e-5时,x1为最终结果。#include<stdio.h

3、>#include<math.h>int main() float a;double x0,x1;scanf("%f",&a);if(a<0)printf("请输入正数");elsex0=a/2;x1=1.0/2*(x0+a/x0);dox0=x1;x1=1.0/2*(x0+a/x0);while(fabs(x0-x1)>=1e-5);printf("%lf",x1);4编写程序,将一个数组中的值逆序重新存放:例如原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。#include<s

4、tdio.h>int main()int a5,i,j,temp;for(i=0;i<5;i+)scanf("%d",&ai);for(i=0;i<5;i+)printf("%5d",ai);printf("n");for(i=0,j=4;i<j;i+,j-)temp=ai;ai=aj;aj=temp;for(i=0;i<5;i+)printf("%5d",ai);5有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20项之和。#includ

5、e<stdio.h>int main()double a,b,x,c,i;a=2;b=1;x=0;for(i=1;i<=20;i+)x=x+(a/b);c=a;a=a+b;b=c;printf("%lf",x);6编写程序要求输出所有的三位素数(每10个一行,数与数之间要有分隔)。#include<stdio.h>int main()int x,i,n=0;for(x=100;x<1000;x+)for(i=2;i<x;i+)if(x%i=0) break;if(i>=x)printf("%5d",x);n

6、+;if(n%10=0) printf("n");7编写程序,求所有大于m的k个素数,其中m和k都通过键盘输入。#include <stdio.h>int main()int m,k,i,n=0,x;scanf("%d%d",&m,&k);for(x=m+1;n<k;x+)for(i=2;i<x;i+)if(x%i=0) break;if(i>=x) printf("%5d",x);n+;8用pi/41-1/3+1/5-1/7+ 公式求pi的近似值,直到发现某一项的绝对值小于106为止(该

7、项不累加)。#include <stdio.h>#include <math.h>int main()float pi=0,n=1,term=1;int sign=1;while (fabs(term)>=1e-6)pi=pi+term;n=n+2;sign=-sign;term=sign/n;pi=pi*4;printf("%f",pi);9编写程序要求输出以下图案:* * * *#include <stdio.h>void main()int i,j;for(i=1;i<=4;i+)for (j=1;j<=5-i;j

8、+)printf(" ");for(j=1;j<=2*i-1;j+)printf("*");printf("n");for(i=1;i<=3;i+)for(j=1;j<=i+1;j+)printf(" ");for(j=1;j<=6-(2*i-1);j+)printf("*");printf("n");10编写程序,求sn=a+aa+aaa+aaa之值,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(此时n=5),n由键

9、盘输入。#include<stdio.h>int main()int a,i,m;double sum=0;scanf("%d %d",&a,&m);for(i=1;i<=m;i+)sum+=a;a=a*10+a;printf("a+aa+aaa+aaaa+.+aaa.a=%lf",sum);11输入两个正整数m和n,求其最大公约数和最小公倍数。#include<stdio.h>int main()int m,n,i,t,max,min;scanf("%d%d",&m,&n

10、);if(m>n)t=m;m=n;n=t;for(i=2;i<m;i+) if(m%i=0) if(n%i=0) max=i; printf("%5d",max); min=m*n/max; printf("%5d",min);12.请用递归算法,求1+2+3+n,n由键盘输入。#include<stdio.h>fun(int n)if(n=1) return 1;else return n+fun(n-1);int main()int n;int s;scanf("%d",&n);s=fun(n);s

11、=fun(n);printf("s=%dn",s);13请用递归算法,求斐波那契数列,求n阶斐波那契数列的公式如下: 1 (当n=0时)f(n)= 1 (当n=1时) f(n-1)+f(n-2) (当n>1时) #include<stdio.h>fun(int n)if(n=0|n=1) return 1;else return fun(n-1)+fun(n-2);int main() int n;scanf("%d",&n);printf("%dn",fun(n); 14. 请用递归算法求n阶勒让德多项式的

12、值,递归公式如下: 1 (当n=0时)pn(x)= x (当n=1时) (2n-1)*x-pn-1(x)-(n-1)*pn-2(x)/n (当n>1时)#include<stdio.h>double p(int n,int x)if(n=0) return x;else if(n=1) return x;else return (2*n)*x-p(n,x)-(n-1)*p(n-2),x)/n ;int main()int n,x;scanf("%d%d",&n,&x);printf("%lf",p(n,x);15编写函数

13、int isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回1,否则返回0,要求在主函数中调用isprime,若判断的素数,输出yes,不是素数,则输出no。#include<stdio.h>int main()int a;int isprime(int a);printf("a=");scanf("%d",&a);if(isprime(a)printf("yesn");elseprintf("non");return 0;int isprime(int n)int i;

14、for(i=2;i<n;i+)if(n%i=0) break; if(i>=n) return(1);else return(0);16编写函数,验证任意偶数为两素数之和,并输出该素数。#include<stdio.h>void even(int x)int i;for(i=2;i<=x/2;i+)if(isprime(x-i)printf("%d=%d+%dn",x,i,x-i);int isprime(int a)int i;for(i=2;i<a;i+)if(a%i=0) return 0;return 1;int main()in

15、t x;scanf("%d",&x);if(x%2=0) even(x);else printf("error!");17编写函数double fun(int n),求1-1/2+1/3-1/4+1/5-1/6+1/7+1/n,其中n由键盘输入。#include<stdio.h>int main()int n;double s;double fun(int n);printf("n=");scanf("%d",&n);s=fun(n); printf("s=%lfn"

16、,s);return 0;double fun(int n)int sign=1,i;double sum=0.0; for(i=1;i<=n;i+)sum+=sign*1.0/i;sign=-sign; return (sum);28输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#include<stdio.h>int main() char string81; int i,num=0,word=0; char s,c; gets(string); for(i=0;(c=stringi)!='0'i+) if(c=' ') wor

17、d=0; else if(word=0) word=1;num+; printf("there are %d words.n",num);19.编一程序,将两个字符串连接起来,不要用strcat函数。(p169)#include <stdio.h>#include<string.h>int main() char s120,s220; int i,j; gets(s1); gets(s2); puts(s1); puts(s2); for(i=0;s1i;i+); for(j=0;s2j;j+) s1i+=s2j; s1i=0; puts(s1);2

18、0.编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,0后面的字符不复制。(p169)#include<stdio.h>#include<string.h>int main()char s120,s220;int i;gets(s1);gets(s2);puts(s1);puts(s2);for(i=0;s2i!='0'i+)s1i=s2i;s1i='0'puts(s1);21.编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出

19、一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值是两个相比较的两个字符串相应字符的ascii码的差值。例如,“a”与“c”相比,由于“a”<“c”应输出负数,同时由于“a”与“c”的ascii码差值为2,因此应输出“-2”。同理:“and”和“aid”比较,根据第2个字符比较结果,“n”大“i”5,因此应输出“5”。(p169)#include<stdio.h>#include<string.h>int main()int i,resu;char s1100,s2100;printf("n input string

20、1: ");gets(s1); printf("n input string2: "); gets(s2);i=0;while(s1i=s2i&&s1i!='0') i+;if(s1i='0'&&s2i='0') resu=0;else resu=s1i-s2i;printf("n result: %dn",resu);22编写程序,用冒泡法对10个字符串进行排序(两种方法:按长短或是按ascii码大小)。#include<stdio.h>#includ

21、e<string.h>int main()char string20,str1020;int i,j;for(i=0;i<10;i+)gets(stri);for(i=0;i<9;i+)for(j=i+1;j<10;j+)if(strlen(stri)>strlen(strj)strcpy(string,stri);strcpy(stri,strj);strcpy(strj,string);printf("nn");for(i=0;i<10;i+)puts(stri);return 0;大小比较#include<stdio.h

22、>#include<string.h>int main()char string20,str1020;int i,j;for(i=0;i<10;i+)gets(stri);for(i=0;i<9;i+)for(j=i+1;j<10;j+)if(strcmp(stri,strj)>0)strcpy(string,stri);strcpy(stri,strj);strcpy(strj,string);printf("nn");for(i=0;i<10;i+)puts(stri);return 0;23.编写程序,定义一个含有30个

23、元素的int类型数组。依次给数组元素赋奇数1,3,5;然后按每行十个顺序输出,最后按每行十个逆序输出。#include<stdio.h>int main()int a30,i,j,t;for(i=0;i<30;i+)ai=2*i+1;for(i=0;i<30;i+)printf("%2d ",ai);if(i+1)%10=0) printf("n");printf("nn");for(i=0,j=29;i<j;i+,j-) t=ai;ai=aj;aj=t;for(i=0;i<30;i+)printf

24、("%2d ",ai);if(i+1)%10=0) printf("n");printf("n");return 0;24已知数组a中的50个元素的值都在0-9的范围内,编写程序统计每个整数的个数。#include<stdio.h>void getdata(int *a,int n)int i;for(i=0;i<n;i+)scanf("%d",a+i);outdata(int a,int n)int i;for(i=0;i<n;i+)printf("%d",ai);pr

25、intf("nn");void fun(int *a,int *c)int i;for(i=0;i<10;i+) ci=0;for(i=0;i<10;i+)cai+;int main()int a10,c10;getdata(a,10);outdata(a,10);fun(a,c);outdata(c,10);25w数组中存放n个数据,编写函数删除下标为k的元素中值。#include<stdio.h>void arrout(int *a,int n)int i;for(i=0;i<n;i+)printf("%d",ai);i

26、nt getindex(int n)int i;doscanf("%d",&i);while(i<0|i>=n);return i;int arrdel(int *a,int n,int k)int i;for(i=k;i<n-1;i+)ai=ai+1;return n-1;int main()int a10=1,2,3,4,5,6,7,8,9,10,n,d;arrout(a,10);d=getindex(10);n=arrdel(a,10,d);arrout(a,n);26编写程序把任意十进制转换成二进制数。#include<stdio.h

27、>int main()int x,a100,k,i;scanf("%d",&x);for(i=0;x;x/=2,i+)ai=x%2;k=i;for(i=k-1;i>=0;i-)printf("%d",ai);27编写出程序通过调用数函数给5*6的二维数组元素赋整数,求出二维数组每行元素平均值。#define m 6#define n 5#include<stdio.h>int main()void getdata(int(*)m); void lineave(int sm,float *a); void outdata(i

28、nt spnm,float a); int rnm; float aven; getdata(r); lineave(r,ave); outdata(r,ave);void getdata(int(*sp)m)int i,j; for(i=0;i<n;i+) for(j=0;j<m;j+) scanf("%d",&spij);void lineave(int sm,float *a)int i,j; float ave; for(i=0;i<n;i+)ave=0; for(j=0;j<m;j+) ave+=sij; ave/=m; ai=ave;void outdata(int spnm,float a) int i,j; for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论