伪代码的概念:

伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应。伪代码有助于设计程序的逻辑。确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码。使用伪代码的好处之一是,可以把注意力集中在程序的组织和逻辑上,不用在设计程序时还要分心如何用编程语言来表达自己的想法

while语句

while 循环的通用形式:

while (expression)

  statement

statement 部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句

expression部分都使用关系表达式。如果 expression 为真(非零),执行 statement 部分一次,然后再次判断 expression。在 expression 为假(0)之前,循环的判断和执行一直重复进行。每一次循环都被称为一次迭代。

while 循环有一点很重要:在构建 while 循环时,必须让测试表达式的值有所变化,表达式最终要为假

while 循环是使用入口条件的有条件循环。满足测试表达式描述的条件才能进入循环体

用关系运算符和表达式比较大小

<       小于

<=     小于等于

==     等于

>       大于

>=     大于等于

!=      不等于

关系运算符还可用于比较字符,比较的是机器字符码(ASCII),不能用关系运算符比较字符串

比较浮点数时,尽量只使用 < 和 >,因为浮点数的四舍五入会导致在逻辑上应该相等的两个数却不相等

真值:

C语言中,所有的非零值都视为真,只有0被视为假

简单的关系表达式由关系运算符及其运算对象组成。如果关系为真,关系表达式的值为1;如果关系为假,关系表达式的值为0

_Bool类型:

在编程中,表示真或假的变量称为布尔变量,_Bool 是 C 语言中布尔变量的类型名

_Bool 类型的变量只能储存1(真)或0(假),如果把其他非零数值赋给_Bool 类型的变量,该变量会被设置为1

优先级和关系运算符:

关系运算符的优先级比算术运算符(包括+和-)低,比赋值运算符高

x > y + 2 和 x > (y + 2)相同;x = y > 2 和 x = (y > 2)相同

x_bigger = x > y 和 x_bigger = (x > y)相同

关系运算符之间有两种不同的优先级:

高优先级组:<<=   >>=

低优先级组:==     !=

ex != wye == zee 和 (ex != wye) == zee相同,首先C判断 ex 和 wye 是否相等,然后用得出的值1或0再与 zee 比较

不确定循环和计数循环:

一些 while 循环是不确定循环。不确定循环就是指在测试表达式为假之前,预先不知道要执行多少次循环

还有一类是计数循环,这类循环在执行循环之前就知道要重复执行多少次

创建一个重复执行固定次数的循环涉及3个行为:

1.必须初始化计数器

2.计数器与有限的值作比较

3.每次循环时递增计数器

for循环

for 循环把上面3个行为组合在一起

for 循环的形式:

for (initialize; test; update)

  statement

initialize 表达式在执行 for 语句之前只执行一次;然后对 test 表达式求值,如果表达式为真,执行循环一次;接着对 update 表达式求值,并再次检查 test 表达式

#include <stdio.h>

int main(void)
{
const int num = 22;
int count; for (count = 1; count <= num; count++)
printf("Hello World!\n"); return 0;
}

运行结果

关键字 for 后面的圆括号中有3个表达式,分别用两个分号隔开

第1个表达式是初始化,只会在 for 循环开始时执行一次;第2个表达式是测试条件,在执行循环前对表达式求值,如果表达式为假,则结束循环;第3个表达式执行更新,在每次循环结束时求值

也可以用字符代替数字计数

可以省略一个或多个表达式,但是不能省略分号,只要在循环中包含能结束循环的语句即可

#include <stdio.h>

int main(void)
{
const int num = 22;
int count; for (count = 1; count <= num; )
{
printf("Hello World!\n");
count++;
} return 0;
}

运行结果

如果忽略第2个表达式会被视为真

第1个表达式不一定是给变量赋初值,也可以是使用printf()。在执行循环的其他部分之前,只对第1个表达式求值一次或执行一次

int main(void)
{
const int num = 22;
int count = 1; for (printf("Hello C\n"); count <= num; count++)
printf("Hello World!\n"); return 0;
}

运行结果

其他赋值运算符:+=、-=、*=、/=、%=

其他赋值运算符都用于更新变量

a += 1  与  a = a + 1 相同
a -= 1 与 a = a - 1 相同
a *= 1 与 a = a * 1 相同
a /= 1 与 a = a / 1 相同
a %= 1 与 a = 1 % 1 相同

逗号运算符:

逗号运算符扩展了 for 循环的灵活性,以便在循环头中包含更多的表达式

逗号表达式保证了被它分隔的表达式从左往右求值,逗号是一个序列点

a = 12,22;
//相当于下面的代码
a = 12;
22;

a = 12 是逗号左侧的子表达式,22 是右侧的子表达式。整个逗号表达式的值是逗号右侧表达式的值,而且左侧的赋值表达式把 12 赋给变量 a

任何表达式后面加上一个分号就成了表达式语句

a = (12,22);

a 的值是逗号右侧子表达式的值,即22

逗号也可用作分隔符

char ch, date;

printf("%d %d\n", a, b);

逗号运算符把两个表达式连接成一个表达式,并保证最左边的表达式最先求值

整个逗号表达式的值是逗号右侧表达式的值

出口循环:do while

while 循环和 for 循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容

C 语言还有出口条件循环,即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次,这种循环被称为 do while 循环

do while 循环的通用形式:

do

  statement

while (expression);

statement 可以是一条简单语句或复合语句,在 expression 为假或0之前,重复执行 statement 部分

do while 循环在执行完循环体后才执行测试条件,所以至少执行循环体一次,do while 循环适用于那些至少要迭代一次的循环

#include <stdio.h>

int main(void)
{
int count = 1; do
{
printf("Current count is %d\n", count);
count++;
}while(count <= 10);
printf("Run End\n"); return 0;
}

运行结果

嵌套循环

嵌套循环指在一个循环里包含另一个循环

#include <stdio.h>
#define ROWS 6
#define CHARS 10 int main(void)
{
int row;
char ch; for (row = 0; row < ROWS; row++) //外层循环
{
for (ch = 'A'; ch < ('A' + CHARS); ch++) //内层循环
printf("%c", ch);
printf("\n");
} return 0;
}

运行结果

最新文章

  1. SharePoint 2010 + 左侧导航(Left Nav Bar)二级菜单的修改
  2. Fort.js – 时尚、现代的表单填写进度提示效果
  3. SQL查询数据的几大方法
  4. Spring Boot的快速启动和部署
  5. cf
  6. Xcode 自定义代码段
  7. ios7新增基础类库以及OC新特性
  8. PhotoShop 移动工具详解
  9. 第十一届GPCT杯大学生程序设计大赛完美闭幕
  10. ZOJ 3734 LIKE vs CANDLE
  11. SQL Server 行版本控制
  12. 内存管理 (C++)
  13. jpa使用过程中出现问题记录[持续更新]
  14. 第七节:利用CancellationTokenSource实现任务取消和利用CancellationToken类检测取消异常。
  15. logstash报错 :backtrace=&gt;[&quot;org/jruby/RubyIO.java:1457:in `write&#39;&quot;, &quot;org/jruby/RubyIO.java:1428:in `write&#39;&quot;
  16. Spring基础系列-Spring事务不生效的问题与循环依赖问题
  17. python3 os模块
  18. 安卓权限申请处理框架Android-UsesPermission
  19. go import 使用方法记录
  20. Oracle12c 性能优化攻略:攻略1-3: 匹配表类型与业务需求

热门文章

  1. spring boot 打包
  2. 如何在myEclipse中创建配置文件,比如:XXX.properties
  3. JavaWeb -- Servlet+JSP+JavaBean(MVC)模式
  4. 不小心把服务器上的/usr/lib下的所有文件删除,恢复办法
  5. codeforces707B:Bakery
  6. Windods7+Anaconda+Tensorflow安装步骤
  7. nginx + tomcat多实例
  8. 关于Javascript没有块级作用域和变量声明提升
  9. rehash过程
  10. &quot;阿拉伯&quot;&quot;伊斯兰&quot;&quot;穆斯林&quot;三个概念怎么分?