版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.C 语言中常见的功能函数(应掌握的编程)1、 两个变量值的交换void exchang(float *x,float *y) /* 形参为两个变量的地铁(指针) */ float z;z=*x;*x=*y;*y=z;void main()floata,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、 小
2、写字符转换成大写字符根据实参传给形参的字母,判断是否是小写字母, 如果是小写字母,则转换成大写字母,否则不进行转换,函数返回转换后或原来的字符。本函数仿照 toupper() 库函数的功能编写( toupper(c) 是将变量 c 字母转换成大写字母,如果不是小写字母不转换) 。char toupper1(char ch)if(ch= a&ch= A&ch=a&ch= 0&ch= 9)return 1;elsereturn 0;5、 根据学生成绩,返回其等级charfun(float cj)charc;switch(int)cj/10)case10:.case9:c=A;break;case8
3、:c=B;break;case7:c=C;break;case6:c=D;break;default:c=Ereturn c;6、 求 1+2+ .+n(1)用循环intsum(int n)int i;for(i=1;i=n;i+)s+=i;(2)使用递归longsum(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; /* 计算出每
4、一项的值,通过累加得到*/s+=s1;/* 将每一项的值累加到结果中去*/printf( “s=%ld ”,s);7、 求 n!(1)用循环longjiec(int n)int i;long s=1;for(i=1; i=n; i+)s*=i;return s;(2)使用递归longjiec(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 的值不要太大,否则结果l
5、ong 型存不下,输出时会输出一个负数*/for(i=1;i=n;i+)s1*=i; /* 计算出每一项的值,通过累乘得到*/s+=s1;/* 将每一项的值累加到结果中去*/printf( “s=%ld ”,s);8、 求某整数的因子之和intinz(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;
6、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;
7、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;elsereturn 0;13、计算 x 的 y 次方本函数用于计算x 的 y 次方(x,y 为整型,函数返回值为long 型)。仿照库函数pow()( pow(x,y)是用于计算
8、x 的 y 次方的库函数,不过该函数的形参x,y 和返回值均为double 类型)编写。longpow1(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;本函数可以应
9、用于这样的题目:求 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 之间。lo
10、ng 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)辗转相除法intfun(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)穷举法(按数学定义)intfun(int m,int n)/* 此方法可以求多个数的最大公约数*/inti,min,gys;if(mn)min=m
11、; /* 找出两个数中的最小数*/elsemin=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(floata, int n) /*n为数组 a 中元素的个数,此函数以float 型数组为例
12、 */int i;for(i=0;in; i+)scanf(“%f”,&ai);二维数值型数组的输入:.void intput2(floata3, 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(floata, int n) /*n 为数组 a 中元素的个数,此函数
13、以float 型数组为例 */int i;for(i=0;in; i+)printf( “%10.2f ”,ai);二维数值型数组元素的输出:void output2(floata3, 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;elseright=mid;ret
14、urn-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;f
15、or(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)常归方法intstrlen1(char s)/* 字符串第一个0 的下标就是字符串的长度*/int i;for(i=0;si!=0 ;i+);/* 循环体中只有一个空语句,即只有;,没有表达式,本循环退出时, si!= 0为假,即s
16、i= 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; /* 因上
17、述循环没有将字符串结束标志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。in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京化工大学国际教育学院管理岗位招聘1人考试备考试题及答案解析
- 2026江苏徐州市新盛集团下属城商集团招聘12人考试模拟试题及答案解析
- 2026年常州市森林保护站事业单位人员招聘考试备考试题及答案详解
- 2026江西赣州远恒佳职业学院招聘47人考试模拟试题及答案解析
- 2026年蚌埠市粮食和物资储备系统事业单位人员招聘考试备考试题及答案详解
- 2026广东梅州市五华县周江镇人民政府政府专职消防员招聘3人笔试备考题库及答案详解
- 2027届“梦工场”招商银行合肥分行暑期实习生招募考试备考题库及答案解析
- 2026广东东莞市发展和改革局下属事业单位招聘5人考试模拟试题及答案解析
- 2026年滨州展鸿人力资源管理有限公司公开招聘派遣制精神卫生护理岗位工作人员笔试参考题库及答案解析
- 2026年佛山市三水区卫生健康系统人员招聘笔试备考试题及答案解析
- 外观检验标准培训
- 如何做好病房管理卫生
- 特种设备观光车管理办法
- 2024年10月广东英德泰隆村镇银行秋季社会招考笔试历年参考题库附带答案详解
- 2025年湖北省中考英语真题(原卷版)
- 湖羊饲养管理技术
- 学校班级家长群管理制度
- 围术期患者低体温防治专家共识(2023版)
- 2025青少年吸烟危害
- T/CEMTA 1-2021工业炸药塑膜、纸塑袋包装技术规范
- T/CECS 10004-2018内置隔膜密闭式膨胀水箱
评论
0/150
提交评论