上一页 下一页

C 语言编程基础

分支与循环

在 C 语言中,if 语句和 while 循环都依赖于布尔表达式的概念。下面是一个简单的 C 语言程序,演示了 if 语句:

#include int main() { int b; printf("Enter a value:"); scanf("%d", &b); if (b < 0) printf("The value is negativen"); return 0; }

广告

这个程序接受用户输入的一个数字。然后它使用 if 语句测试该数字是否小于 0。如果小于 0,程序会打印一条消息。否则,程序不输出任何内容。程序中的 (b < 0) 部分就是布尔表达式。C 语言会评估这个表达式来决定是否打印消息。如果布尔表达式评估结果为,那么 C 语言会执行 if 语句紧随其后的单行代码(或紧随 if 语句后的花括号内的代码块)。如果布尔表达式为,那么 C 语言会跳过 if 语句紧随其后的单行或代码块。

这是一个稍微复杂一点的例子

#include <stdio.h>

int main()
{
    int b;
    printf("Enter a value:");
    scanf("%d", &b);
    if (b < 0)
        printf("The value is negative\n");
    return 0;
}

在这个例子中,else ifelse 部分也对零和正值进行评估。

这是一个更复杂的布尔表达式

if ((x==y) && (j>k))
    z=1;
else
    q=10;

这个语句表示:“如果变量 x 中的值等于变量 y 中的值,并且变量 j 中的值大于变量 k 中的值,则将变量 z 设置为 1,否则将变量 q 设置为 10。”你将在 C 语言程序中频繁使用这样的 if 语句来做出决策。通常,你做出的大多数决策都将像第一个例子那样简单;但偶尔,事情会变得更加复杂。

请注意,C 语言使用 ==测试相等性,而使用 =赋值给变量。C 语言中的 && 代表布尔与运算

以下是 C 语言中所有的布尔运算符

  equality          ==
  less than         <
  Greater than      >
  <=                <=
  >=                >=
  inequality        !=
  and               &&
  or                ||
  not               !

你会发现 while 语句和 if 语句一样容易使用。例如:

while (a < b)
{
    printf("%d\n", a);
    a = a + 1;
}

这会使得花括号内的两行代码重复执行,直到 a 大于或等于 b。while 语句的通常工作方式如右图所示。

C 语言也提供了 do-while 结构

#include <stdio.h>

int main()
{
    int a;

    printf("Enter a number:");
    scanf("%d", &a);
    if (a)
    {
        printf("The value is True\n");
    }
    return 0;
}

C 语言中的 for 循环只是表达 while 语句的一种简写方式。例如,假设你在 C 语言中有以下代码:

x=1;
while (x<10)
{
    blah blah blah
    x++; /* x++ is the same as saying x=x+1 */
}

你可以将其转换为 for 循环,如下所示:

for(x=1; x<10; x++)
{
    blah blah blah
}

请注意,while 循环包含一个初始化步骤 (x=1)、一个测试步骤 (x<10) 和一个增量步骤 (x++)。for 循环允许你将这三个部分放在一行上,但你可以在这三个部分中放置任何内容。例如,假设你有以下循环:

a=1;
b=6;
while (a < b)
{
    a++;
    printf("%d\n",a);
}

你也可以将其放入 for 语句中:

for (a=1,b=6; a < b; a++,printf("%d\n",a));

这有点令人困惑,但它是可行的。逗号运算符允许你在 for 循环的初始化和增量部分(但不在测试部分)中分隔多个不同的语句。许多 C 程序员喜欢将大量信息打包到一行 C 代码中;但许多人认为这会使代码更难理解,所以他们会将其拆分。