C语言学习日记四
C控制语句:循环
一、while语句
while循环的通用形式如下:
while( expression )
statement
- statement 部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
- 如果expression 为真(非0),那么执行statement部分一次,然后再判断expression。在expression为假(0)之前,循环的判断和执行一直重复下去,每一次循环都被称为迭代。
- 在C语言中,单独的分号表示空语句。例如
while(scanf("%d",&num)==1) ;//跳过整数输入。
二、用关系运算符和表达式比较
- 关系运算符:<(小于)、<=(小于或等于)、==(等于)、>=(大于或等于)、>(大于)、!=(不等于)。
- 可以使用关系运算符来比较浮点数,但在比较浮点数时,尽量只使用<和>。因为浮点数的舍入误差会导致在逻辑上相等的数却不相等。
- 所有的非零值都被视为真,只有0才是假。
- 关系表达式为真,求值为1;关系表达式为假,求值为0。例如1= 3>1;
- 关系运算符的优先级比算术运算符的优先级低,但是比赋值运算符的优先级高。
三、for循环
示例
// sweetie2.c -- 使用for循环的计算循环
#include <stdio.h>
int main(void)
{
const int NUMBER = 22;
int count;
for (count = 1; count <= NUMBER; count++)
printf("Be my Valentine!\n");
return 0;
}
- for后面的圆括号中有3个表达式,分别使用分号隔开。第一个表达式是初始化,只会在for循环开始时执行一次。第二个表达式是测试条件,在执行循环之前对表达式进行求值,若为假,则循环结束。第三个表达式执行更新,每次循环后求值。
- 可以省略一个或多个表达式,但是不能省略分号,只要在循环中包含能够结束循环的语句即可。例如for(;n<2;n++)。省略第二个表达式被视为真,如:for (; ; ) {statement} 其中statement会一直执行下去。
- 第一个表达式不一定是给变量赋初值,也可以使用printf()。记住,在执行循环的其他部分之前,只对第一个表达式求值一次或执行一次。例如
/* for_show.c */
#include <stdio.h>
int main(void)
{
int num = 0;
for (printf("Keep entering numbers!\n"); num != 6; )
scanf("%d", &num);
printf("That's the one I want!\n");
return 0;
}
该程序打印第一行的句子一次,在用户输入6之前不断接受数字。
- 循环体中的行为可以改变循环头中的表达式。
四、其他赋值运算符:+=、-=、*=、=、%=
- 它们的优先级与=相同
- scores += 20 等同于 scores = scores +20。 依次类推。
五、逗号运算符
- 逗号运算符常用于for循环中。
- 它保证了被它分隔的表达式从左往右求值。
- 整个逗号表达式的值是右侧项的值。例如 sum = 20,30;等同于sum = 20;30;
六、出口条件循环: do while
-
它保证了至少执行循环体中的内容一次。
-
通用形式为
do
statement
while ( expression );
值得注意的是do while 循环以分号结尾。
七、嵌套循环
- 嵌套循环是指在一个循环内包含另一个循环。
- 有内层循环和外层循环之分。嵌套循环中内层循环在每次外层循环迭代时都执行完所有的循环
- 可以通过外层循环控制内层循环,在每次外层循环迭代时内层循环完成不同的任务。例如
// rows2.c -- using dependent nested loops
#include <stdio.h>
int main(void)
{
const int ROWS = 6;
const int CHARS = 6;
int row;
char ch;
for (row = 0; row < ROWS; row++)
{
for (ch = ('A' + row); ch < ('A' + CHARS); ch++)
printf("%c", ch);
printf("\n");
}
return 0;
}
八、数组简介
- 数组是按顺序存储的一系列类型相同的值,可以通过整数下标访问数组中单独的项或元素,例如
char name[20];
- 数组下标是从0开始的。
- 数组的类型可以是任意类型数据。
九、一些补充
- 编程时最好把main()放在所有函数定义的前面。
- 一般把其他函数放在其他文件中,所以必须要有前置声明。
- 如果在含有main()的程序中定义了函数,在main()函数之前不同前置声明,如果在main()函数之后,则需要前置声明。
- 在定义函数时要确定函数的返回类型,并使用 关键字return表明待返回的值。
- return 2*x+2;这时return会计算表达式的值。