目录:

一、函数

二、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. C++与AS3

    ActionScript 3(简称AS3)与 c++ 都是面向对象的编程(OOP)语言,都具有OOP的特性如封装.继承.多态等.二者在语法上有许多相似之处,基本上学过C++之后再学习AS3感觉并不是特 ...

  2. android 强制设置横屏 判断是横屏还是竖屏

    判断activity 是横屏还是竖屏  方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设 ...

  3. SQL server 2008无法连接Local服务器的解决办法

    SQL的有些服务总是在关机的时候自动关闭,然后你可以打开 控制面板——管理工具——服务,然后找到SQL相关的服务,右键——属性,里面有设置,可以设成自动启动

  4. T-SQL 基于关系分割字符串

    今天晚上学习了下 SQL 基于关系的运算,同时也捉摸着写了个例子,虽然我知道性能不是很好,还有待优化.直接上源代码吧,思路表达出来有点困难,直接贴上代码,如果有人不懂得可以MM 我. declare ...

  5. day2_python学习笔记_chapter4_标准类型和内建函数

    1. 标准类型 Integer,Boolean, Long integer, Floating point real number, Complex number, String, List, Tup ...

  6. AXIS2远程调用WebService示例(Eclipse+AXIS)

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3071584.html 我们将Web Service发布在Tomcat或者其他应 ...

  7. Ubuntu14.04 64bit安装Android-Studio

    用PPA安装Android-Studio炒鸡简单,墙内亲测可用,就是速度慢了点.(睡觉时开着电脑装-) 安装Android-Studio 打开Terminal,执行: sudo add-apt-rep ...

  8. php study plan personal

    Php study schedule personal: 1. php intro + upper : imooc2. video course: php100, houdunwang (togeth ...

  9. Java处理java.util.ConcurrentModificationException异常

    代码: public static void reduce(HashMap<String, Integer> hashMap, final Integer count) { Iterato ...

  10. vc6.0批量编译

    一直想研究一下怎么让电脑批处理编译程序,今天就从vc6开始,做个记录,学习一下. VC可以生成make文件(Project->Export Makefile),在设置好环境变量下,执行NMAKE ...