函数的范例
来源:互联网 发布:软件资质 公司 编辑:程序博客网 时间:2024/05/16 08:10
#include <stdio.h>#include <string.h>int main(){ gets(s); f(s); }void f(char *s){ i = strlen(s); for (j = i; j >= 0; j--) printf("%c",s[j]);}
函数的范例
9.1 定义一个函数,从键盘上输入两个数,求两个数中的大者。
#include <stdio.h>#include<conio.h>int main(){ int max(int n, int m);//自定义函数的函数原型声明 int n1, n2; printf("输入两个数: "); scanf("%d%d",&n1,&n2);//调用max函数并将n1,n2作为实参传递给函数 printf("the max is %d\n",max(n1,n2)); getch();}//自定义max()函数,比较两个数的大小,返回两个数中的较大者。int max(int n, int m){ if (n > m) return n; else return m;}
范例9.4 从键盘输入5个学生的成绩,编写一个函数计算这5名学生成绩的最高分和最低分平均分
#include <stdio.h>float max; //全局变量float f(float a[], int n){ int i; float x, sum; max = a[0];//把a[0]赋值给变量max for (i=0;i<n;i++) { if (a[i] > max)//若a[i]大于max将 max = a[i]; sum = sum + a[i];//计算各个元素的累加和 } x = sum / n;//求其平均分 return(x);}void main(){ float x, s[5]; int i; for (i = 0; i < 5; i++) { scanf("%f", &s[i]); x = f(s, 5);//调用自定义函数 printf("the average is %f\n",x); printf("the max is %f\n",max); }}
范例9.5输入圆形的半径,求圆形的面积和周长,要求利用全局变量进行计算
#include <stdio.h>float s, z;//全局变量,保存圆的周长和面积void f(float r)//自定义函数计算圆的面积和周长{ s = 3.14*r*r; z = 2 * 3.14*r;}int main(){ float r; printf("输入圆的半径:"); scanf("%f", &r); f(r);//调用函数,r作为实参传递给函数 printf("圆的周长为%f\n",s); printf("圆的面积为%f\n",z);}
9.3 函数的实参和形参
函数的参数分为实参和形参。在函数的调用的过程中,实参的值会传递给函数的形参,相反,形参的值不能传递给实参。
9.3.1 传值方式
当要将常量、变量传递给函数时,即可采用传值方式。传值方式形参值的改变不会影响实参的值。其中形参的类型和个数应与实参一致。
范例9.6 编写一个函数,通过传值方式引用函数
分析:传值方式是直接将实参(变量)传递给函数中的形参(另一个变量),然后通过函数中的变量进行操作计算得出结果。
#include <stdio.h>void f(int m, int n){ int t;//通过变量t交换m和n的值 t = m; m = n; n = t; printf("m=%d,n=%d\n",m,n);//输出交换后的值}void main(){ int m = 30, n = 40; f(m,n);//调用f()函数,其中m和n作为实参传递给函数 printf("m=%d,n=%d\n",m,n);}m=40,n=30m=30,n=40自定义函数的功能为交换两个数的数值并输出交换后的结果,其中m和n作为函数的形参用来接收实参的值
注意:
- 传值方式是将实参的值传递给形参。形参可以和实参同名,形参值的变化不会影响实参值的变化。
- 传值方式中的return语句只能返回一个值
9.3.2 传址方式
传址方式是将实参的地址传递给形参。函数将会对这个地址进行操作,因此形参的变化会影响实参的值。
1、变量的地址
范例 9.7 编写一个函数,通过传址方式交换两个数的数值
分析:传址方式是指将变量的地址传递给形参,对变量的地址进行操作。因此传址方式中形参值的变化会影响实参的值。
#include<stdio.h>void f(int *m, int *n){ int t; t = *m; *m = *n; *n = t; printf("m=%d,n=%d\n", *m, *n);}void main(){ int m = 30, n = 40; f(&m, &n); printf("m=%d,n=%d\n",m,n);}
- 自定义函数的功能是交换传入函数的两个数,
- 其中指针m和n作为函数形参用来接收实参的地址。
- 调用自定义函数将其中的变量m和n的地址作为实参传递给函数
2、一维数组名作实参
一维数组名表示数组的首地址,因此可以作为实参传递给函数
范例9.8 从键盘输入两个字符串,比较这两个字符串是否相等。若两个字符串相等则输出“相等”,否则输出“不相等”。
分析:用两个字符数组来保存输入的字符串。
#include <stdio.h>void f(char s1[], char s2[]){ int i = 0; //循环比较两个字符串是否相等 while (s1[i] == s2[i] && s1[i] != 0) i++; if (s1[i] == '\0'&&s2[i] == '\0') printf("相等\n"); else printf("不相等\n");}void main(){ char s1[30], s[30]; printf("输入两个字符串\n"); gets(s1);//从键盘上读取字符串保存至数组s1 gets(s2); f(s1, s2);}
- 数组名用作实参引用函数
- 自定义函数的功能是通过逐个字符的比较两个字符串是否相等
- 通过gets_s()函数从键盘上获取字符串
- 输入的字符个数一定要在定义的范围之内
3、字符串做实参
字符串做实参,形参应为字符型的指针变量。
编写一个程序,计算一个字符串中s字符出现的次数
分析:计算一个字符中的s字符出现的次数,可以设置一个计算器,计算器初始值为0,将字符与字符串中的字符逐个的比较,相等则计数器加1,否则,计数器的数值不变
#include <stdio.h>void f(char *s){ char c = 's'; int i = 0, m = 0; while (s[i] != '\0') { if (s[i] == 's') m++; i++; } printf("the num is %d\n",m);}void main(){ char s[50]; gets[s]; f(s);}
本例将字符串作为实参引用函数
自定义函数的功能是判断一个字符串中的s个数。
范例 9.12
编写一个函数,计算两个数的差值并将结果输出。
#include <stdio.h>int f(int a, int b){ int c; c = a - b; return(c);}int main(){ int x, y, z; printf("输入两个数: "); scanf("%d%d",&x,&y); z = f(x, y); printf("两个数的差值为%d\n",z);}
范例 9.13 从键盘输入一个十进制 数,将其转换为二进制输出结果至屏幕。
分析:将一个十进制数转换为二进制,可以采用除以2取余的方式,直到不能整除为止,将十进制除以2的余数保存至一个数组中,最后输出该数组即为十进制对应的二进制数。
#include <stdio.h>void s(int x){ int i = 0, j, s[100]; while (1) { s[i++] = x % 2; x = x / 2; if (x == 0) break; } for (j = i; j >= 0; j--) printf("%d",s[j]);}void main(){ int a; printf("输入要转换的十进制数: "); scanf("%d",&a); s(a); printf("\n");}
- 函数的范例
- 虚函数的一个范例
- 多参数sp_executesql 函数的使用范例
- C++成员函数指针的使用范例
- ORACLE的一些函数、存储过程范例
- C++返回指针的函数范例
- Java 调用 Javascript 函数的范例
- BUIW 范例中常用的goto跳转函数模式
- 关于Linux常用函数alarm的范例调试。。。
- CString 常使用的成员函数及范例
- 格式化读写函数(fscanf fprintf)的应用范例
- sort函数的用法及范例(亲测好用)
- 94. 使用范例来编写小巧的函数
- 释疑:抽象的父类无参构造函数运行范例
- Mysql截取字符串split函数的实现以及使用范例
- 递归函数及Java范例
- LM3S API函数解读范例
- 字符测试函数使用范例
- bug宝典之bootstrap中bootstrapValidator 1
- sqlite数据库及常用命令
- 机器人的双眸:视觉SLAM导论
- 51nod 1417 天堂里的游戏
- 常用系统函数
- 函数的范例
- 基于Android的OpenGL ES 2.0学习笔记(2)
- 51nod 1418 放球游戏
- PCM、WAV格式介绍及用C语言实现PCM转WAV
- 初识Python面向对象,父类与子类(继承),例子详解
- Android N Settings模块与Android M Settings模块差异
- codeforces 733D (水题)
- CUDA8.0thrust编程报错
- 最简单的mybatis