购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 读入输入

程序dweight.c并不十分有用,因为它仅可以计算出一个箱子的空间重量。为了改进程序,需要允许用户自行输入箱子的尺寸。

为了获取输入,就要用到 scanf 函数。它是C函数库中与 printf 相对应的函数。 scanf 中的字母 f printf 中的字母 f 含义相同,都表示“格式化”的意思。 scanf 函数和 printf 函数都需要使用 格式串 (format string)来指定输入数据或输出数据的形式。 scanf 函数需要知道将获得的输入数据的格式,而 printf 函数需要知道输出数据的显示格式。

为了读入一个 int 型值,可以使用下面的 scanf 函数调用:

scanf("%d", &i);  /* reads an integer; stores into i */

其中,字符串 "%d" 说明 scanf 读入的是一个整数,而 i 是一个 int 型变量,用来存储 scanf 读入的输入。 & 运算符(➤11.2节)在这里很难解释清楚,因此现在只说明它在使用 scanf 函数时通常是(但不总是)必需的。

读入一个 float 型值时,需要一个形式略有不同的 scanf 调用:

scanf("%f", &x);  /* reads a float value; stores into x */

%f 只用于 float 型变量,因此这里假设 x 是一个 float 型变量。字符串 "%f" 告诉 scanf 函数去寻找一个 float 格式的输入值(此数可以含有小数点,但不是必须含有)。

程序 计算箱子的空间重量(改进版)

下面是计算空间重量程序的一个改进版。在这个改进的程序中,用户可以输入箱子的尺寸。注意,每一个 scanf 函数调用都紧跟在一个 printf 函数调用的后面。这样做可以提示用户何时输入,以及输入什么。

dweight2.c

/* Computes the dimensional weight of a 
   box from input provided by the user */

#include <stdio.h>

int main(void)
{
  int height, length, width, volume, weight;

  printf("Enter height of box: ");
  scanf("%d", &height);
  printf("Enter length of box: ");
  scanf("%d", &length);
  printf("Enter width of box: ");
  scanf("%d", &width);
  volume = height * length * width;
  weight = (volume + 165) / 166;

  printf("Volume (cubic inches): %d\n", volume);
  printf("Dimensional weight (pounds): %d\n", weight);

  return 0;
}

这段程序的输出显示如下(用户的输入用下划线标注):

Enter height of box: 8
Enter length of box: 12
Enter width of box: 10
Volume (cubic inches): 960
Dimensional weight (pounds): 6

提示用户输入的消息(提示符)通常不应该以换行符结束,因为我们希望用户在同一行输入。这样,当用户敲回车键时,光标会自动移动到下一行,因此就不需要程序通过显示换行符来终止当前行了。

dweight2.c程序还存在一个问题:如果用户输入的不是数值,程序就会出问题。3.2节会更详细地讨论这个问题。 X9NBT1g6mQ3omDwDE7sP9DWrLVagXmYiO/C5FapSySPGsxC3WFzFET9R8Sbhb4GT

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开