3.1 示例程序 – 第3章 数据和C – C Prime Plus(第6版)

本章介绍以下内容:

关 键 字 : int 、 short 、 long 、 unsigned 、 char 、 float 、 double 、_Bool、_Complex、_Imaginary

运算符:sizeof()

函数:scanf()

整数类型和浮点数类型的区别

如何书写整型和浮点型常数,如何声明这些类型的变量

如何使用printf()和scanf()函数读写不同类型的值程序离不开数据。把数字、字母和文字输入计算机,就是希望它利用这些数据完成某些任务。例如,需要计算一份利息或显示一份葡萄酒商的排序列表。本章除了介绍如何读取数据外,还将教会读者如何操控数据。

C 语言提供两大系列的多种数据类型。本章详细介绍两大数据类型:整数类型和浮点数类型,讲解这些数据类型是什么、如何声明它们、如何以及何时使用它们。除此之外,还将介绍常量和变量的区别。读者很快就能看到第1个交互式程序。

本章仍从一个简单的程序开始。如果发现有不熟悉的内容,别担心,我们稍后会详细解释。该程序的意图比较明了,请试着编译并运行程序清单3.1中的源代码。为了节省时间,在输入源代码时可省略注释。

程序清单3.1 platinum.c程序

/* platinum.c -- your weight in platinum */
#include <stdio.h>
int main(void)
{
   float weight; /* 你的体重 */
   float value; /* 相等重量的白金价值 */
   printf("Are you worth your weight in platinum?\n");
   printf("Let's check it out.\n");
   printf("Please enter your weight in pounds: ");
/* 获取用户的输入 */
   scanf("%f", &weight);
/* 假设白金的价格是每盎司$1700 */
/* 14.5833用于把英镑常衡盎司转换为金衡盎司[1]*/
   value = 1700.0 * weight * 14.5833;
   printf("Your weight in platinum is worth $%.2f.\n",value);
   printf("You are easily worth that! If platinum pricesdrop,\n");
   printf("eat more to maintain your value.\n");
return 0;
}

提示 错误与警告

如果输入程序时打错(如,漏了一个分号),编译器会报告语法错误消息。然而,即使输入正确无误,编译器也可能给出一些警告,如“警告:从double类型转换成float类型可能会丢失数据”。错误消息表明程序中有错,不能进行编译。而警告则表明,尽管编写的代码有效,但可能不是程序员想要的。警告并不终止编译。特殊的警告与C如何处理1700.0这样的值有关。本例不必理会这个问题,本章稍后会进一步说明。

输入该程序时,可以把1700.0改成贵金属白金当前的市价,但是不要改动14.5833,该数是1英镑的金衡盎司数(金衡盎司用于衡量贵金属,而英镑常衡盎司用于衡量人的体重)。

注意,“enter your weight”的意思是输入你的体重,然后按下Enter或Return键(不要键入体重后就一直等着)。按下Enter键是告知计算机,你已完成输入数据。该程序需要你输入一个数字(如,155),而不是单词(如,too much)。如果输入字母而不是数字,会导致程序出问题。这个问题要用if语句来解决(详见第7章),因此请先输入数字。下面是程序的输出示例:

Are you worth your weight in platinum?

Let’s check it out.

Please enter your weight in pounds: 156

Your weight in platinum is worth $3867491.25.

You are easily worth that! If platinum prices drop,

eat more to maintain your value.

程序调整

即使用第2章介绍的方法,在程序中添加下面一行代码:

getchar();

程序的输出是否依旧在屏幕上一闪而过?本例,需要调用两次

getchar()函数:

getchar();

getchar();

getchar()函数读取下一个输入字符,因此程序会等待用户输入。在这种情况下,键入 156 并按下Enter(或Return)键(发送一个换行符),然后scanf()读取键入的数字,第1个getchar()读取换行符,第2个getchar()让程序暂停,等待输入。

3.1.1 程序中的新元素

程序清单3.1中包含C语言的一些新元素。

注意,代码中使用了一种新的变量声明。前面的例子中只使用了整数类型的变量(int),但是本例使用了浮点数类型(float)的变量,以便处理更大范围的数据。float 类型可以储存带小数的数字。

程序中演示了常量的几种新写法。现在可以使用带小数点的数了。

为了打印新类型的变量,在printf()中使用%f来处理浮点值。%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位。scanf()函数用于读取键盘的输入。%f说明scanf()要读取用户从键盘输入的浮点数,&weight告诉 scanf()把输入的值赋给名为 weight 的变量。scanf()函数使用&符号表明找到 weight变量的地点。下一章将详细讨论&。就目前而言,请按照这样写。

也许本程序最突出的新特点是它的交互性。计算机向用户询问信息,然后用户输入数字。与非交互式程序相比,交互式程序用起来更有趣。更重要的是,交互式使得程序更加灵活。例如,示例程序可以使用任何合理的体重,而不只是 156磅。不必重写程序,就可以根据不同体重进行计算。scanf()和printf()函数用于实现这种交互。scanf()函数读取用户从键盘输入的数据,并把数据传递给程序;printf()函数读取程序中的数据,并把数据显示在屏幕上。把两个函数结合起来,就可以建立人机双向通信(见图 3.1),这让使用计算机更加饶有趣味。

图3.1 程序中的scanf()和printf()函数
图3.1 程序中的scanf()和printf()函数

本章着重解释上述新特性中的前两项:各种数据类型的变量和常量。第4章将介绍后3项。


本人于2023年2月2日23:32:56学习完以上内容,特于此记录并分享。

© 版权声明
THE END
喜欢就点赞支持一下吧,如果觉得不错或日后有所需要,可以收藏文章和关注作者哦。
点赞4打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容