C语言的分支和循环控制结构
在编程中,经常会遇到需要基于特定条件选择不同操作,或者重复执行相同操作的情况。C语言提供了多种分支和循环控制结构来满足这些需求。本文将简要介绍C语言中常用的几种控制结构。
1. 分支控制结构
1.1. if 语句
最基本的分支结构是if
语句。其基本格式为:
if (条件表达式)
{
// 如果条件为真,则执行此代码
}
1.2. if-else 语句
当你希望在条件为真时执行某些代码,而在条件为假时执行另一些代码时,可以使用if-else
:
if (条件表达式)
{
// 如果条件为真,则执行此代码
}
else
{
// 如果条件为假,则执行此代码
}
1.3. switch-case 语句
用于多重选择的情况。其基本格式为:
switch (表达式)
{
case 值1:
// 当表达式的值为值1时执行
break;
case 值2:
// 当表达式的值为值2时执行
break;
// 可以有更多的case
default:
// 如果没有一个case匹配,则执行此代码
}
2. 循环控制结构
2.1. for 循环
适用于你知道循环次数的情况:
for (初始化; 条件表达式; 步进)
{
// 循环体
}
2.2. while 循环
适用于你不确定循环次数,但知道循环结束的条件:
while (条件表达式)
{
// 循环体
}
2.3. do-while 循环
与while
循环类似,但至少执行一次循环体:
do
{
// 循环体
} while (条件表达式);
理解并掌握C语言中的基本分支和循环结构是每一个程序员的必经之路。不仅仅是为了编写程序,更多的是培养一种逻辑思维和问题解决的能力。当我们深入探索这些基础结构并尝试将它们应用于实际问题时,我们会发现,它们的组合和变形能够产生无穷无尽的可能性。不断地练习、实践和思考,将使你更加熟练地运用这些工具,并为你打开编程的大门。
简单的筛选算法例子 - 筛选质数
筛选质数 是一个经常被用作演示循环和分支结构的典型例子。以下是使用埃拉托斯特尼筛法的简单实现:
#include <stdio.h>
#include <stdbool.h>
#define N 100 // 我们将筛选小于100的质数
int main() {
bool isPrime[N]; // 布尔数组,表示每个数是否为质数
for (int i = 0; i < N; i++) {
isPrime[i] = true; // 初始认为所有数都是质数
}
isPrime[0] = isPrime[1] = false; // 0和1不是质数
for (int i = 2; i * i < N; i++) {
if (isPrime[i]) {
for (int j = i * i; j < N; j += i) {
isPrime[j] = false; // 标记i的倍数不是质数
}
}
}
printf("小于%d的质数有:\n", N);
for (int i = 2; i < N; i++) {
if (isPrime[i]) {
printf("%d ", i);
}
}
return 0;
}