Bliner'Site

高树靡阴,独木不林。


  • 首页

  • 分类9

  • 标签33

  • 归档211

  • 关于

  • 搜索

C语言中的函数-函数的递归-学习笔记-17

发表于 2018-09-07 | 分类 笔记&教程 | 评论数: | 阅读次数:

引入递归

在调用函数的过程中又出现直接或者间接调用函数本身,称为函数的递归调用。
直接调用:

1
2
3
4
5
int test(int x){
int a,b;
b=test(a);
return(2*b);
}

这就是直接调用,即在本函数体内,再次调用其自身。

间接调用:

1
2
3
4
5
6
7
8
9
10
int test (int x){
int test2(int z);
int a,b;
b=test2(a);
return (2*b);
}
int test2 (int z){
int c=2*z;
test(c);
}

上面就是间接调用了,虽然函数体本身并没有调用自身函数,但是调用了其他函数,其他函数又掉用了其主调函数,这就是简介的进行递归。

阅读全文 »

C语言中的函数-函数的声明和嵌套-学习笔记-16

发表于 2018-09-06 | 分类 笔记&教程 | 评论数: | 阅读次数:

函数声明

前面我们说,要使用一个函数必须经过两个步骤,声明函数和定义函数,现在我们来讲讲函数的声明。

1
2
3
4
5
6
#include <stdio.h>
int main(){
int max ( int x, int y); //这里就是对 max 自定义函数的声明
......
return 0
}

上面我们声明了一个函数,函数的名字叫做 max ,返回值类型为 int ,含有两个参数,两个参数的类型都是 int 型。将这些信息告诉编译器之后,编译器就能知道 max 的作用了。

注意
函数声明需要在主调函数内进行,但是如果已经在之前(主调函数前)声明的函数,第二次调用时,不用再次声明。
总之,原则就是,先定义再使用,如果后定义,那就先声明再使用。声明之后,声明位置之后的函数再次调用,不必再次声明。

阅读全文 »

C语言中的函数-定义和调用函数-学习笔记-15

发表于 2018-09-06 | 分类 笔记&教程 | 评论数: | 阅读次数:

引入

前面我们讲到为何要使用函数,以及为何要把功能封装到函数中,今天我们就来讲如何来定义和使用函数。

定义函数

为什么要定义函数呢?因为在 C 语言中,所用到的所有函数,都必须先定义,后使用。先要将函数的一些基本信息通知编译系统,这样在程序执行该函数时,编译系统才能按照预先指定的功能执行。

定义函数的四要素

定义函数需要包括一下几个内容:

  1. 指定函数的名字,用于在后期调用。
  2. 指定函数的类型,也就是函数返回值的类型。
  3. 指定函数的参数的名字和类型,在后期调用时,向其传递数据,当然了,也可以没有参数。
  4. 指定函数的功能,即函数需要做什么,对数据进行什么样的处理。这事最重要的,也是函数体中的主要内容。
    阅读全文 »

C语言中的函数-引入函数的概念-学习笔记-14

发表于 2018-09-05 | 分类 笔记&教程 | 评论数: | 阅读次数:

为什么要用函数

说起函数,我们最熟悉的就是main 函数因为我们写 C 语句的时候,必须包含 main 函数。我们的输入、输出甚至数据的处理都从一个 main 函数中进行,但是随着程序的规模越来越大,单纯使用 main 函数已经无法满足后期维护和编写的需求。并且我们在程序运行中,需要重复使用某个功能时,要一遍又一遍的写,非常麻烦,所以我们就引入函数这个概念。把一个庞大程序的功能封装到一个一个函数中,然后把各种功能的函数组装在一起,实现我们程序所需要的功能。

函数

函数是从英文 function 中翻译过来的,function 在英文中也有功能的意思,所以我们的函数也就是功能,函数就是用来完成一个又一个的功能的。

从一个例子引入

现在,我们要输出这样的一条信息

1
2
3
**********************
Function
**********************
阅读全文 »

C语言中的循环之练习题-学习笔记-13

发表于 2018-09-04 | 分类 笔记&教程 | 评论数: | 阅读次数:

斐波那契数列

因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34…
即开始有一对儿兔子,然后3个月后兔子长大了,这对兔子会生一对儿兔子,之后的每个月这对儿兔子又生一对儿,假设兔子不会死亡,那么 N 个月后有多少对儿兔子。

理解

数列:1、1、2、3、5、8、13、21、34…
找到数列的规律之后,我们发现,3号数是1号+2号,6号数是4号+5号,即该数前两个数的和。

解题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(){
int f1=1,f2=1,f3;
//将第1、2个月的数先赋值,作为计算基底
printf("%12d\t%12d\t",f1,f2);
//由于已经赋值了,所以就先输出
for(int i=3;i<41;i++){
f3=f1+f2;
printf("%12d\t",f3);
//利用循环输出第三个月的数,也就是前两个月的和
if(i%4==0){
printf("\n");
}
//判断换行
f1=f2;
f2=f3;
//将用于相加的两个数向前推移
}
}
阅读全文 »

C语言中的循环之高级循环 (下)-学习笔记-12

发表于 2018-09-03 | 分类 笔记&教程 | 评论数: | 阅读次数:

更加灵活的利用循环

我们刚才讲了,如何使用 C 语言中的两种循环语句,For循环和do...while循环,那么这些循环能否像if...else...语句一样能够彼此嵌套呢?答案是肯定到,循环也可以进行嵌套,并且通过嵌套,我们可以更加灵活的使用循环的各种特点。当然了,我们甚至也可以改变循环的执行状态,让循环在我们需要的时候跳出。

几种循环的比较

首先我们先看看几种循环的比较,找到这些循环的特点。
1、三种循环的运行机制都差不多,计次、执行循环体、增量变量,所以可以相互替换使用。
2、while 循环和do...while循环都是在 while 后面的括号中增加判断条件,来判断是否执行下一轮循环,所以在循环体中,要对这个判断条件施加一些设定,让循环能够及时的退出。
3、凡是用 while 循环写的,都可以用 for 循环实现。
4、while 循环、do...while循环和for 循环都可以使用 break 语句跳出循环,使用 continue 语句结束本次循环。(这两个语句详见下方)

阅读全文 »

C语言中的循环之 for 循环 (中)-学习笔记-11

发表于 2018-08-31 | 分类 笔记&教程 | 评论数: | 阅读次数:

引入 for 循环

在看完了 while 循环之后,我们发现,一个循环最重要的有三件事,循环次数、判断条件、循环后递增条件。比如我们在使用 while 循环的时候,就要实现定义一个计次变量,然后每次循环后累加这个变量,使得我们能够在满足条件时及时的跳出循环。而 for 循环则是将这一切变得更容易了!

fro 循环

我们先看一个例子,来对比一下 for 循环和 while 循环,同样是那个1~30累加的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//以下是 while 循环的写法
#include <stdio.h>
int main(){
int i=1;result=0;
while(i<=30){
result=result+i;
i++;
}
printf("1~30的累加结果是:%d\n",result);
return 0;
}


//以下是 for 循环的写法
#include <stdio.h>
int main(){
int result=0;
for(int i=1;i<=30;i++){
result=result+i;
}
printf("1~30的累加结果是:%d\n",result);
return 0;
}
阅读全文 »

C语言中的循环之 do...while循环 (上)-学习笔记-10

发表于 2018-08-30 | 分类 笔记&教程 | 评论数: | 阅读次数:

引入循环

为什么需要循环呢?比如,你遇到了…
1+2+3+4+5
遇到这样的数累加,加到5加到10可能都没问题,加到10000呢..
1+2+3+...+10000
是不是就崩溃了…
为了能让计算机能够进行多次运算,所以就有了循环的出现。
在 C 语言中,一共有两种循环,一种是 while 循环另一种是 for 循环,我们先来说 while 循环。

从一个例子开始

如果我们需要计算1~30的累加,即1+2+3+...+30该如何写呢?
如果是以前,我们可能要一个一个的输入,但是现在我们引入了 while 循环,就可以通过一个循环来完成这件事了~

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(){
int result=0;
int i=1;
while(i<=30){
result=result+i;
i++;
}
printf("1~30的累加结果是:%d\n",result);
}
//执行结果是『1~30的累加结果是:465』
阅读全文 »

C语言中的条件判断(下)-学习笔记-9

发表于 2018-08-30 | 分类 笔记&教程 | 评论数: | 阅读次数:

引入 switch 语句

上一篇介绍了 if 语句只有两个分支可供选择,而实际问题往往有更多种可能性,虽然 if 语句可以嵌套使用,但整个代码会变得冗长难懂,后期维护成本和修改成本都很高,所以 C 语言提供 swich 语句直接处理多分支选项。

从例题入手了解 switch 语句

我们设计一个程序,当我们输入 A~E 的成绩等级后,返回该等级对应的分数,我们当然可以使用if 语句来写,如果是 A 等级还好,如果是 E 等级,我们需要判断很多次才能知道,如果使用 switch,我们就可以对指定的条件返回指定的内容,哪怕分支再多也可以轻松应对。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(){
char result;
printf("请输入你需要查询的成绩等级:");
scanf("%c",&result);
switch(result){
case 'A':printf("你输入的是%C,成绩约在90分以上!\n",result);break;
case 'B':printf("你输入的是%C,成绩约在80~90分!\n",result);break;
case 'C':printf("你输入的是%C,成绩约在70~79分以上!\n",result);break;
case 'D':printf("你输入的是%C,成绩约在60~69分以上!\n",result);break;
case 'E':printf("你输入的是%C,成绩约在69分以下!\n",result);break;
default:printf("输入错误!\n");break;
}
return 0;
}
阅读全文 »

C语言中的条件判断(上)-学习笔记-8

发表于 2018-08-26 | 分类 笔记&教程 | 评论数: | 阅读次数:

条件判断

在 C 语言中有两种条件判断语句,if 语句 和 switch 语句,if 语句实现的是双分支的选择结构,swicth 语句实现的是多分支的选择结构。

if 语句

if 语句是一个双分支选择结构,通过条件表达式的结果判断程序是执行 if 语句模块还是 else 语句模块。

一般形式

if (表达式)语句1
[else 语句2]

  1. 这里的表达式可以是关系表达式、逻辑表达式或者数值表达式。
  2. 上面的方括号中的 else 和 语句2 为可选内容,可以有也可以没有。
  3. 语句 1 和语句 2 可以是一个简单语句、复合语句或者是另一个 if 语句,即在此 if 语句中包含另一个 if 语句。
    阅读全文 »

1…121314…22
Bliner

Bliner

211 日志
9 分类
33 标签
RSS
推荐阅读
  • 关于GTD中项目“复盘”的一些看法
0%
© 2019 Bliner |
主题 — NexT.Pisces
|
鲁ICP备13021673号
访问人数 总访问量 次