C语言复习程序答案.doc

上传人:PIYPING 文档编号:11574092 上传时间:2021-08-24 格式:DOC 页数:11 大小:99.50KB
返回 下载 相关 举报
C语言复习程序答案.doc_第1页
第1页 / 共11页
C语言复习程序答案.doc_第2页
第2页 / 共11页
C语言复习程序答案.doc_第3页
第3页 / 共11页
C语言复习程序答案.doc_第4页
第4页 / 共11页
C语言复习程序答案.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C语言复习程序答案.doc》由会员分享,可在线阅读,更多相关《C语言复习程序答案.doc(11页珍藏版)》请在三一文库上搜索。

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

2、jaj) 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#includeint main() float a;double x0,x1;scanf(%f,&a);if(a=1e-5);printf(%lf,x1);4编写程序,将一个数组中的值逆序重新存放:例如原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。#includeint main()i

3、nt a5,i,j,temp;for(i=0;i5;i+)scanf(%d,&ai);for(i=0;i5;i+)printf(%5d,ai);printf(n);for(i=0,j=4;ij;i+,j-)temp=ai;ai=aj;aj=temp;for(i=0;i5;i+)printf(%5d,ai);5有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20项之和。#includeint 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(%l

4、f,x);6编写程序要求输出所有的三位素数(每10个一行,数与数之间要有分隔)。#includeint main()int x,i,n=0;for(x=100;x1000;x+)for(i=2;i=x)printf(%5d,x);n+;if(n%10=0) printf(n);7编写程序,求所有大于m的k个素数,其中m和k都通过键盘输入。#include int main()int m,k,i,n=0,x;scanf(%d%d,&m,&k);for(x=m+1;nk;x+)for(i=2;i=x) printf(%5d,x);n+;8用pi/41-1/3+1/5-1/7+ 公式求pi的近似值,

5、直到发现某一项的绝对值小于106为止(该项不累加)。#include #include 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 void main()int i,j;for(i=1;i=4;i+)for (j=1;j=5-i;j+)printf( );for(j=1;j=2*i-1;j+)printf(*);printf(

6、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由键盘输入。#includeint 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输

7、入两个正整数m和n,求其最大公约数和最小公倍数。#includeint main()int m,n,i,t,max,min;scanf(%d%d,&m,&n);if(mn)t=m;m=n;n=t;for(i=2;im;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由键盘输入。#includefun(int n)if(n=1) return 1;else return n+fun(n-1);int main()int n;int s;scanf(%d

8、,&n);s=fun(n);s=fun(n);printf(s=%dn,s);13请用递归算法,求斐波那契数列,求n阶斐波那契数列的公式如下: 1 (当n=0时)F(n)= 1 (当n=1时) F(n-1)+F(n-2) (当n1时) #includefun(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阶勒让德多项式的值,递归公式如下: 1 (当n=0时)Pn(x)= x (当n=1时) (2n-1)*x

9、-pn-1(x)-(n-1)*pn-2(x)/n (当n1时)#includedouble 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编写函数int isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回1,否则返回0,要求在主函数中调用isprime,若判断的素数,输出YES,不是素数,则输出NO。#inc

10、ludeint 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;for(i=2;i=n) return(1);else return(0);16编写函数,验证任意偶数为两素数之和,并输出该素数。#includevoid 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 ispri

11、me(int a)int i;for(i=2;ia;i+)if(a%i=0) return 0;return 1;int main()int 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由键盘输入。#includeint main()int n;double s;double fun(int n);printf(n=);scanf(%d,&n);s=fun(n); printf(s=%lfn,s);return 0;d

12、ouble 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输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#includeint main() char string81; int i,num=0,word=0; char s,c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; else if(word=0) word=1;num+; printf(There are %

13、d words.n,num);19.编一程序,将两个字符串连接起来,不要用strcat函数。(P169)#include #includeint 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);20.编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,0后面的字符不复制。(P169)#include#includeint main()char

14、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比较,若s1s2,输出一个正数;若s1=s2,输出0;若s1s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值是两个相比较的两个字符串相应字符的ASCII码的差值。例如,“A”与“C”相比,由于“A”“C”应输出负数,同时由于“A”与“C”的ASCII码差值为2,因此应输出“-2”。同理:“And”和“Aid”比较,根据第2

15、个字符比较结果,“n”大“i”5,因此应输出“5”。(P169)#include#includeint main()int i,resu;char s1100,s2100;printf(n input string1: );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码大小)。#

16、include#includeint main()char string20,str1020;int i,j;for(i=0;i10;i+)gets(stri);for(i=0;i9;i+)for(j=i+1;jstrlen(strj)strcpy(string,stri);strcpy(stri,strj);strcpy(strj,string);printf(nn);for(i=0;i10;i+)puts(stri);return 0;大小比较#include#includeint main()char string20,str1020;int i,j;for(i=0;i10;i+)get

17、s(stri);for(i=0;i9;i+)for(j=i+1;j0)strcpy(string,stri);strcpy(stri,strj);strcpy(strj,string);printf(nn);for(i=0;i10;i+)puts(stri);return 0;23.编写程序,定义一个含有30个元素的int类型数组。依次给数组元素赋奇数1,3,5;然后按每行十个顺序输出,最后按每行十个逆序输出。#includeint main()int a30,i,j,t;for(i=0;i30;i+)ai=2*i+1;for(i=0;i30;i+)printf(%2d ,ai);if(i+1

18、)%10=0) printf(n);printf(nn);for(i=0,j=29;ij;i+,j-) t=ai;ai=aj;aj=t;for(i=0;i30;i+)printf(%2d ,ai);if(i+1)%10=0) printf(n);printf(n);return 0;24已知数组a中的50个元素的值都在0-9的范围内,编写程序统计每个整数的个数。#includevoid getdata(int *a,int n)int i;for(i=0;in;i+)scanf(%d,a+i);outdata(int a,int n)int i;for(i=0;in;i+)printf(%d,

19、ai);printf(nn);void fun(int *a,int *c)int i;for(i=0;i10;i+) ci=0;for(i=0;i10;i+)cai+;int main()int a10,c10;getdata(a,10);outdata(a,10);fun(a,c);outdata(c,10);25W数组中存放n个数据,编写函数删除下标为k的元素中值。#includevoid arrout(int *a,int n)int i;for(i=0;in;i+)printf(%d,ai);int getindex(int n)int i;doscanf(%d,&i);while(

20、i=n);return i;int arrdel(int *a,int n,int k)int i;for(i=k;in-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编写程序把任意十进制转换成二进制数。#includeint 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-)pri

21、ntf(%d,ai);27编写出程序通过调用数函数给5*6的二维数组元素赋整数,求出二维数组每行元素平均值。#define M 6#define N 5#includeint main()void getdata(int(*)M); void lineave(int sM,float *a); void outdata(int 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;iN;i+) for(j=0;j

22、M;j+) scanf(%d,&spij);void lineave(int sM,float *a)int i,j; float ave; for(i=0;iN;i+)ave=0; for(j=0;jM;j+) ave+=sij; ave/=M; ai=ave;void outdata(int spNM,float a) int i,j; for(i=0;iN;i+) for(j=0;jM;j+) printf(%4d,spij); printf(%6.2f,ai); printf(n); 28编写程序,输出以下形式的杨辉三角形,为杨辉三角形赋值要求编写函数setdata完成,输出杨辉三角形

23、要求编写函数outdata完成,在main函数中分别调用setdata,outdata,使整个程序完整。要求程序运行后能输出以下形式的杨辉三角形。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#define N 10#include void satdata(int (*s)N,int n)int i,j;for(i=0;in;i+)si0=1;sii=1;for(i=2;in;i+)for(j=1;ji;j+)sij=si-1j+si-1j-1;void outdata(int sN,int n)int i,j;for(i=0;i

24、n;i+)for(j=0;j=i;j+)printf(%6d,sij);printf(n);int main()int yNN;satdata(y,7);outdata(y,7);29找出三行五列的方阵中每列中的最小元素及所在行号。#includevoid findmin(int (*a)5,int *b)int i,j,t;for(i=0;i5;i+)t=0;for(j=1;j3;j+)if(ajiati) t=j;bi=t; void outdata(int *b,int n)int i;for(i=0;in;i+)printf(%d,bi);int main()int a35=1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15 ;int b5;findmin(a,b);outdata(b,5);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1