




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五次作业:函数1. 自然数的计算编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。编写一个程序,功能是能够由键盘输入两个整数,并能调用自己编写的函数,计算并输出这两个整数的最大公约数和最小公倍数。程序代码:#include<stdio.h>void main()intgreatest_common(intx,int y),lowest_common(intx,int y);inta,b,c,d;printf("please input two integer:");scanf("%d,%d",&a,&b);c=
2、greatest_common(a,b);d=lowest_common(a,b);printf("最大公约数为%d,最小公倍数为%dn",c,d);intgreatest_common(intx,int y)inti,min;if (x>y)min=y;else min=x;for(i=min;i>=1;i-)if (x%i=0)&&(y%i=0)return(i);intlowest_common(intx,int y)inti,max;if (x>y)max=x;elsemax=y;for (i=max;i+)if(i%x=0)&am
3、p;&(i%y=0)return (i);2. 字符串连接请使用字符数组,编写自己的字符串连接函数。编写一个程序,功能是能够由键盘输入两个字符串,并能调用自己编写的字符串连接函数,输出新的字符串。#include<stdio.h>#include<string.h>void main()char link(char a40,char b20);char str140="0",str220;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(
4、str2);printf("合并后的字符串为:n");link(str1,str2);puts(str1);char link(char a40,char b20)inti,j;i=strlen(a);for(j=0;bj!=0;j+)ai+j=bj;return(ai);3. 三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。台劳级数为:舍去的值由自己定义一个最小值。请用自己的函数计算下面两个表达式的值,并且与VC+提供的标准函数之间的误差进行比较。请输入结果。l ,()l ,()#include<stdio.h>#include&l
5、t;math.h>void main()float s(float x),c(float x);float y1,y2,y3,y4,a=3.14159/3,b=3.14159/4;y1=sqrt(1-c(a)/2);y2=s(b)*(2*s(b)+c(b)-c(b)*c(b);printf("y1=%f,y2=%fn",y1,y2);y3=sqrt(1-cos(a)/2);y4=sin(b)*(2*sin(b)+cos(b)-cos(b)*cos(b);printf("y1'=%f,y2'=%fn",y3,y4);float s(f
6、loat x)int m=1,i=0;float a=0,b=1,t=0;while(m<=11)t=1./b*pow(x,m)*pow(-1,i);i+;a=a+t;m+;b*=m;m+;b*=m;return(a);float c(float x)float a=0,b=1,t=0;int m=0,i=0;while(m<=12)t=1./b*pow(x,m)*pow(-1,i);i+;a=a+t;m+;b*=m;m+;b*=m;return(a);4. 弦截法解方程用弦截法求解方程f(x)=x3-5x2+16x-80=0的根。要求使用和编写如下的函数:l float f(fl
7、oat x)代表f(x)=x3-5x2+16x-80的值l float xpoint(float x1, float x2) 来求出(x1,f(x1)与 (x2,f(x2)的连线与x轴的交点x坐标;l float root(float x1, float x2)用于求出 (x1,x2)区间的近似根。要求使用的x1与x2的初始值分别为 -10.5 和 20#include<stdio.h>#include<math.h>float f(float x) /*定义f函数,以实现f(x)=x3-5x2+16x-80 */float y; y=(x-5.0)*x+16.0)*x
8、-80.0;return (y);float xpoint (float x1,float x2) /*定义xpoint函数,求出弦与x轴交点*/float y; y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1);return (y); float root(float x1,float x2) /* 定义root函数,求近似根 */float x,y,y1; y1=f(x1);do x=xpoint(x1,x2);y=f(x);if (y*y1>0) /*f(x)与f(x1)同符号 */y1=y;x1=x;else x2=x; while (fabs(y)>=0
9、.0002);return (x);void main() /*主函数*/float x1,x2,f1,f2,x;do printf("input x1,x2:n");scanf("%f,%f",&x1,&x2); f1=f(x1); f2=f(x2); while(f1*f2>=0); x=root(x1,x2);printf("A root of equation is %8.4fn",x);5. 最长单词编写一个自己的函数,能够将一个字符串中最长的单词查找出来。编写一个程序,功能是能够由键盘输入一行字符,并
10、能调用自己编写的最长单词查找函数,输出这个单词。#include<stdio.h>#include<string.h>char longest(intn,charstr100)char a100100,b100="0"inti,j=0,k,max=0,m;int length;length=strlen(str);for(k=0,i=0,j=0;i<length;k+,i+)ajk=stri;if(stri='')if(max<k)max=k;for(m=0;m<k;m+)bm=ajm;j+;k=-1;continu
11、e;return(bn);void main()charstr100,a100="0"inti;gets(str);for(i=0;ai!=''i+)ai=longest(i,str);puts(a);6. 勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:#include<stdio.h>void main()int p(intn,int x);intn,x,y;printf("please input n,x:");scanf("%d,%d",&n,&x);if(n<0)p
12、rintf("error!please input n,x:");scanf("%d,%d",&n,&x);y=p(n,x);printf("y=%dn",y);int p(intn,int x)int y;if(n=0)y=1;else if(n=1)y=x;else y=(2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n;return(y);7. 角夫猜想日本数学家角夫提出了如下的猜想: 任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果
13、?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如l 输入: 请输入自然数n:30l 输出: 自然数n按照角夫猜想运算规则变化的各次结果:15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 。(直到结果收敛,不再变化)#include<stdio.h>void main()intn,y,i,k;int f(int x);for(i=0;i+)printf("please input n=");scanf("%d",&n);if(n=0)break;while(n!=1)y=f
14、(n);printf(" %d ",y);n=y;printf("n");int f(int x)int y;if(x%2=0)y=x/2;else if(x%2!=0)y=3*x+1;return(y);8. 数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如l 输入: 请输入自然数n: 7754l 输出: 自然数n按照以上运算规则变
15、化的各次规律:(7754,4577,3177) (7731,1377,6534)(6543,3456,3087) (8730,0378,8352) (8532,2358,6174)。(直到结果收敛,不再变化)#include<stdio.h>#include<math.h>void main()intn,m,i,arr3=0;void f(intx,intarr3);while(n!=0)printf("please input n=");scanf("%d",&n);while(m-n)!=0)m=n;f(n,arr);
16、printf(" (%d,%d,%d) ",arr0, arr1, arr2);n=arr2;printf("n");void f(intx,intarr3)int m=0,n=0,i,j,t;int a4;for(i=0;i<=3;i+)ai=fmod(floor(x/pow(10,i),10);for(i=0;i<=3;i+)for(j=0;j<=3;j+)if(aj<aj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i<=3;i+)m+=ai*pow(10,3-i);n+=ai*pow(10,i);ar
17、r0=m;arr1=n;arr2=m-n;9. 设计递归程序任意给定输入的一个小写英文字符串a1a2a3an-1an(n5)输出:字符串Ana1An-1a2An-2a3A2an-1A1an,其中Ai为ai的大写形式例如,输入aybdx,则递归程序输出XaDyBbYdAx#include<stdio.h>#include<string.h>void main()void f(char a20);char a20;printf("请输入字符串:");gets(a);f(a);putchar('n');void f(char a20)cha
18、r b20;int l,i;l=strlen(a);for (i=0;i<=l-1;i+) bi=al-i-1-32;for (i=0;i<=l-1;i+)printf("%c%c",bi,ai);10. 成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:l 以期中考试的平均成绩为排名依据(满分为100分);l 对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+1;l 如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:l 函数1:输入N个同学的学号、姓名、平均成绩l 函数2
19、:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名l 函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。l 输入、输出格式要求:(1) 第一行为一个整数N(1 < N <200),表示学生的人数。随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2) 随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3) 输入 学号0000000000 时,程序退出。#include<stdio.h>
20、void input(int n,int number200,char name20010,int grade200)int i;for(i=0;i<n;i+)scanf("%d %s %d",&numberi,namei,&gradei);void rank(int n,int number200,char name20010,int grade200,int r200)int i,j,k,t;for(i=0;i<n;i+)k=i;for(j=i+1;j<=n;j+)if(gradek<gradej)k=j;if(k!=i)t=gr
21、adei;gradei=gradek;gradek=t;t=numberi;numberi=numberk;numberk=t;for(j=0;j<20;j+)t=namekj;namekj=nameij;nameij=t;k=1;r0=1;for(i=1;i<n;i+)if(gradei<gradei-1)k=i+1;ri=k;void find(int n,int number200,char name20010,int grade200,int r200)int x,i,j,k,t;for(i=0;i<n;i+)/对学号排序k=i;for(j=i;j<n;j
22、+)if(numberk<numberj) k=j;if(i!=k)t=numberk;numberk=numberi;numberi=t;t=gradek;gradek=gradei;gradei=t;t=rk;rk=ri;ri=t;for(j=0;j<20;j+)t=namekj;namekj=nameij;nameij=t;printf("please input an student number:");/输入学号scanf("%d",&x);while(x!=0)t=n;i=0; j=n-1; while(i<=j)k
23、=(i+j)/2; if(x=numberk)t=k;break; else if(x>numberk) j=k-1; else i=k+1;if(t<n)printf("name:%s grade:%d rank:%dn",namek,gradek,rk);else/没有找到printf("Erorr!This number doesn't exist.n"); printf("Please input again:"); scanf("%d",&x);void main()char
24、name20010;int n,i,number200,grade200,r200;printf("please input the number of the students:");scanf("%d",&n);printf("please input the information of the students:n");input(n,number,name,grade);rank(n,number,name,grade,r);find(n,number,name,grade,r);11. 日历计算请使用已学的知识来编
25、写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC 环境提供的日期计算函数。已知公元1年1月1日为星期一。#include<stdio.h>int monthday12=31,28,31,30,31,30,31,31,30,31,30,31;void time(int a,int b,int c,int d3)int date=0,week,week1=0,week2=0,weekday=0;int i,year,totalday1=0,totalday2;/计算第几天if (b=1)date=c;else
26、 if (b>=2)for (i=0;i<=b-2;i+)date+=monthdayi;date=date+c;if(b>2)&&(a%4=0)&&(a%100!=0)|(a%400=0)date+;/计算到上一年末有多少天for(year=1;year<a;year+)totalday1=totalday1+365;if(year%4=0)&&(year%100!=0)|(year%400=0)totalday1+;week1=totalday1/7;/计算从1年1月1日至今多少天totalday2=totalday1
27、+date;week2=totalday2/7;/计算第几周,星期几week=date/7;if(week=0)week+;else if(week!=0&&(totalday1%7!=0&&date%7=0)|date%7!=0)week+;if(totalday2%7=0)weekday=7;else if(totalday2%7!=0)weekday=totalday2%7;d0=date;d1=week;d2=weekday;void main()int i,year,month,day,d3;for(i=0;i<=5;i+)printf("please input the date:n");scanf("%d,%d,%d",&year,&month,&day);time(year,month,day,d);printf("第%d天,第%d周,星期%dn",d0,d1,d2);(以下为选作题,请用递归思想尝试编写程序)12. 分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:希望你写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年声乐演唱职业能力测试卷:声乐演唱与音乐教育实践能力考察
- 2025年软件设计师专业考试模拟试卷:软件设计与编码规范实战试题
- 2025年职业指导师专业能力测试卷:职业咨询与职业测评实践题库
- 2025房屋租赁中介服务合同范本
- 2025年初中学业水平考试地理模拟卷及答案(乡土地理特色解析版)
- 2025年专升本艺术概论模拟试卷:艺术与科技融合在艺术与科技融合课程中的应用试题
- 2025年初中学业水平考试地理模拟卷及答案:地理信息技术在地理信息处理与分析的应用挑战试题
- 江苏省大丰区新丰中学2025年高三5月考试生物试题含解析
- 宁夏大学新华学院《眼应用光学基础》2023-2024学年第二学期期末试卷
- 浙江省外国语实验学校2025年初三年级第二学期联合调研化学试题含解析
- 星际分子光谱分析学的研究方法探究系列如下-洞察分析
- 电力系统继电保护知到智慧树章节测试课后答案2024年秋福建水利电力职业技术学院
- IATF16949基础知识培训教材
- 儿童春季常见病及预防
- 中国慢性阻塞性肺疾病基层诊疗指南(2024年)解读
- 《中华人民共和国学前教育法》专题培训
- 2024年微生物在化妆品中的作用及其重要性
- 2024年视角下的地球形状教案创新探讨
- 地方导游基础知识电子教案 专题六 学习情境一 重庆市课时教案
- 高中语文课件:成语
- 学校职称评审工作自查报告
评论
0/150
提交评论