今天,学习了C Primer Plus的第四章。本章讲解了一些简单的C预处理器的知识,一些字符、字符串以及数组等相关概念以及输入输出函数的使用。
现将知识点总结如下:
字符串:一个或多个字符的序列(双引号不是字符串的一部分)
空字符(\0):标记字符串的结束 C中,一定以空字符结束,存储单元比储存的字符多一个
数组:同类型数据元素的有序序列
%s转换说明,scanf()只会读取字符串中的一个单词,而不是一整句
比较字符串常量“x”和字符常量‘x’:‘x’是基本类型(char);“x”是派生类型(char数组),实际由两个字符组成:‘x’和\0
strlen()函数:给出字符串中的字符长度(不计算空字符)
sizeof和strlen()的转换说明:%zd
#include 提供strlen()函数等多个与字符串相关的函数原型
预处理器定义常量:#define NAME value (用该方式定义的常量称为明示常量;通常用大写字母表示符号常量;在名称前带c_或k_前缀来表示常量)
编译时替换:编译程序时,所有的NAME都被替换为value
%n.mf的打印格式:n表示字符宽度,m表示小数点后的位数
#define 指令还可定义字符和字符串常量
const限定符:限定一个变量为只读
转换说明:指定如何把数据转换(翻译)成可显示的形式(p81)(把以二进制格式储存在计算机中的值转换成一系列字符以便于显示)
printf()函数的格式:printf(格式字符串,待打印项1,待打印项2,......);
格式字符串包括实际要打印的字符以及转换说明
在%和转换字符之间插入修饰符可修饰基本的转换说明(printf()的修饰符 p83 scanf()的修饰符 p93)
返回值:函数计算并返回给主调程序的值
printf()函数也有 一个返回值,它返回打印字符的个数(包括空格和不可见的换行符\n)
用反斜杠(\)和Enter(或Return)键组合来断行。这使得光标移植下一行,而且字符串中不会包含换行符
scanf()中的格式字符串表明字符输入流的目标数据类型
scanf()读取基本变量类型的值,在变量名前加一个&;把字符串读入字符数组中,不使用&
当scanf()把字符串放进指定数组中时,它会在字符序列的末尾加上‘\0’,让数组中的内容成为一个C字符串
scanf()函数返回成功读取的项数
printf()函数中的*修饰符代替字段宽度,scanf()函数中的*修饰符会使scanf()跳过相应的输出项
空白:包括空格、制表符和换行符。C语言使用空白分隔记号。scanf()使用空白分隔连续的输入项
练习:
假设一个程序的开头是这样:
#define BOOK "War and Peace"
int main (void)
{
float cost =12.99;
float percent = 80.0;
请构造一个使用BOOK、cost 和percent的printf()语句,打印以下内容:
This copy of "War and Peace" sells for $12. 99.
That is 80% of list.
代码:
#define _CRT_SECURE_NO_WARNINGS
#define BOOK "War and Peace"
#include
#include
int main(){
float cost = 12.99;
float percent = 80.0;
printf("This copy of \"BOOK\" sells for %.2f\n", cost);
printf("That is %.0f%% of list", percent);
system("pause");
return 0;
}
运行结果:

2533

被折叠的 条评论
为什么被折叠?



