当前位置:嗨网首页>书籍在线阅读

02-示例程序

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.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 prices drop,\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()让程序暂停,等待输入。