c/c++学习笔记:五大循环
来源:互联网 发布:搜狐网络大厦一层图片 编辑:程序博客网 时间:2024/06/06 19:40
c/c++的五大循环,分别是:while,do…while,for,if…goto,函数递归。不同的循环适用于不同的场合,每种用法都应该掌握。
各个循环的用法
while
while(/*条件*/){ /*语句*/;}
当条件满足或者条件表达式不为0的时候,进入循环,执行完毕后再进行条件判断;
当条件满足或者条件表达式不为0的时候,再次进入循环……如果条件不满足或者条件表达式为0的时候,不再进入循环,而执行循环外的语句。
dowhile
do{ /*语句*/;}while(/*条件*/);
与while类似,dowhile是先执行一次循环体,然后进行条件判断,当条件满足或者条件表达式不为0的时候,才进入循环,否则退出循环,执行下面的语句。
for
for(/*语句1*/;/*语句2*/;/*语句3*/){ /*语句*/;}
语句1通常是定义和赋值循环变量的初值,在循环中运行一次。
语句2通常是循环条件的判断,每次循环都要运行。
语句3通常是循环变量的步长计数,每次循环都要运行。
格式完整,用法多样,比较常用的一种循环。
ifgoto
A: if (/*条件*/) { /*语句*/; goto A; }
A: /*语句*/; if ((/*条件*/) { goto A; }
ifgoto原理就是根据条件判断语句if与goto语句的特性来构成的一种循环。与while和dowhile类似,根据判断条件的先后运行,可分为两种情况,先判断条件后运行循环体,先运行循环体,后判断条件。
函数递归
int function(int n){ if (n == 1) { return 1; } else { return function(n - 1); }}
这块内容我理解的也不是很好,简单的说就是自己调用自己。函数的参数有一个必然是循环计数的变量,就是通过对这个变来控制调用自己的次数以及操作,调用到最后,一定要想办法退出,如果不退出就成了死循环,这样一层一层结果累加到一起。
特点
每个循环的共同特点都是需要一个循环变量来记录循环次数,以及配合构成循环条件,可以是int型数据来计数,或者指针和字符串配合。
五个问题
下面从以下四个问题来研究这五大循环:
1.计算1+2+3+……+n的结果
2.用指针循环扫描打印字符串常量
3.求字符串长度
4.求x^y
5.求数组中最大的数
1.计算1+2+3+……+n的结果
输入一个数字n,计算1+2+3+……+n的结果。
while
int w1while(int n){ int sum = 0; while (n > 0) { sum += n; n--; } return sum;}
返回值为int型数据,用于返回总和。
传入参数传入最后一项。
定义的int型数据sum用于存储总和。
dowhile
int w1dowhile(int n){ int sum = 0 do { sum += n; n--; } while (n > 0); return sum;}
for
int w1for(int n){ int sum = 0; for (; n > 0; n--) { sum += n; } return sum;}
ifgoto
int w1ifgoto(int n){ int sum = 0;A: if (n > 0) { sum += n; n--; goto A; } return sum;}
int w1ifgoto1(int n){ int sum = 0;A: sum += n; n--; if (n > 0) { goto A; } return sum;}
函数递归
int w1xhdg(int n){ if (n == 1) { return 1; } else { return n + xhdg(n - 1); }}
2.用指针循环扫描打印字符串常量
用指针循环扫描的方式打印字符串常量。
while
void w2while(char *p){ while (*p) { printf("%c,%x\n", *p, p); p++; }}
dowhile
void w2dowhile(char *p){ do { printf("%c,%x\n", *p, p); p++; } while (*p);}
for
void w2for(char *p){ for (; *p; p++) { printf("%c,%x\n", *p, p); }}
ifgoto
void w2ifgoto(char *p){ A:if (*p) { printf("%c,%x\n", *p, p); p++; goto A; }}
函数递归
void w2hsdg(char *p){ if (*p == '\0') { return; } else { printf("%c,%x\n", *p, p); w2hsdg(++p); return; }}
- c/c++学习笔记:五大循环
- C语言中的三大循环
- c语言学习笔记五
- C/C++学习笔记(五)
- Objective C学习笔记(五)
- 《C语言宝典》学习笔记(五):变量
- ASP.Net 3.5学习笔记(C#)五
- 《C和指针》学习笔记(五)
- C++学习笔记(Thinking in C++)五
- 《C++Primer Plus》学习笔记(五)
- Object-C 学习笔记(五)---构造方法
- [C++]C++学习笔记(五)
- C语言学习笔记(五)指针
- C语言程序学习(五)笔记
- 《Effective C++》学习笔记(五)
- C++|C++学习笔记|五、类
- C语言学习笔记(五)
- 《effective c++》学习笔记(五)
- 概述面向对象--借鉴于知乎
- Java集合框架:WeakHashMap
- 动态内存分配
- DNS和CDN的区别与联系
- 欢迎使用CSDN-markdown编辑器
- c/c++学习笔记:五大循环
- php 程序执行时间和使用内存
- objectC 关于资源路径 沙盒路径
- C语言实现单链表-面试题(基础篇)
- 数据的去重查询
- webshere服务器启动和停止
- iSCSI技术
- memcached telnet命令
- Redis 入门详解