// talkback.c 个能为您提供一些信息的对话程序
#include <stdio.h>
#include <string.h> // 提供 strlen ()函数的原型
#define DENSITY 62.4 //人的密度(单位是:英镑/每立方英尺)
int main(void)
{
float weight,volume;int size,letters;
char name[40]; // name是一个有40个字符的数组
printf("Hi! What’s your first name?\n");scanf("%s",name);printf ("%s,what’s your weight in pounds?\n", name);scanf("%f",&weight);size=sizeof name;letters=strlen(name);volume=weight/DENSITY;
printf ("Well. %s, your volume is %2.2f cubic feet.\n", name, volume);printf ("Also, your first name has %d letters* \n", letters);printf ("and we have %d bytes to store it in.\n", size);//
printf ("//\n");
printf ("Hello* %s. %s\n", name, PRAISE);
printf ("Your name of %d letters occupies %d memory cells.\n", strlen (name), sizeof name);
printf ("The phrase of praise has %d letters", strlen (PRAISE));
printf ("and occupies %d memory cells.\n", sizeof PRAISE);
return 0;
}
该程序主要的新特性如下:
*它使用一个数组(array)来存放一个字符串。这里,某人的名字被读进这个数组中。该数组是内 存中一串连续的40个字节,其中每个字节都可存放一个字符值。
* 它使用%s转换说明符(conversion specification)来处理字符串的输入和输出。请注意,在scanf () 中,weight使用了&前缀,而name却没有使用。
•它使用C预处理器定义了代表值62.4的符号常量DENSITY。
•它使用C函数strlen ()来获取字符串的长度。
C的输入/输出方法与BASIC相比可能有点复杂。不过,正是这种复杂性使您可以更好地控制输入和 输出,并使您的程序更有效率。
程序输入名字:Morgan Buttercup
根据sizeof运算符的报告,数组name有40个内存单元。不过只用了其中前6个单元 来存放Morgan,这是strlen ()所报告的。数组name的第7个单元中放置空字符,它的存在告诉strlen()在哪里停止计数。