为了使我们的C语言表达的意思更加多元化,现在来介绍C循环
无论是我们人类的语言还是计算机高级语言,我们都希望能够尽可能地表达我们的意图或想法,让对方理解。计算机也不例外,任何一门计算机高级语言应该提供以下3种形式的控制流:
(1) 执行语句系列; //就是一般的单条表达式语句,笔者前面发的程序大部分都是都是由语句序列组成
(2) 如果满足某种条件就重复执行语句序列(循环);//靠while,do while,for循环实现此功能。为了满足同一块代码多次执行的需求
(3) 通过测试选择执行哪一个语句序列(分支)。//靠循环控制语句来实现此功能。意思就是改变代码的执行顺序,实现代码的跳转(这个知识点将发布在下一篇C语言知识点栏目中)。
好了,现在我们来学习C控制语句:循环
循环类型 |
|
说明 |
while |
入口条件循环 |
while(值满足测试条件) { 处理该值 获取下一个值 } |
for |
for(获得初值; 值满足测试条件; 获得下一个值) 处理该值 |
|
do while |
出口条件循环 |
do{ 处理该值 获取下一个值 }while(值满足测试条件); |
嵌套循环 |
|
同时使用以上的循环类型两次或两次以上 |
为了更好地使用C循环,这里将补充一些知识:
1.关系运算符:
关系运算符 |
含义 |
< |
小于 |
<= |
小于或等于 |
== |
等于 |
>= |
大于或等于 |
> |
大于 |
!= |
不等于 |
注: 这里大家要格外要注意等于的关系运算符的书写为==,由于发现很多编程人员习惯将等于写为=,所以现在的编译器大多数情况可以识别出来这种错误。
但不代表编译器都可以检查出这种错误,所以大家要牢记等号的写法。
2.什么是真:
这里大家要知道在C中表达式和关系表达式一定有一个值,要么为真,要么假。
示例一:
while(scanf(“%d”,&num) == 1)//表达式
如果键入的是数字表达式为真,值为1,否则表达式为假,值为0。
示例二:
True_val = (10> 2);
Flase_val = (10 ==2);
这里的10 > 2 和 10 == 2都是关系表达式,显然第一个表达式正确,第二个为错误,所以其各值为1和0;
因此以后遇到上面两个示例的代码写法就不要感到陌生了。
为了更加完善知识点这里再介绍一下其它真值:
请看下面的例子:
int n = 3;
while(n)//等价于n != 0 拓展一下while(!n)中的!n等价于n == 0
{
Printf(“%d\n”, n);
n--;
}
现在大家应该知道了,只要n为非0值,循环就继续执行。
3.新的_Bool类型:
(1)在C语言中,一直以int类型的变量表示真/假。C99专门针对这种类型的变量新增了_Bool类型。_Bool是C语言布尔变量的类型名,该类型的变量只能存储1(真)或0(假)。因此将非零数值赋给_Bool类型的变量,该变量值为1,否则为0。
(2)C99提供了stdbool.h头文件,该头文件让bool成为_Bool的别名(实际上就是在头文件里定义了:typedef _Bool bool),并将true和false分别定义为1和0的符号常量。
#include
#include
int main()
{
_Bool true_or_false;
true_or_false = 10;
printf("%d %d %d", true, false, true_or_false);
return 0;
}
这里给大家用代码输出了true和false的值,以及_Bool类型的变量的值。
4.赋值运算符和逗号运算符
(1) 赋值运算符: +=, -=, *=, /=, %=
a += 20 等价于 a= a + 20
a -= 20 等价于 a = a – 20
a *= 20 等价于 a = a * 20
a /= 20 等价于 a = a /20
a %= 20 等价于 a = a %20
这里的赋值运算符只是为了书写代码更加简洁!
(2)逗号运算符:
逗号运算符扩展了for循环的灵活性,可以在循环头中包含更多的表达式。
例如:
for(i = 0, j = 10;i < 10; i++, j--)
5. 嵌套循环:
这里举一个两层循环,先看代码:
#include
#define ROWS 6
#define CHARS 10
int main()
{
int row;
char ch;
for(row = 0; row < ROWS;row++)
{
for(ch = 'A'; ch <('A' + CHARS); ch++)
{
printf("%c", ch);
}
printf("\n");
}
return 0;
}
代码解释: 这里的两层循环可以这样理解,循环6次for循环。所以打印了6行A~J。
好了,C循环的知识点大致就这些,如有不足,欢迎留言补充。
前面发布的C语言知识点都没有给大家留下练习题,从这一次开始我都会给大家留练习题,每次的练习题和答案我会分别单独发一篇博客。大家一定要自己先做,实在没思路再看答案。
学C语言一定要多上机实践,只有多练,才会运用和熟练那些知识点。
笔者认为CodeBlocks编译器不错,还可以支持C99。