C语言的标识符和字符数据字符串数据 优质课件
合集下载
C语言教程课件第九章字符串PPT教学课件

❖ 函数功能: 删去字符串dest的结束标志'\0',将字符串或字符 数组src连同末尾的结束标记一起连接到字符数组 dest尾部,返回连接以后的字符串。
2020/12/10
❖ 函数说明:
src可以是字符数组名、字符串常量或字符指针变量。 dest可以是字符数组名或字符指针变量。若dest是字符指针
变量,要注意给该指针变量赋初值。
2020/12/10
11
❖ 函数应用举例:
例如: static char a[10]="abcdefghi",b[]="happy"; strcpy(a,b);
符数组元素的地址 – printf(“%s”, str_adr) str_adr是地址值,输出时从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个“\0”为止。
2020/12/10
5
调用gets、puts函数
调用时,必须在程序开头处包含头文件“stdio.h”
– gets(str_adr)
函数功能:调用该函数时,要求用户从标准输入设备上 (比如键盘)输入一个字符串,以回车键作为输入结 束标志;然后将接收到的字符依次赋值给数组各个元 素,并自动在字符串末尾加字符串结束标记‘\0’。 函数的返回值为该字符数组的首地址。与形参对应的 实参应该定义为字符数组名。
2020/12/10
3
9.2 指针指向字符串
在定义字符指针变量的同时
– 将存放字符串的存储单元起始地址赋给指针变量 – 将某个字符串的起始地址赋给它
字符型一维数组的首地址 字符型一维数组中某个元素的地址 字符串常量的首地址 – 字符数组和指针存储字符串的区别 例 char s[]=“test1”; char *ps=“test2”; s是地址常量,不可以重新赋值,而ps可以;
2020/12/10
❖ 函数说明:
src可以是字符数组名、字符串常量或字符指针变量。 dest可以是字符数组名或字符指针变量。若dest是字符指针
变量,要注意给该指针变量赋初值。
2020/12/10
11
❖ 函数应用举例:
例如: static char a[10]="abcdefghi",b[]="happy"; strcpy(a,b);
符数组元素的地址 – printf(“%s”, str_adr) str_adr是地址值,输出时从这一地址开始,依次输出存
储单元中的字符,直到遇到第一个“\0”为止。
2020/12/10
5
调用gets、puts函数
调用时,必须在程序开头处包含头文件“stdio.h”
– gets(str_adr)
函数功能:调用该函数时,要求用户从标准输入设备上 (比如键盘)输入一个字符串,以回车键作为输入结 束标志;然后将接收到的字符依次赋值给数组各个元 素,并自动在字符串末尾加字符串结束标记‘\0’。 函数的返回值为该字符数组的首地址。与形参对应的 实参应该定义为字符数组名。
2020/12/10
3
9.2 指针指向字符串
在定义字符指针变量的同时
– 将存放字符串的存储单元起始地址赋给指针变量 – 将某个字符串的起始地址赋给它
字符型一维数组的首地址 字符型一维数组中某个元素的地址 字符串常量的首地址 – 字符数组和指针存储字符串的区别 例 char s[]=“test1”; char *ps=“test2”; s是地址常量,不可以重新赋值,而ps可以;
C语言字符串ppt课件

最新版整理ppt
4
10-1有以下程序
main()
{ char a[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’, ‘g’,‘h’,‘\0’};
int i,j;
i=sizeof(a);
j=strlen(a);
printf(“%d,%d\n”,i,j);
}
程序运行后结果是
最新版整理ppt
(3)字符串的结束标志。在字符串最后一个字符的后 面,系统自动添加一个转义字符‘\0’作为字符串的 结束标志。当人为地在字符串中间插入转义字符‘\0’ 时,例:“a\0bcd”,系统就认为字符串到a为止,长 度为1,不再顾及\0后的字符。
最新版整理ppt
1
(4)字符串常量的存储结构。1个字符串 所占字节数为:字符串长度+1.例如字符串 “abcd”,在内存上5个字节,其字符占4个 字节,字符串结束标志’\0‘占一个字节。 可调用sizeof函数求字符串所占字节数, 如:sizeof(“abcd”).
(5)用gets函数给字符数组输入一行字符串。例如, gets(s1);gets(s2);.输最新入版整的理ppt一串字符用回车结束。10
5.使指针指向字符串
(1)给基类型为char的指针赋字符串的地址, 可通过以下赋初值方式使指针指向字符串常量。
char *sp=“abcd”;把字符串“abcd”的首地 址赋给基类型为char的指针变量。指针sp指向 一个具有5个字节的连续存储区的开头,即指向 字符a所在存储单元。
for (p=s+1;p<s+4;p++)
printf(“%s\n”,p);
} 程序运行结果是
A. ABCD B. A C. B
第二章 C语言基础 C语言课件

字符型数据
字符串常量
用一对双引号括起来的一个字符串;如“hello” C规定:在一个字符串的末尾系统自动加一个字符串结束标志“\0”
在内存中占的字节数=字符个数+1 “hello”在内存中的存储形式是该字符对应的ASCII码值:
104 01 108 108 111 0
h
e
l
l
o \0
“B”
‘B’
根某每通数向重向读变据片新过据存复变取量空内创存类储问量不将间存 建 储型 空 题 的 会会的空 一 空决 间 存 改6存的地间 个 间定 写 储 变储步址的 变 的分 入 空 变值骤直地量地配值间量。。接址就址多时写的结找即要或少,入值果到该给变个将值。导或区它量连值时致者域分名续转,变通最配找的换即量过左一到存为只的变侧片该储二有空量起独空空进执间名点 有 间间 制 行中先位 的 ,。形 “保转置 内 得式 赋留换的 存 到, 值新为存 该二 ”值储, 对编空进原操应号间制来作的。。中数的的地值值 时址的位 被 候然拷的 覆 。后贝数 盖找版量。到。与。存储空间的位数量相同,即写 入值会充满整个存储空间。
的编号。 问题6:如何将值存储到该内存空间? 答:存储空间写入值时,将值转换为二进制形式,二进制数值
位的数量与存储空间的位数量相同,即写入值会充满整个存 储空间。
变量
问题7:如何写入新值? 答:重复问题6的步骤。结果导致变量的空间中保留新值,
原来的值被覆盖。 问题8:变量的值何时会发生改变? 答:向变量的存储空间写入值时,即只有执行“赋值”操作
运算符和表达式
C运算符:算术运算符、关系运算符、逻辑运算符、赋 值运算符等 C表达式:由运算对象(常量、变量、函数)、运算符 和括号组成的式子。 如:算术表达式、赋值表达式、关 系表达式、逻辑表达式、 条件表达式、逗号表达式等。
C语言数据类型ppt课件

21
2.2 常量与变量
(3)整型数据在内存中的存放形式
int x; x=10; 则变量x的值10在内存中的存放形式:
int x;
x=-10; 则变量x的值10在内存中的存放形式:
22
2.2 常量与变量
(4)整型数据的溢出
例2-2 整型数据的溢出问题
#include <stdio.h>
int main()
\r
<
\a
\‘
回车 响铃 单引号
\ddd 3位8进制数代表的字符
转义字符 \t \b \f \\ \“ \xhh
含义 水平制表 退格 换页 反斜线 双引号 2位16进制数代表的字符
12
2.2 常量与变量
如 ‘\101’ -----------‘A’ ‘\012’ -----------’\n’ ‘\376’ -----------’’ ‘\x61’ -----------’a’ ‘\060’ -----------’0’
unsigned short。 ⅲ. 无符号长整型:类型说明符为
unsigned long。
20
2.2 常量与变量
(2)整型变量的定义与使用
例2-1 整型变量的使用
#include <stdio.h> int main() {
int x,y,z; x=10;y=20; z=x+y; printf(“x+y=%d\n”,z); return 0; } 输出结果:x+y=30
说明:数据类型所占字节数随机器硬件不同而不同, 上表以IBM PC机为例。
4
2.2 常量与变量
• 数据是程序的处理对象 • C语言将数据分为常量与变量
2.2 常量与变量
(3)整型数据在内存中的存放形式
int x; x=10; 则变量x的值10在内存中的存放形式:
int x;
x=-10; 则变量x的值10在内存中的存放形式:
22
2.2 常量与变量
(4)整型数据的溢出
例2-2 整型数据的溢出问题
#include <stdio.h>
int main()
\r
<
\a
\‘
回车 响铃 单引号
\ddd 3位8进制数代表的字符
转义字符 \t \b \f \\ \“ \xhh
含义 水平制表 退格 换页 反斜线 双引号 2位16进制数代表的字符
12
2.2 常量与变量
如 ‘\101’ -----------‘A’ ‘\012’ -----------’\n’ ‘\376’ -----------’’ ‘\x61’ -----------’a’ ‘\060’ -----------’0’
unsigned short。 ⅲ. 无符号长整型:类型说明符为
unsigned long。
20
2.2 常量与变量
(2)整型变量的定义与使用
例2-1 整型变量的使用
#include <stdio.h> int main() {
int x,y,z; x=10;y=20; z=x+y; printf(“x+y=%d\n”,z); return 0; } 输出结果:x+y=30
说明:数据类型所占字节数随机器硬件不同而不同, 上表以IBM PC机为例。
4
2.2 常量与变量
• 数据是程序的处理对象 • C语言将数据分为常量与变量
标识符变量精品PPT课件

3
• C语言中的字符按照C语言的语法组合起来, 就组成了C语言的语句,这些语句或者语句组 合就是所谓的程序(通俗的就叫“代码”)
• 不在字符集中的字符可以在两个双引号之间 出现(我们称之为字符串),例如“@” 。
4
2.1.2 标识符
❖定义:用来标识变量、常量、函数等的字符序 列。
❖ 通俗地说,标识符就是一个名字。
任何一个标识符必须符合下列语法规则:
(1) 字母或下划线中的任一字符打头。 (2) 在第一个字符后,可以是任意的数字、字
母、下划线组成的序列。长度不超过8个。
5
标识符的分类:
特定字 关关键键字字32(:个保关留键字字:)(由系统定义,不能重作其它定义)
特然定 不又字ecaonu字是称nutotmi保C:关n编u留e具键译字有字deb程exr,e特,ftae序aur一k殊但nl预t 般是含先为fcd在义l登oao小as习的录te写惯标的字标上识母cdfh识o把符oar。ur符b它。关le,们它键它看们cgeools成虽nteost 关键们特if 字表定示。字固所定以int的一意般义用,l户o用n定g户义不的能re标g随is识便te符r使也re不turn
• 分类:
例 符号常量举例(ch2_1.c)
➢ 符号常量:用标识符代表常量
》定义格式: ##ddeeffinienePRI符CE号常30量 常量
》一如般用#大de写fin字m{e a母inP(R) I运CE行结果30:total=300 》是宏定义预处理in命t n令um,,to不ta是l; C语句
基本类型
单精度型 float
实型
双精度型 double
字符类型char
数组
C
数 据
• C语言中的字符按照C语言的语法组合起来, 就组成了C语言的语句,这些语句或者语句组 合就是所谓的程序(通俗的就叫“代码”)
• 不在字符集中的字符可以在两个双引号之间 出现(我们称之为字符串),例如“@” 。
4
2.1.2 标识符
❖定义:用来标识变量、常量、函数等的字符序 列。
❖ 通俗地说,标识符就是一个名字。
任何一个标识符必须符合下列语法规则:
(1) 字母或下划线中的任一字符打头。 (2) 在第一个字符后,可以是任意的数字、字
母、下划线组成的序列。长度不超过8个。
5
标识符的分类:
特定字 关关键键字字32(:个保关留键字字:)(由系统定义,不能重作其它定义)
特然定 不又字ecaonu字是称nutotmi保C:关n编u留e具键译字有字deb程exr,e特,ftae序aur一k殊但nl预t 般是含先为fcd在义l登oao小as习的录te写惯标的字标上识母cdfh识o把符oar。ur符b它。关le,们它键它看们cgeools成虽nteost 关键们特if 字表定示。字固所定以int的一意般义用,l户o用n定g户义不的能re标g随is识便te符r使也re不turn
• 分类:
例 符号常量举例(ch2_1.c)
➢ 符号常量:用标识符代表常量
》定义格式: ##ddeeffinienePRI符CE号常30量 常量
》一如般用#大de写fin字m{e a母inP(R) I运CE行结果30:total=300 》是宏定义预处理in命t n令um,,to不ta是l; C语句
基本类型
单精度型 float
实型
双精度型 double
字符类型char
数组
C
数 据
C语言课件_第三章_数据类型

第三章 数据类型
引言 1、计算机中的数据不单是简单的数字,所有计算机处理的信息,包括文字、 声音、图像等都是以一定的数据形式存储的。数据在内存中保存,存放的情况 由数据类型所决定。
2、数据类型即数据结构,决定了数据在内存中的存储形式。不同类型数据在 内存中所占存储空间的大小不同(同一类型数据在不同字长的计算机中所占存 储空间大小也不同),从而导致不同类型可存放数据的大小范围不同。但不论 何种数据类型,其在内存中都是以补码的形式存在的。 3、C语言提供的数据类型包括基本类型、构造类型、指针类型和空类型等,由 这些数据类型可构造出其它更复杂的数据结构(eg:表、栈、树等)。
C、存储:2个字节(Byte)即16位(bit),补码形式
第三章 数据类型
二、整型数据(描述的数据是整数的一个子集) 2、整型变量(分为基本整型、拓展整型) (1)基本整型 D、运算操作 a、算术运算 +(加法) -(减法) *(乘法) /(除法) %(求余)
运算规则:除了除法外,与数学中相同 eg:1+1=2 1-1=0 1*1=1 5%3=2
注意:由于字符在内存中是以二进制存放的,因此char和int可相互赋值,但必 须在一定范围内(0~255)。 (自学:P50 例3.6 向字符变量赋予整数、P51 例3.7 大小写字母的转换)
eg:char 型与 int 型互相赋值
#include <stdio.h> void main( )
{ int i; char c;
问题:用什么变量来存放字符串?
第三章 数据类型
五、变量与常量的定义 (符号常量和变量必须先定义,后使用) 1、常量(符号常量) 通过宏定义预处理命令来实现。 格式: #define 标识符 常量 例如: #define PRICE 30
引言 1、计算机中的数据不单是简单的数字,所有计算机处理的信息,包括文字、 声音、图像等都是以一定的数据形式存储的。数据在内存中保存,存放的情况 由数据类型所决定。
2、数据类型即数据结构,决定了数据在内存中的存储形式。不同类型数据在 内存中所占存储空间的大小不同(同一类型数据在不同字长的计算机中所占存 储空间大小也不同),从而导致不同类型可存放数据的大小范围不同。但不论 何种数据类型,其在内存中都是以补码的形式存在的。 3、C语言提供的数据类型包括基本类型、构造类型、指针类型和空类型等,由 这些数据类型可构造出其它更复杂的数据结构(eg:表、栈、树等)。
C、存储:2个字节(Byte)即16位(bit),补码形式
第三章 数据类型
二、整型数据(描述的数据是整数的一个子集) 2、整型变量(分为基本整型、拓展整型) (1)基本整型 D、运算操作 a、算术运算 +(加法) -(减法) *(乘法) /(除法) %(求余)
运算规则:除了除法外,与数学中相同 eg:1+1=2 1-1=0 1*1=1 5%3=2
注意:由于字符在内存中是以二进制存放的,因此char和int可相互赋值,但必 须在一定范围内(0~255)。 (自学:P50 例3.6 向字符变量赋予整数、P51 例3.7 大小写字母的转换)
eg:char 型与 int 型互相赋值
#include <stdio.h> void main( )
{ int i; char c;
问题:用什么变量来存放字符串?
第三章 数据类型
五、变量与常量的定义 (符号常量和变量必须先定义,后使用) 1、常量(符号常量) 通过宏定义预处理命令来实现。 格式: #define 标识符 常量 例如: #define PRICE 30
c语言 ppt课件

程序调试和优化
01
02
03
调试技巧
断点、单步执行、变量监 视等。
优化方法
代码优化、算法优化、数 据结构优化等。
性能分析
时间复杂度、空间复杂度 等。
C语言在实际项目中的应用
系统编程
游戏开发
网络编程
嵌入式系统
操作系统内核、驱动程 序等。
游戏引擎、游戏逻辑等 。
网络协议、服务器端编 程等。
智能硬件、物联网等。
05
C语言常见问题和陷阱
内存泄漏和野指针
内存泄漏
当动态分配的内存未被释放时,会导 致内存泄漏。长时间运行程序会导致 可用内存逐渐减少,影响程序性能。
野指针
指针被释放后仍然被使用,或者未初 始化的指针被使用,导致程序行为不 可预测。
数组越界和段错误
数组越界
访问数组时超出其界限,可能导致读取或写入其他内存区域 ,造成数据损坏或程序崩溃。
系统软件
C语言也广泛应用于系统软件 开发,如编译器、数据库管理
系统和网络协议栈等。
02
C语言基础语法
数据类型
数据类型
定义变量时,必须指定其数据类 型,以便编译器了解如何存储和 操作该变量。C语言中的数据类 型包括整型、浮点型、字符型等
。
整型
用于存储整数,包括short、int 、long等类型。
THANKS
指针可以进行加减运算,指向数组元 素的指针可以进行算术运算,以访问 数组中的其他元素。
地址
每个变量在内存中都有一个唯一的地 址,通过地址可以访问变量的值。在 C语言中,地址可以通过取地址符&获 取。
结构体和联合体
01
结构体
结构体是一种自定义数据类型,可以包含多个不同类型的数据成员。通
标识符常量变量.ppt

2. 实型常量(浮点数):有两种表示方法 小数形式:0.123 12.3 .123 123.等。 指数形式:men(mEn) (m为非0实数,n为整数): 表示 m*10n 。 如:123e+2表示123*102 123E-2表示123*10-2
• 注意: (1)e前后必须有数字:e4,2e(错误) (2)e后面必须是整数:2e3.5 (错误)
"how are you.\n"的存储长度为14
5. 符号常量
符号常量是用符号表示的一个常量。通常用 大写字母表示,必须先用#define加以定义。
作为常量的符号必须符合C语言的标识符规 范。
举例符号常量的使用:
#define PRICE 15 /*定义符号PRICE,代表整常量15*/
main() { int number=10,count;
使用标识符应注意:
1)C语言中区分大小写字母,所以Sum、SUM、sum 是不同的标识符。
2)标识符的长度通常默认前面8个字符。例如: student_db与student_data为相同标识符。
3)标识符不能和C语言中的关键字相同,也不能 和已定义的函数名或库函数名相同。
4)C语言中所有的关键字(p220附录2)标准库函 数(P222附录4)不是标识符,且必须使用小 写字母。
count=number*PRICE; printf("count=%d",count); }
▪ 使用符号常量的好处: main() {float area,circle,vol,r;
r=1.0; area=3.14 *r*r; circle=2* 3.14 *r; vol= 3.14 *……; …… }若要将3.14改为3.1415926,则该程序需要处处修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在程序1_1L2.C 的printf语句里面的字符串末尾都有一个\n(反斜杠 和n)这种用反斜杠开头后跟一个或多个字符组成的复合字符, 在C语言中称为转义字符(即在一些普通字符前加一个反斜杠, 使普通字符的含意转变了)。如转义字符\n表示换行(实际执行 时变成回车并换行),\r表示回车但不换行。转义字符大都表示 操作动作的控制字符。见第一章附录二。
数量 5
2 6 3 _9
第一章 表-1 C语言字符集的符号部分
1·2·3 C语言程序打印字符图案
下面我们看看如何用printf()函数,向屏幕输出字符以及字符组成的 图案。
例1_1_3解法1 打印如右平面图形: * * * * * * * *
分析:这个图形,是由四行字符串
*
*
组成的,显然可以每行用一个printf() *
1·2·2 C语言的字符集、标识符
由英文字母、数码、规定的一些符号(见下表-1)组 成的字符集合,称为C语言的字符集。
由C语言字符集里的字符组成的,在程序中使用 的,标识(表达)某种意思的短语、缩略语、词汇, 这种标识编程者思想的符号,在C语言中称为标识符。 在C语言里,规定了任何一个标识符都要先定义再使
printf("%s\n","* * * * * * * *"); }
格式声明符
第一个printf()是直接打印字符串常量,字符串常 量和转义字符是printf()函数可以直接打印的数据。 第四个printf()是以字符串量的格式打印字符串量。 字符串在英文中写成string,取其首字符s,前面 再加一个%,构成printf()的指定输出字符串量的格 式声明符。%s是指定输出字符串量的格式声明符, 那么对于第二、第三行的%c,同学们猜一猜应该 是指定输出什么量的格式声明符?
比如,“12Aca”、“1”、“a”……都叫做字符串。在C语言中大写的英 文字母与小写的英文字母被规定为不同的字符。而且,字符是指 单个的、用英文单引号括起来的。如‘a’、‘A’、‘2’等等。这里有 必要注意:“a”与‘a’是两种不同类型的数据,前一个称为字符 串;后一个称为普通字符(也简称为字符)。也可以这样认为: 仅仅是用双引号括起来的就是字符串、用单引号括起来的就是普 通字符;这是两种不同的数据。用单引号是不能括起多于一个字 符的!
printf()使用格式声明符输出指定的 量时,括号里面的规律是什么?
用双引号把格式声明符包括起来, 如果后面的 输出量打印完后,希望下一个量在另一行打印, 则在双引号里的字符串最后,也可以写上转义字 符\n。这对双引号的后面,用英文逗号和后面的 输出量隔开,双引号里面一个格式声明符,就对 应后面的一个输出量,它们是一一对应的!如果 后面的输出量有多个,输出量之间,也要用英文 的逗号间隔。
*
函数打印一个字符串来完成,共用四个 * * * * * * * *
printf()函数。
请同学们试一试先编程,然后再与下面老师给出的参考程序对 比有没有漏了什么?
/* 1_1L3_1.C */
#include"stdio.h"
main( )
{
printf("* * * * * * * *\n");
printf("***************************************\n"); printf("* 我们立志成为祖国需要的高技术工人! *\n");
printf("***************************************\n"); } 请学生在机上录入并运行上述程序
现在请同学们想一想:对于字符串量的格式 声明符,会不会也有域宽?
1·2 C语言的标识符和字符数据、字符串数据
本节的任务是掌握用printf()函 数在屏幕的任意位置打印字 符组成的图案。
1·2·1 C语言的字符串数据、字符数据和转义字符
例1_1_2 用printf()输出字符串和转义字符 /* 1_1L2.C */ #include:stdio.h" main() {
printf(“*
*\n”); /*2个*号中间有13个空隔*/
printf(“*
*\n”); /* 同上 */
printf("* * * * * * * *\n");
printf("\n\简单的,特别 是中间两行左右两个字符‘*’相隔很近, 中间的空格只有13个。
如果中间的空格有六、七十个,难道我 们也照打六、七十个空格?怎么办?
可不可以不用照打那么多个空格?(由 学生讨论回答)
例1_1_3解法2
/* 1_1L3_2.C */ #include"stdio.h" main( ) {
printf("* * * * * * * *\n"); printf(“%c%14c\n”,‘*’,‘*’); /*为什么是14C? */ printf("%c%14c\n",'*','*');
用,Turbo C规定标识符定义时要求必须以字母或下 划线开头,后跟字母、数字或下划线,长度最多32个 字符。
符 号 名 称 符号列表
运算符 + - * / % 标点符, . : ; ? “‘ 7
空 白 符 (空格)、制表符
括 号( ) [] { } 关系运算符 < = > 其它符号 $ | # \ & ! ~ ^
域宽
还有一个:%14c表示什么意思?其实这是在格式 声明符中间插入了一个整数,大家可以从程序的 运行结果看到,它使得后面的字符'*'共占据了14 格的宽度,我们称这个14为域宽。%14c表示它对 应的打印字符共占14格的宽度,打印字符本身只 占1格,不够14格那么长,就在它的前面自动加 上13个空格,补到共占14格的宽度。
创新练习
将程序体当中printf里右边双引号前的“\n” 都删掉,再存盘并编译运行。看看前后 两个程序的运行结果有什么不同? 请同学们运行后讨论,并下结论!
字符串、字符、转义字符
这些用英文中的双引号括起来的英文、数码、汉字以及可以由键 盘输入的一切字符,以及它们的混合字符,在C语言中统统称作 字符串,因为它们是用英文双引号串起来的一串字符或数字。
数量 5
2 6 3 _9
第一章 表-1 C语言字符集的符号部分
1·2·3 C语言程序打印字符图案
下面我们看看如何用printf()函数,向屏幕输出字符以及字符组成的 图案。
例1_1_3解法1 打印如右平面图形: * * * * * * * *
分析:这个图形,是由四行字符串
*
*
组成的,显然可以每行用一个printf() *
1·2·2 C语言的字符集、标识符
由英文字母、数码、规定的一些符号(见下表-1)组 成的字符集合,称为C语言的字符集。
由C语言字符集里的字符组成的,在程序中使用 的,标识(表达)某种意思的短语、缩略语、词汇, 这种标识编程者思想的符号,在C语言中称为标识符。 在C语言里,规定了任何一个标识符都要先定义再使
printf("%s\n","* * * * * * * *"); }
格式声明符
第一个printf()是直接打印字符串常量,字符串常 量和转义字符是printf()函数可以直接打印的数据。 第四个printf()是以字符串量的格式打印字符串量。 字符串在英文中写成string,取其首字符s,前面 再加一个%,构成printf()的指定输出字符串量的格 式声明符。%s是指定输出字符串量的格式声明符, 那么对于第二、第三行的%c,同学们猜一猜应该 是指定输出什么量的格式声明符?
比如,“12Aca”、“1”、“a”……都叫做字符串。在C语言中大写的英 文字母与小写的英文字母被规定为不同的字符。而且,字符是指 单个的、用英文单引号括起来的。如‘a’、‘A’、‘2’等等。这里有 必要注意:“a”与‘a’是两种不同类型的数据,前一个称为字符 串;后一个称为普通字符(也简称为字符)。也可以这样认为: 仅仅是用双引号括起来的就是字符串、用单引号括起来的就是普 通字符;这是两种不同的数据。用单引号是不能括起多于一个字 符的!
printf()使用格式声明符输出指定的 量时,括号里面的规律是什么?
用双引号把格式声明符包括起来, 如果后面的 输出量打印完后,希望下一个量在另一行打印, 则在双引号里的字符串最后,也可以写上转义字 符\n。这对双引号的后面,用英文逗号和后面的 输出量隔开,双引号里面一个格式声明符,就对 应后面的一个输出量,它们是一一对应的!如果 后面的输出量有多个,输出量之间,也要用英文 的逗号间隔。
*
函数打印一个字符串来完成,共用四个 * * * * * * * *
printf()函数。
请同学们试一试先编程,然后再与下面老师给出的参考程序对 比有没有漏了什么?
/* 1_1L3_1.C */
#include"stdio.h"
main( )
{
printf("* * * * * * * *\n");
printf("***************************************\n"); printf("* 我们立志成为祖国需要的高技术工人! *\n");
printf("***************************************\n"); } 请学生在机上录入并运行上述程序
现在请同学们想一想:对于字符串量的格式 声明符,会不会也有域宽?
1·2 C语言的标识符和字符数据、字符串数据
本节的任务是掌握用printf()函 数在屏幕的任意位置打印字 符组成的图案。
1·2·1 C语言的字符串数据、字符数据和转义字符
例1_1_2 用printf()输出字符串和转义字符 /* 1_1L2.C */ #include:stdio.h" main() {
printf(“*
*\n”); /*2个*号中间有13个空隔*/
printf(“*
*\n”); /* 同上 */
printf("* * * * * * * *\n");
printf("\n\简单的,特别 是中间两行左右两个字符‘*’相隔很近, 中间的空格只有13个。
如果中间的空格有六、七十个,难道我 们也照打六、七十个空格?怎么办?
可不可以不用照打那么多个空格?(由 学生讨论回答)
例1_1_3解法2
/* 1_1L3_2.C */ #include"stdio.h" main( ) {
printf("* * * * * * * *\n"); printf(“%c%14c\n”,‘*’,‘*’); /*为什么是14C? */ printf("%c%14c\n",'*','*');
用,Turbo C规定标识符定义时要求必须以字母或下 划线开头,后跟字母、数字或下划线,长度最多32个 字符。
符 号 名 称 符号列表
运算符 + - * / % 标点符, . : ; ? “‘ 7
空 白 符 (空格)、制表符
括 号( ) [] { } 关系运算符 < = > 其它符号 $ | # \ & ! ~ ^
域宽
还有一个:%14c表示什么意思?其实这是在格式 声明符中间插入了一个整数,大家可以从程序的 运行结果看到,它使得后面的字符'*'共占据了14 格的宽度,我们称这个14为域宽。%14c表示它对 应的打印字符共占14格的宽度,打印字符本身只 占1格,不够14格那么长,就在它的前面自动加 上13个空格,补到共占14格的宽度。
创新练习
将程序体当中printf里右边双引号前的“\n” 都删掉,再存盘并编译运行。看看前后 两个程序的运行结果有什么不同? 请同学们运行后讨论,并下结论!
字符串、字符、转义字符
这些用英文中的双引号括起来的英文、数码、汉字以及可以由键 盘输入的一切字符,以及它们的混合字符,在C语言中统统称作 字符串,因为它们是用英文双引号串起来的一串字符或数字。