C 语言读入输入

目录汇总:C 语言入门教程:面向萌新小白的零基础入门教程

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

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

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

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

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

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

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

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

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

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

dweight2.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* 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 程序还存在一个问题:如果用户输入的不是数值,程序就会出问题。

(完)

comments powered by Disqus