2019-02-12 16:05:42
p72-p101
1 //talkback.c--演示与用户交互 2 #include <stdio.h> 3 #include <string.h> //提供strlen()函数的原型 4 #define DENSITY 62.4//用C预处理器定义字符常量——人体密度 5 6 int main() 7 { 8 int size,letters; 9 float weight,volume; 10 char name[40];//用数组储存字符串 11 12 printf("Hi! What's your first name? "); 13 scanf("%s",name); //用%s转换说明来处理字符串的输入和输出 14 printf("%s,what's your weight in pounds? ",name);//name无&前缀,name和&weight都是地址 15 scanf("%f",&weight); 16 17 //对象大小,计算体积 18 size=sizeof name; 19 volume=weight/DENSITY; 20 letters=strlen(name); 21 printf("Hi!%s,your volume is %f cubic feet. ",name,volume); 22 printf("Also,your first name has %d letters ",letters); 23 printf("and we have %d bytes to store it. ",size); 24 25 return 0; 26 }
1、一般而言,C把函数库中相关的函数归为一类,并为每类函数提供一个头文件。
ex,printf ( )和scanf ( ) 都隶属标准输入和输出函数,使用stdio.h 头文件。string.h头文件包含了strlen ( )函数和其他一些与字符串相关的函数(如拷贝字符串的函数和字符串查找函数)
2、char 类型数组——C语言没有专门用来储存字符串的变量类型,字符串都被储存在char类型的数组中。即用数组存储字符串。
C语言用 (空字符 null character) 标记字符串的结束,空字符是非打印字符,ASCII码值为0。故数组的容量至少比待存储字符串的字符数多1.
声明一个数组和声明一个变量:
3、用 %s 转换说明来处理字符串的输入和输出 用%d转换说明来处理 int 的输入和输出 用 %f 转换说明来处理 float 的输入和输出
一般而言,根据%s转换说明,scanf ( ) 只会读取字符串中的第一个单词,而非一整句。
4、用strlen ( ) 得到的是字符串中的字符数(包括空格和标点符号)
然而,sizeof运算符给出的数更大,因为他把字符串末尾不可见的空字符也计算在内。
运行结果:
1 Hi! What's your first name? 2 fengxian 3 fengxian,what's your weight in pounds? 4 120 5 Hi!fengxian,your volume is 1.923077 cubic feet. 6 Also,your first name has 8 letters 7 and we have 40 bytes to store it.
又如:
results:
5、CHAP 2 中介绍预处理器如何使用# include 包含其他文件的信息, 预处理器也可用来定义常量。
#define PI 3.14159
大写常量提高程序的可读性 编译程序时完成替换 #define指令还可以定义字符和字符串常量
一言以蔽之:符号常量后面的内容被用来替换符号常量
6、const 限定符:可使用可打印不可更改,比#define 更灵活,CHAP12中讨论。
7、明示常量:符号常量。C头文件limit.h 和float.h 分别提供了与整数类型和浮点类型大小限制相关的详细i信息。
#define INT_MAX +32767 #define INT_MIN -32768
8、printf ( ) 函数是输出函数 ,scanf ( ) 函数是输入函数。工作原理几乎相同,都使用格式字符串和参数列表。
请求printf ( ) 函数打印数据的指令与待打印数据的类型 要 相匹配。
如:打印整数时使用%d,打印字符时使用%c,打印浮点型数据使用%f,打印字符串使用%s——指定了如何把数据转化成可显示的形式
控制输出格式:转换说明修饰符:P83 + printf ( ) 中的标记:P84
转换说明(亦称翻译说明)的意义( 本质理解):把二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。
9、 大部分C函数都有一个返回值,这是函数计算并返回给主调函数的值。printf ( )函数也不例外。
printf 的返回值:返回打印字符的个数。如果有输出错误,返回一个负值。 返回值可以像其他值一样使用:赋给变量、用于计算、作为参数传递。
10、scanf ( )
格式字符串:表明字符输入流的目标数据类型。
参数列表(和printf ( ) 的主要区别):使用指向变量的指针。
--------------------------------------------------------------------------------
11、C语言还有其他的输入函数,如getchar ( ) 和fgets ( ) 更适合处理一些特殊情况——如读取单个字符或包含空格的字符串。
12、scanf ( )函数返回成功读取的项数。
13、使用足够大的固定字段宽度可以让输出整齐美观。(如想把数据打印成列时)