




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言中常见的功能函数(应掌握的编程)1、 两个变量值的交换void exchang(float *x,float *y) /*形参为两个变量的地铁(指针)*/float z; z=*x; *x=*y; *y=z;void main()float a,b; scanf(“%f%f”,&a,&b); exchang(&a,&b); /*因为形参是指针,所以实参必须给变量的地址,不能给变量名*/ printf(“a=%f,b=%f”,a,b);2、 判断一个整数的奇偶int jou(int n) /*如果是奇数返回1,否则返回0*/if(n%2=0) return 0; return 1;3、 小写字符转换成大写字符根据实参传给形参的字母,判断是否是小写字母,如果是小写字母,则转换成大写字母,否则不进行转换,函数返回转换后或原来的字符。本函数仿照toupper()库函数的功能编写(toupper(c) 是将变量c字母转换成大写字母,如果不是小写字母不转换)。char toupper1(char ch)if(ch=a&ch=A&ch=a&ch=0&ch=9) return 1; else return 0;5、 根据学生成绩,返回其等级char fun(float cj)char c; switch(int)cj/10) case 10: case 9:c=A; break; case 8:c=B; break; case 7:c=C; break; case 6:c=D; break; default: c=Ereturn c;6、 求1+2+.+n(1)用循环int sum(int n)int i; for(i=1;i=n;i+) s+=i;(2)使用递归long sum(int n)if(n=1) return 1;else return jiec(n-1)+n;根据本题扩展:求s=1+(1+2)+ (1+2+3)+.+(1+2+n)void main()long s=0,s1=0; int i,n; scanf(“%d”,&n); for(i=1;i=n;i+) s1+=i; /*计算出每一项的值,通过累加得到*/ s+=s1; /*将每一项的值累加到结果中去*/ printf(“s=%ld”,s);7、 求n!(1)用循环long jiec(int n)int i; long s=1; for(i=1; i=n; i+) s*=i; return s;(2)使用递归long jiec(int n)if(n=1) return 1;else return jiec(n-1)*n;根据本题扩展:求s=1!+2!+ 3!+.+n! n的值最好不要太大void main()long s=0,s1=1; int i,n; scanf(“%d”,&n); /*输入n的值不要太大,否则结果long型存不下,输出时会输出一个负数*/ for(i=1;i=n;i+) s1*=i; /*计算出每一项的值,通过累乘得到*/ s+=s1; /*将每一项的值累加到结果中去*/ printf(“s=%ld”,s);8、 求某整数的因子之和int inz(int n) /*计算数n的因子之和(包括1和n本身),函数返回因子之和*/int s=0,i; for(i=1;i=n; i+) /* 通过本循环,将1-n的数一个一个拿来看是否能被n整除,如果是真因子的话,就不包括1和n本身*/ if(n%i=0) s+=i; /*一个数的因子,就是能被其整除的数*/ return s;9、 判断一个整数是否是素数int ss(int n) /*如果是素数返回1,否则返回0*/int i; for(i=2; in/2; i+) if(n%i=0) return 0; return 1;10、 求一个整数的反序数long fxs(long n) /*函数返回反序数,形参需要原来的数*/long fan=0; while(n!=0) fan=fan*10+n%10; n/=10;return fan;11、 判断一个数是否是回文数long hw(long n) /*如果是回文数函数返回1,否则返回0*/long fan=0,m=n; while(n!=0) fan=fan*10+n%10; n/=10;if(fan=m) return 1;else return 0;12、 判断一个数是否是水仙花数int sxh(long n) /*判断任意位数的整数是否是水仙花数,是水仙花数返回1,不是返回0*/long g,i,s=0,m=n; while(n!=0) /*通过本循环语句,将数n从个位数字开始一个个位数的数字的立方累加到变量s中*/ g=n%10; s=g*g*g; n/=10;if(s=m) return 1;else return 0;13、 计算x的y次方本函数用于计算x的y次方(x,y为整型,函数返回值为long型)。仿照库函数pow()(pow(x,y)是用于计算x的y次方的库函数,不过该函数的形参x,y和返回值均为double类型)编写。long pow1(int x,int y)long s=1; int i; for(i=1;i=y;i+) /*将变量x的值累乘y次*/ s*=x; /*每次将上次累乘的结果再乘以x*/ return s;14、 计算n个n(n为一位十进制数)本函数用于计算n个n的值,比如:333(3个3),4444(4个4)。long mm(int n) /*n为一个十进制数字*/int i; long s=0; for(i=1;i=n;i+) s=s*10+n;return s;本函数可以应用于这样的题目:求s=1-1/22+1/333-1/4444+1/55555-1/666666主函数可以写成:void main()double s=0; int i,sign=1; /*sign用来处理每项的符号(正或负)*/ for(i=1; i=6; i+) s+=sign*1.0/mm(i); /*因为mm()函数返回的值是长整型,所以必须用1.0,而不能用1,因为整型除以整型,结果是整型*/ sign=-sign; /*每次变换一下sign的符号(正或负)*/这样的题目包括:求s=a+aa+aaa+aaaa+aa.aa(n个a),a和n都在1-9之间。 long fun(int a,int n)long s=0,t=0; int i; for(i=1;i=n;i+) t=t*10+a; s+=t;return s; /*或者return(s); */15、 求两个整数的最大公约数(1)辗转相除法int fun(int m,int n)int t,r;if(mn,如果mn,则交换两个变量的值*/r=m%n;while(r!=0) m=n; n=r; r=m%n;return n; /*n为最大公约数*/(2)穷举法(按数学定义)int fun(int m,int n) /*此方法可以求多个数的最大公约数*/int i,min,gys; if(mn) min=m; /*找出两个数中的最小数*/ else min=n; for(i=1; imin; i+) if(m%i=0&n%i=0) gys=i; return gys;16、 计算Fibonacci数列的第n项本函数完成的功能:计算出该数列的第n项的值,并返回。递归方法long fbnc(long n)if(n=1|n=2) return 1; else return fbnc(n-1)+fbnc(n-2); /*从第三项开始,后一项是前面两项之和*/17、 数组的输入一维数值型数组的输入:void intput1(float a, int n) /*n为数组a中元素的个数,此函数以float型数组为例*/int i; for(i=0;in; i+) scanf(“%f”,&ai); 二维数值型数组的输入:void intput2(float a3, int n) /*n为数组a中元素的行数,此函数以float型数组为例,形参定义时,如果是二维数组,则第二维(列)的数字不能少,比如本例中的3*/int i,j; for(i=0;in; i+) /*表示行的外循环*/for(j=0;j3;j+) /*表示列的内循环*/ scanf(“%f”,&aij); 18、 数组的输出一维数值型数组元素的输出:void output1(float a, int n) /*n为数组a中元素的个数,此函数以float型数组为例*/int i; for(i=0;in; i+) printf(“%10.2f”,ai); 二维数值型数组元素的输出:void output2(float a3, int n) /*n为数组a中元素的行数,此函数以float型数组为例,形参定义时,如果是二维数组,则第二维(列)的数字不能少,比如本例中的3*/int i,j; for(i=0;in; i+) /*表示行的外循环*/ for(j=0;jright) mid=(left+right)/2; if(amid=x) return mid; else if(amidx) left=mid; else right=mid;return -1;20、 冒泡排序/*对存放在数组a中的n个数进行排序,(或者对从地址a开始的n个数进行排序),排序是从小到大)*/void sort1(int a,int n)int i,j,t; for(i=0;in-1;i+) /*排序趟数*/ for(j=0;jaj+1) /*从小到大排序,如果是从大到小排序,则将大于号改成小于号*/ t=aj; aj=aj+1; aj+1=t; /*不符合小到大的进行交换*/21、 直接选择排序void sort1(int a,int n) /*对以地址(指针)a开始的n个数,按从小到大进行排序*/int i,j,k,t; for(i=0;in-1;i+) /*排序趟数*/ k=i; for(j=i+1;jn-1-i; j+) if(ajak) k=j; /*从小到大排序,如果是从大到小排序,则将大于号改成小于号*/ if(k!=i) t=ai; ai=ak; ak=t; /*如果找的极值不在下标为i,则进行交换*/22、 求字符串长度本函数是仿照库函数strlen()的功能编写的。(1)常归方法int strlen1(char s) /*字符串第一个0的下标就是字符串的长度*/int i;for(i=0;si!=0; i+) ; /*循环体中只有一个空语句,即只有;,没有表达式,本循环退出时,si!=0为假,即si=0,则i就是字符0的下标*/return i;(2)使用指针方法int strlen1(char s)char *p1,*p2; p1=s; for(p2=p1;*p2!=0; p2+) ; /*循环体中只有一个空语句,循环结束后,指针p2指向0这个字符*/ return p2-p1; /*两个指针相减即为字符串长度*/23、 字符串拷贝本函数是仿照库函数strcpy()的功能编写的。void strcpy1(chat s1,char s2) /*将字符串s2拷贝到字符串s1中*/int i; for(i=0; s2i!=0;i+) s1i=s2i; s1i=0; /*因上述循环没有将字符串结束标志0拷贝到s1中,所以需要加一个字符串结束标志0*/24、 字符串连接本函数是仿照库函数strcat()的功能编写的。#include void strcat1(char s1,char s2) /*将字符串s2连接到字符串s1后面*/int i,len=strlen(s1); for(i=0; s2i!=0;i+) s1i+len=s2i; s1i+len=0; /*因上述循环没有将字符串结束标志0拷贝到s1中,所以需要加一个字符串结束标志0*/25、 字符串比较比较字符串s1与s2的大小,如果s1大于s2返回1,如果s1小于s2返回-1,否则返回0。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售业务场景处理与解决指南
- 中小企业融资方案策划模板
- 制造业工艺改进方案指南
- 司法考试 律师从业资格及答案解析
- 2025安全素养测试题及答案解析
- 跨部门协作沟通模板与工具箱
- 2025-2030动力电池管理系统安全性能测试标准及优化方向分析报告
- 2025-2030加湿器冬季季节性需求波动及库存管理研究报告
- 2025-2030制造业转型升级及智能制造技术应用报告
- 我和我的心爱之物写物作文14篇
- 调试、试运行与移交管理方案
- GB/T 26655-2011蠕墨铸铁件
- 热镀锌钢管技术标准
- 周三多管理学第03章管理的基本原理
- 基础生态学第4章种群及其基本特征课件
- 虚拟现实与增强现实头戴显示关键技术及应用项目
- (完整)公共卫生基本知识考试题题库及答案
- 《电力工业企业档案分类规则0大类》(1992年修订版)
- GB∕T 26520-2021 工业氯化钙-行业标准
- 温州医科大学《儿科学》支气管肺炎
- 常见传染病预防知识ppt-共47页课件
评论
0/150
提交评论