上一页 下一页

C语言编程基础

循环:一个真实示例

假设您想创建一个程序,打印一个华氏-摄氏度转换表。这可以通过 for 循环或 while 循环轻松实现

#include <stdio.h>

int main()
{
    int a;
    a = 0;
    while (a <= 100)
    {
        printf("%4d degrees F = %4d degrees C\n",
            a, (a - 32) * 5 / 9);
        a = a + 10;
    }
    return 0;
}

如果您运行此程序,它将生成一个从0华氏度开始到100华氏度结束的数值表。输出将如下所示

广告

   0 degrees F =  -17 degrees C
  10 degrees F =  -12 degrees C
  20 degrees F =   -6 degrees C
  30 degrees F =   -1 degrees C
  40 degrees F =    4 degrees C
  50 degrees F =   10 degrees C
  60 degrees F =   15 degrees C
  70 degrees F =   21 degrees C
  80 degrees F =   26 degrees C
  90 degrees F =   32 degrees C
 100 degrees F =   37 degrees C

表格中的值以10度为增量。您可以看到,您可以轻松更改程序生成的表的起始、结束或增量值。

如果您希望您的值更精确,可以改用**浮点**值

#include <stdio.h>

int main()
{
    float a;
    a = 0;
    while (a <= 100)
    {
        printf("%6.2f degrees F = %6.2f degrees C\n",
            a, (a - 32.0) * 5.0 / 9.0);
        a = a + 10;
    }
    return 0;
}

您可以看到,**a** 的声明已更改为浮点型,并且 **%f** 符号替换了 printf 语句中的 **%d** 符号。此外,%f 符号还应用了一些格式:该值将以小数点前六位和小数点后两位进行打印。

现在,假设我们想修改程序,以便将温度 98.6 插入到表格的适当位置。也就是说,我们希望表格每隔 10 度递增,但我们也希望表格包含一行额外的 98.6 华氏度,因为这是人类的正常体温。以下程序可以实现此目标

#include <stdio.h>

int main()
{
    float a;
    a = 0;
    while (a <= 100)
    {
	if (a > 98.6)
        {
            printf("%6.2f degrees F = %6.2f degrees C\n",
                98.6, (98.6 - 32.0) * 5.0 / 9.0);
        }
        printf("%6.2f degrees F = %6.2f degrees C\n",
            a, (a - 32.0) * 5.0 / 9.0);
        a = a + 10;
    }
    return 0;
}

如果结束值为 100,则此程序可以正常工作,但如果您将结束值更改为 200,您会发现该程序有一个**错误**。它打印 98.6 度的行次过多。我们可以通过几种不同的方式来解决这个问题。这里提供一种方法

#include <stdio.h>

int main()
{
    float a, b;
    a = 0;
    b = -1;
    while (a <= 100)
    {
	if ((a > 98.6) && (b < 98.6))
        {
            printf("%6.2f degrees F = %6.2f degrees C\n",
                98.6, (98.6 - 32.0) * 5.0 / 9.0);
        }
        printf("%6.2f degrees F = %6.2f degrees C\n",
            a, (a - 32.0) * 5.0 / 9.0);
        b = a;
        a = a + 10;
    }
    return 0;
}

C 语言要避免的错误

  • 在 if 或 while 语句中,将 `=` 写成 `==`
  • 忘记在 while 循环中增加计数器 - 如果忘记增加计数器,将导致无限循环(循环永不结束)。
  • 不小心在 for 循环或 if 语句末尾加上分号 `;` 导致语句不起作用 - 例如:for (x=1; x<10; x++); printf("%d\n",x); 只会打印一个值,因为 for 语句后的分号充当了 for 循环执行的一行。