一、循环语句
- while语句
- for语句
- do-while语句
for语句的语法结构表示形式:
for(表达式1;表达式2;表达式3){
循环语句块
}
对该语句模块的解释如下:
- 表达式1的含义是初始化循环变量
- 表达式2的含义是判断条件是否满足继续循环的要求
- 表达式3的含义是在循环完成后更新循环变量
例如:在控制台打印 1~20,要求每行5个数字。
#include <stdio.h>
int main() {
for (int i = 1; i <= 20; i = i + 1) {
printf("%d\t", i);
// 嵌套if语句,当一行的数满5个时进行换行
if (i % 5 == 0) {
printf("\n");
}
}
return 0;
}
结果显示:
补充:break语句和continue语句在for语句中的用法与while语句中的用法类似。
do-while语句的语法结构表示形式:
do{
循环语句块
}while(表达式)
do-while语句
虽然do-while语句的用法与前两个相似,但其也有特殊之处。do-while语句的不同之处体现在它执行循环的第一次时不进行条件的判断,在第二次执行时才进行条件判断。
例如:让用户输入考试成绩,如果没有通过,继续进行考试,直到通过为止。
#include <stdio.h>
int main() {
int score = -1;
do {
printf("请输入考试成绩:[0,100]");
scanf("%d", &score);
} while (score < 60);
printf("恭喜您,通过考试!");
return 0;
}
结果显示:
二、getchar函数与putchar函数的用法
getchar( )函数用法:
- 取走stdin缓冲区的字符;若没有,等待从键盘输入(如abc\n);
- 取走第一个 字符的对应的ASCII码,将其他字符对应的ASCII码存进stdin缓冲区中
注:getchar()函数实际上是int getchar(void),它返回的是ASCII码值,所以只要是ASCII码表里有的字符它 都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符
如果想正常输出输入的字符ASCII码值,则可采用以下两种方法:
// 方法一
int main() {
char a, b;
printf("please input char a:\n");
a = getchar();
getchar(); // 取走一个字符,这里是'\n'
printf("please input char b:\n");
b = getchar();
getchar();
printf("%d %d", a, b);
return 0;
}
// 方法二
int main() {
char a, b;
printf("please input char a:\n");
a = getchar();
rewind(stdin); // 清除缓冲区中的所有字符
printf("please input char b:\n");
b = getchar();
rewind(stdin);
printf("%d %d", a, b);
return 0;
}
结果显示:
注:如果输出结果不符这是因为在输入后,键入回车键,在缓冲区中留下了\n字符,该字符被getchar()函数读取。
putchar( )函数用法:
- 在控制台输出一个字符(用单引号引起来),如:putchar('a')
- 函数体也可以是1~127的一个十进制整型,用来输出对应的ASCII码,如:putchar(99)