目录:

一、函数

二、return与exit关键字

三、递归与递推

回到顶部

一、函数

1 函数由函数名、返回值、形参、函数体组成。

函数的使用分三个步骤:声明、定义、调用

2 语法格式:

返回值类型 函数名(参数){

。。。函数体;

}

3 函数声明

正常来件,函数在使用前一定要声明,由编译器从上到下,所以下面的代码调用上面的函数,不需要声明,但上面的代码调用下面的函数,就必须声明。

函数的声明:去掉函数体部分,保留返回值类型 函数名(参数);

如果返回值类型不是int的话,都要使用函数声明。

函数声明,可以省略参数,省略参数代表可以接收任意参数,如果不需要参数,使用void关键字。

4 函数调用

在准备使用函数的时候,执行函数名(参数),就调用了函数体的语句。没有参数()也不能省略。

有参数的函数在定义时使用的参数叫形参,当调用此函数时传人的参数叫实参。

调用函数时,需要函数的执行结果,这时就需要返回值类型标识结果的类型,函数体内部需要使用return关键字,标识具体的函数结果(返回值)。

如果函数有返回值,当调用函数时,通常会使用变量接收返回值。

5 函数使用时注意的问题:

如果函数执行后,不需要结果,就定义函数的返回值类型void(空),也就不需要return关键字。

如果执行函数需要参照一些特定的条件,就可以使用参数,如果有多个参数,之间用逗号分隔符。

练习:

1)求两个数的和。(求和函数、有返回值、参数2)

2)求两个数的差、积、商。定义成函数。

3)输入五组数,求和差积商。

4)输入一个分数,输出相应的级别。

输入一个级别,输出相应的分数。

分别输入5个数,5个级别。

 #include <stdio.h>
//声明函数
//void空 没有返回值
void sayHello();
//定义函数
void sayHello()
{
printf("hello world!\n");
}
//声明
void sayHello5();
//int func();
void sayHelloByCount(int count);//形参
void sayHelloByCount(int count)
{
for (int i = ; i < count; i++) {
printf("hello world!\n");
}
}
int getNumber()
{
return ;
}
//练习:求两个数的和
int sum(int n1,int n2)
{
int sum2 = n1 + n2;
return sum2;
}
//2)求两个数的差、积、商。定义成函数。
int cha(int n1,int n2)
{
return n1 - n2;
}
int ji(int n1,int n2)
{
return n1 * n2;
}
int shang(int n1,int n2)
{
return n1 / n2;
}
//3)输入五组数,求和差积商。
int intputNum()
{
int num;
printf("输入一个数:");
scanf("%d",&num);
scanf("%*c");//清除缓存
return num;
}
//输入一个分数,输出相应的级别。
int inputNum2()
{
int num;
printf("输入一个数:");
scanf("%d",&num);
return num;
}
void printFenshuByLevel(int i){
if (i >= ) {
printf("a\n");
}else if(i >= ){
printf("b\n");
}else{
printf("c\n");
}
}
//输入一个级别,输出相应的分数。
char inputChar(){
char ch;
printf("输入一个字母:\n");
scanf("%c",&ch);
scanf("%*c");//清除缓存
return ch;
}
void printLevelByChar(char ch){
switch (ch) {
case 'a':
printf("90~100\n");
break;
case 'b':
printf("60~90\n");
break;
case 'c':
printf("0~60\n");
break; default:
break;
}
}
int main(int argc, const char * argv[])
{
//调用函数
// sayHello();
// sayHello5();
// func();//int返回值可以不用声明
// sayHelloByCount(3);
// int num = getNumber();
// printf("num:%d\n",num);
// int i = 3;
// int j = 5;
// int s = sum(i,j);
// printf("sum:%d\n",s);
// int i = intputNum();
// int i2 = intputNum();
// int j = intputNum();
// int j2 = intputNum();
// printf("res:%d\n",cha(i, i2));
// printf("res:%d\n",ji(j, j2));
// for (int i = 0; i < 3; i++) {
// char c = inputChar();
// printLevelByChar(c);
// }
for (int i = ; i < ; i++) {
char i = inputNum2();
printFenshuByLevel(i);
}
//command +a 全选 ctrl + i 格式化
return ;
}

作业:使用函数重构昨天的作业。

使用参数的时候,相当于实参传递值给形参。

练习:有两个数i = 2,j = 3使用函数调换两个数的值,在调换函数中查看i和j的值,在main函数中查看调换后的值。

形参是数组时,采用两个参数,第一个参数是数组的长度,第二个参数是不指定数组长度的数组名。

练习:求一组数的和,最小值,最大值。

#include <stdio.h>
//有两个数i = 2,j = 3使用函数调换两个数的值,在调换函数中查看i和j的值,在main函数中查看调换后的值。
void swap(int m,int n){//实参传递给形参时是值传递
int temp = ;
temp = m;
m = n;
n = temp;
printf("swap函数中m:%d,n:%d\n",m,n);
}
int main()
{
int i = ;
int j = ;
printf("main调换之前i:%d,j:%d\n",i,j);
swap(i,j);
printf("main调换之后i:%d,j:%d\n",i,j);
return ;
}

回到顶部

二、return与exit关键字

1 exit(0)是一个函数,用于退出整个程序,需要包含stdlib.h

2 return可以作为返回值的关键字,终止当前函数的继续执行。

#include <stdio.h>
#include <stdlib.h>
int test(){
//exit(0);//终止整个程序
return ;//终止函数的继续执行
printf("函数结束了!\n");//这里不会被执行
}
int main()
{
printf("程序开始!\n");
test();
printf("程序结束了!\n");//如果test函数里加上exit(0),这里不会被执行
return ;
}

回到顶部

三、递归与递推

1 递归算法

递归的过程:一般通过函数或子函数实现。

递归的方法:在函数或子函数内部,直接或间接调用自己的算法。

递归有可能造成死循环或算法的复杂化,(运行次数过多),因此在使用递归时,必须注意:

1)必须有退出条件

2)必须保证递归后,算法简化

2 递归格式

int f1(int n){

if (n == 1) {//结束条件

return 1;

}

return n*f1(n - 1);

}

3 递推的概念与基本思想

给一个数的序列H0、H1、H2、....、Hn,若存在n0,当n > n0时,可以用等号(或大于号、小于号)将Hn与前面的某些Hi(0 < i < n)联系起来,这样的式子就叫递推关系。

int f2(int n){

int res = 1;

for (int i = 1; i <= n; i++) {

res = res * i;

}

return res;

}

10-C语言函数的更多相关文章

  1. 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器

    这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编 ...

  2. 不可或缺 Windows Native (10) - C 语言: 文件

    [源码下载] 不可或缺 Windows Native (10) - C 语言: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifn ...

  3. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  4. C语言函数指针(转载)

    二.通常的函数调用 一个通常的函数调用的例子:/* 自行包含头文件 */void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */int main(int a ...

  5. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  6. C语言函数名与函数指针详解

    一.通常的函数调用 一个通常的函数调用的例子: /* 自行包含头文件 */ void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */ int main(in ...

  7. Go语言函数

    目录 函数定义 函数返回多个值 函数参数 Go 语言函数值传递 Go语言函数引用传递 函数用法 函数作为值 匿名函数 闭包 方法 不定参数的函数 init函数 内建函数 函数调用机制 总结 函数定义 ...

  8. Go语言 函数,工程管理

    Go语言 函数,工程管理 1.无参无返回值函数的使用 package main import "fmt" func main() { // 无参无返回值函数的调用:函数名() fu ...

  9. 实际项目开发过程中常用C语言函数的9大用法

    C语言是当中最广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率最高的计算机语言,既能完成上层应用开发,也能完成底层硬 ...

  10. C语言函数库

    C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...

随机推荐

  1. WebService-06-CXF与Spring集成

    前言 自3月份到一家快递公司之后,就极少有时间来写博客了,进去的第一个周末就加班.做公司的开放平台,协助一个小伙伴写WebService接口,用的就是CXF.正好这个东西曾经使用过.如今快7月了,曾经 ...

  2. 3.类型、值和变量-JavaScript权威指南笔记

    开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并 ...

  3. linux 分割文件

    import os import sysimport subprocess if len(sys.argv)<3 : print 'usage: filenum filename' file_n ...

  4. VC++学习之VC中常见问题

    VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...

  5. 获取select赋值

    <select class="sel-ul-add" id="xuanzhe"> <option>A</option> &l ...

  6. 搭建单节点Hadoop应用环境

    虚拟机: VirtualBox 5 Server操作系统: Ubuntu Server 14.04.3 LTS 如果对虚拟机空间和性能不做考虑, 且不习惯用Linux命令, 你也可以使用Ubuntu ...

  7. 电脑硬件扫盲--CPU 显卡

    CPU: 主要2个厂商 Inter:core(酷睿) > pentinum(奔腾) > celeron(赛扬) AMD:athlon(速龙) > semporn(闪龙) 主频(GHz ...

  8. 生成输出url时,使用CSS来控制超链接的格式

    在前文<生成输出url>中的第5点,介绍了使用ActionLink生成输出url中指定html标签属性. 例如, 假设Global.asax中的路由定义为: public static v ...

  9. 关于Android Launcher图标上面动态改变数字的实现

    由于项目需要使用到类似小米应用商店的图标数字提示功能,谷歌百度了许多文章都没看到有真正意义上的实现(没有在国外网站上搜索),有实现在APP内部的一个ImageView上面更新数字的,当然这种太简单无非 ...

  10. Effective C++学习笔记——构造/析构/拷贝运算

    条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数. 应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会 ...