目录
第六章 C控制语句:循环
while循环
1.基本结构
while (expression)
statement
2.循环体可以是空语句
跳过所有整数输入,直到输入一个非整数
while (scanf("%d", &num) == 1)
; /* 跳过整数输入 */
3.C中可以使用_Bool
类型表示布尔型
不确定循环与计数循环
根据预先直到需要执行多少次循环可以分为计数循环和不确定循环
1.计数循环
- 必须初始化计数器
- 计数器与有效的值作比较
- 每次循环时递增计数器
for循环
while计数循环常常需要在循环体外初始化计数器,这常常容易导致错误,因此更佳的方案是使用for循环
1.格式
for
循环将初始化、测试和更新三个步骤组合到一起,格式如下:
for (n = 0; n < 10; n++)
statement;
2.在for循环中使用逗号
逗号可以使得
for
循环更佳灵活
#include<stdio.h>
int main(void)
{
const int FIRST_OZ = 46;
const int NEXT_OZ = 20;
int ounces, cost;
printf("ounces cost \n");
for(ounces = 1, cost = FIRST_OZ; ounces <= 16; ounces++, cost += NEXT_OZ)
{
printf("%5d $%4.2f\n", ounces, cost / 100.0);
}
return 0;
}
输出结果:
ounces cost
1 $0.46
2 $0.66
3 $0.86
4 $1.06
5 $1.26
6 $1.46
7 $1.66
8 $1.86
9 $2.06
10 $2.26
11 $2.46
12 $2.66
13 $2.86
14 $3.06
15 $3.26
16 $3.46
do while出口循环
while
和for
循环都是入口条件循环,而do while
循环是出口条件循环,即在循环的每次迭代之后检查测试条件,这会保证至少执行循环体中的内容一次。
do
statement
while (expression)
嵌套循环
1.用于按行和按列显示数据
#include<stdio.h>
#define ROWS 6
#define CHARS 10
int main(void)
{
int row;
char ch;
for (row = 0; row < ROWS; row++) /* 输出ROWS行 */
{
for (ch = 'A'; ch < ('A' + CHARS); ch++)
{
printf("%c", ch); /* 每一行输出CHARS个字符 */
}
printf("\n");
}
}
输出:
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
2.利用外层循环遍历控制内层循环
#include<stdio.h>
int main(void)
{
const int ROWS = 6;
const int CHARS = 6;
int row;
char ch;
for (row = 0; row < ROWS; row++) /* 输出ROWS行 */
{
for (ch = ('A' + row); ch < ('A' + CHARS); ch++)
{
printf("%c", ch); /* 每一行输出CHARS个字符 */
}
printf("\n");
}
}
输出:
ABCDEF
BCDEF
CDEF
DEF
EF
F
数组简介
数组是按顺序存储的一系列类型相同的值
1.数组声明
float debts[20];
上述声明表示debts
是包含20个float
类型元素的数组
2.数组赋值
debts[5] = 88.32
注意c语言并不会去检查数组的下表是否正确,如果越界的话会导致数据被放在已被其他数据占用的地方,会破坏程序结果甚至导致程序运行出错
3.字符数组与字符串
char类型的数组末尾如果包含一个包含字符串结尾的
\0
,则数组内容构成了一个字符串
image.png
。