1、c语言解题第五次作业:函数计算并输1. 自然数的计算 编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。 编写一个程序, 功能是能够由键盘输入两个整数, 并能调用自己编写的函数, 出这两个整数的最大公约数和最小公倍数 。#include void main()int a,b,c,d;scanf(%d%d ,& a,& b);c=ys(a,b);d=bs(a,b);printf(a,b的最小公倍数是dn最大公约数是dn,d,c);int ys(int x,int y)int i;for(i=x;i=1;i-)if(x%i=0& y%i=0)return(i);int bs(int
2、x,int y)int i;for(i=x;i=x*y;i+)if(i%x=0& i%y=0)return(i);bd2.字符串连接请使用字符数组,编写自己的字符串连接函数。编写一个程序,功能是能够由键盘输入两个字符串, 并能调用自己编写的字符串连接函数,输出新的字符串。#i nclude void mai n()char Ij (char x,char y,char z);int i,j;char a100,b100,c200;gets(a);gets(b);lj(a,b,c);for(i=0;istrle n( a)+strle n(b);i+)prin tf(%c,ci);prin tf
3、(n);char lj (char x,char y,char z)int i,j;for(i=0;i strle n( x);i +)zi=xi;for(i=strle n(x);i =strle n(x)+strle n(y)-1;i+) zi=yi-strle n(x);W C:Debug l.exeabedsfghij kinnapab&defghij kinnapPress any key to continue3.三角函数请使用台劳级数编写自己的常用三角近似值计算函数, 用于自己程序的调用。 台劳级数为:3 5 7x x x xsin x= -.1!3!5!7!0246xxxxco
4、sx -+1!2!4!6!舍去的值由自己定义一个最小值。请用自己的函数计算下面两个表达式的值,并且与 VC+提供的标准函数之间的误差进行比较。请输入结果。 C 0 s c 0y初2E )y = 2 * s i n x sirxcosc-coSx,( x = 450)#i nclude #in elude void mai n()float s(float x);float c(float x);float a,b,e,d;a=3.141592/3;d=3.141592/4; b=sqrt(1-c(a)/2);e=2* s(d)* s(d)+s(d)* c(d)-c(d)* c(d); prin
5、tf(%fn%fn ,b,e);float s(float x)int i;float y=0,s=1/x,t=1/2,w; for(i=1;w1e-6|w1e-6|w-1*1e-6;i+) s=x* x* s; t=i*(i+1)*t; w=s/t; y=y+w; w=-1* w;return(y);4.弦截法解方程32用弦截法求解方程 f(x)=x 3-5x 2+16x-80=0 的根。要求使用和编写如下的函数:32代表 f(x)=x 3-5x 2+16x-80 的值#includevoid main()float root(float x1,float x2);float x1,x2,x
6、;do scanf(%f%f ,& x1,& x2);while( f(x1)*f(x2)0); x=root(x1,x2);printf(the root is %f ,x);float f(float x)float y; y=x*x*x-5*x*x+16*x-80; return(y);float xpoint(float x1,float x2)float y; y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1); return y;float root(float x1 ,float x2)float x;dox=xpoint(x1,x2); if(f(x)*f(x1
7、)=1e-6); return(x);5.最长单词 编写一个自己的函数,能够将一个字符串中最长的单词查找出来。 编写一个程序, 功能是能够由键盘输入一行字符, 并能调用自己编写的最长单词查找函 数,输出这个单词。#include void main()char a1000,b10001000;int i,k,f;for(i=0;i1000;i+)scanf(%c ,& ai );bkf=longest(a);for(i =0;i f ;i +)printf(%c,bki);char longest(chara)int i,j,f,k,n,y;char x1000,b10001000; n=st
8、rlen(a);if(a0!= )for(i=0,f=0;in;i+)if(ai= )break;elseb0f=ai;f+;x0= f;elsefor(i=0,k=0;in;i+)if( ai +1!= )for(j=i+1,f=0;jn;j+)if(aj= )break;elsebkf=aj;f+;xk=f;k+;y=k;for(k=0;ky;k+) if(xk=Max( x,0,y)return(b kf);int Max(int a, int first, int n)int max;if(first = n-1) return afirst;max = Max(a, first+1,
9、 n); if(max a first)return afirst;else return max;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1(2n 1)* x pn_1(x) (n 1) * pgx)/n 21#i nclude void mai n()float p(float x,int n);float x,y;int n;scan(%f%d,&x,&n);y=p(x,n);printf(%fn ,y);float p(float x,i nt n)float y;if(n=0) return(1);else if(n=1) return(x);else y=(2
10、* n-1)*x-p(x, n-1)-( n-1)* p(x, n-2)/2); return(y);T C:Debug 8498.exe |2Q 3He seeeeePress anij keij to contirua7.角夫猜想日本数学家角夫提出了如下的猜想: 任意一个自然数,比如奇数,将其乘以 3再加1;如果是偶数将其除以 2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数 0时,程序结束。如输入:请输入自然数n: 30输出:自然数n按照角夫猜想运算规则变化的各次结果: 15 46 23 70 35106 53 160 80 40 20
11、 10 5 16 8 。(直到结果收敛,不再变化)#i nclude void mai n()int jf(i nt n);int n ,k;dosca n(%d,& n);k=n;jf(n);while( k!=0);int jf(int n)int n1;if(n%2=0) n1=n/2,printf(%d ,n 1);else n仁n*3+1, printf(%d ,n 1);if(n 1 !=n) jf(n 1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如 4444、7777等),将组成该 数的各位数字重新排列, 形成一个最大数和一个最小数, 之后两数相减,其差仍然为
12、一 个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入 0时,程序结束。如输入: 请输入自然数n: 7754输出:自然数n按照以上运算规则变化的各次规律: (7754,4577,3177) ( 7731,1377, 6534)( 6543,3456, 3087) ( 8730,0378, 8352) ( 8532, 2358,6174)。(直到结果收敛,不再变化)#in elude void mai n()int n,max,min;sca nf(%d,& n);sort(n); sort(i nt n)int a4;int i,j,temp;int m
13、ax, mi n;a0= n/1000;a1= n/100-n/1000*10; a2 =n/10-n/100*10;a3 =n-n/10*10;for(i=0;i3;i+)for(j=i+1;j3;j+)if(aiaj) temp=ai ;ai=aj;a j= temp;max=a0*1000+ a1*100+ a2*10+ a3;for(i=0;i3;i+)for(j=i+1;jaj) temp=ai ;ai=aj;a j= temp;min=a0*1000+ a1*100+ a2*10+ a3;n=max-min;printf (%d,%d,%d) ,max,min ,n);sort(n
14、);9.设计递归程序任意给定输入的一个小写英文字符串 aia2a3an-ian (n 5)输出:字符串 Andi Ai-1 a2An-2 33 A2an-1 Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出 XaDyBbYdAxi0. 成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为 i00 分);对学生A,如果一共有K个学生的平均成绩比 A的平均成绩高,则学生 A的年级排 名为 K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均
15、成绩函数 2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照 上述规则进行排名函数 3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、 排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数 N( 1 N 200 ),表示学生的人数。随后有 N行,每 行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平 均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信 息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、 月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1, 2,3, 4,5的五本书,准备分给 A,B,C,D,E五个人,每个人阅读兴趣用 一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定 5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1