资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数 据、 字 符,字符型数据 :1.字符常量,P48,C语言中,一个字符常量代表ASCII字符集中的一个字符。 用单引号括起来的一个字符,一个字符只占一个字节。如:a、2、+,都是合法的字符常量。 字符常量中的单引号只起定界作用并不表示字符本身。,P48,转义字符是一种特殊的字符常量 。转义字符以反斜线开头,后跟一个或几个字符。,转义字符中只能使用小写字母,每个转义字符只能看作一个字符,字符型数据 :2.转义字符,P48,用 ddd和 xhh 的形式表示字符集中的任何一个字符。 ddd:表示13位有效的八进制数。 hh: 表示为12位有效的十六进制数。,如:字符常量 ASCII值 字符 101 x53 2 67,65 A 83 S 2 55 7,ddd和 xhh代表一个常量字符,字符型数据 :2.转义字符,字符变量的类型说明:char,字符变量初始化及字符的赋值,char c=g; 或 char c=147 ; 或 char c=x67; 或 char c=103;,char c; c=147 ;,char c; c= x67;,或,或,char c; c=g;,P49,要点:可以将普通字符常量、转义字符或整型数值赋给字符变量。,char c; c= 103;,或,字符变量赋值,普通字符与转义字符赋值时,需加单引号,字符数据在内存中的存储形式,字符常量在内存中是以该字符的ASCII码值存放于存储单元。,97,50,若有定义: char c1=a , c2=2,一个字符数据既可以以字符的形式(%c)输出,又可以以整型数值的形式(%d)的输出。 对字符数据可以进行算术运算。,#include main() char c1,c2= 2; c1=a; c2=c2+2; printf(%c,%dn,c1,c1); printf(%c,%d,c2,c2); ,a,97 4,52,P50,格式:putchar(c); 其中c是变量或字符常量或整型数据。,putchar 字符输出函数,约定:在使用该函数之前,必须在源文件中包含头文件: #include stdio.h或 #include ,字 符 的 输 入 输 出,P73,#include main( ) char a =A, b, c; char c1=1,c2=x61; b=0102; c=0 x43; putchar(a); putchar(b); putchar(c); putchar(n); putchar(m); putchar(70); putchar(t); putchar(c1); putchar(c2); ,C的整型常量常用三种形式: 1.十进制整数。 2.八进制整数。以0开头的整数。 3.十六进制整数。以0 x开头的整数。,友情提醒:字符变量只能接收一个字符,putchar字符输出函数也只能输出一个字符。,要点:可以将字符常量(两种)赋予字符变量,也可以将整型常量(三种)赋予字符变量。,ABC mF a,格式: getchar() 作用:从键盘上接收一个字符;,使用方法:char ch ; ch=getchar(); 从键盘上输入一个字符,并将此字符赋于字符变量ch。 注意:输入后必须按回车键,才接收该字符。,getchar 字符输入函数,约定:在使用该函数之前必须有 #include stdio.h或 #include ,字 符 的 输 入 输 出,P74,例:从键盘输入一串字符(字符串),并将小写字母转化为大写字母。,问题1:大小写字母转换的常用算法; 大写转换为小写: ch=ch+32 或 ch=ch+a-A 等。 反之,小写转换为大写:ch=ch-32 或 ch=ch+A-a等。 问题2:如何利用getchar()实现输入一串字符? 采用循环结构。 问题3:如何判断该字符的类别。,大写字母:c=A while( (c=getchar()!=n ) if(c=a ,#include main() char c; c=getchar(); while( c!=n ) if(c=a ,例:从键盘输入一串字符(字符串),并将小写字母转化为大写字母。,例:从键盘输入一串字符(字符串)以#号结束,并将小写字母转化为大写字母。,#,#,字符常量:用单引号括起来的一个字符。如: a, 等。 字符串常量:用双引号括起来的字符序列。如:“how do yoy do ?”、“a”、“!123” 等等,C规定:字符串都以字符0 结尾。即0 为字符串的结束标志。0的ASCII码值为0 。,注意:a与a是不同的,a在内存只占一个字节,而a在内存中占两个字节。,P52,字符型数据 :字符串常量,在C语言中字符串的存储方式: 以字符串的第一个字符开始连续存储,至字符0结束。(一个字符占一个存储单元) 字符串的存储形式:数组 字符串的操作要点是:字符串的首地址(字符串第一个字符的存储地址)以及字符串的结束标志0。,字符串的存储方式,P140,在C语言中对字符串的操作: 一是采用字符数组; 二是采用指针。,字符串的操作方法:,若有定义: char c10, ch34;,字符数组,字符数组中,每一个数组元素只存放一个字符。,P140,字符数组的初始化 1) 逐个字符赋值 2) 字符串常量赋值 (常采用方法),字符数组的初始化,实现一个字符串(一维数组存储)的初始化,P140,以字符串常量初始化,系统自动加字符串的结束标志0。,例 char fruit57=“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”;,实现多个字符串(二维数组存储)的初始化,字符数组的初始化,总 结,一个字符串以一维数组存储。字符串长度+1为数组的长度。 多个字符串以二维数组存储。二维数组的行决定了字符串的个数,列决定了字符串的最大长度。 如,若有说明 char s410; 则可存储4个字符串,且每个字符串的最大长度不得超过9,每个字符串以0结束。,2、输入/输出整个字符串时用格式符“s”。(常用方法),输出: char c8 ; for(i=0;i8;i+) printf(%c,ci);,1、输入/输出逐个字符时用格式符“%c”。,char c8 ; scanf(%s,c);/* 数组名,并且不要加/* 数组名,不能写成数组元素 */,输入: char c8 ; for(i=0;i8;i+) scanf(%c,字符数组(字符串)的输入输出,P144,1、输出字符串时以0为结束标记,若一个字符串中包含一个以上的0,则遇第一个0时输出结束。,#include main() printf(“AQ120tyui0%$”); ,字符串输出的要点,#include main() char c10=aw0jdh0er; char st79=hello!; printf(%s,%s,c,st); ,AQ12,aw,hello!,2、输出字符串时不包括0。,用scanf函数输入时,将空格符和回车都视为 0 。,从键盘键入abc 123 sdr #include main() char ch20; char str =abc 123 edg; scanf(%s,ch); printf(%sn%s,ch,str); ,字符串用scanf函数输入的要点,abc abc 123 edg,在数组初始化时,一维字符数组的长度可以省略,省略时以字符串的实际长度加1决定。,多个字符串的输入输出:,#include main() char a310=hello,c+,welcome; int i; for(i=0;i3;i+) printf(%sn, ai ); ,hello c+ welcome,注:多个字符串输入输出时采用循环结构,#include main() char a310; int i; for(i=0;i3;i+) scanf(%sn, ai ); for(i=0;i3;i+) printf(%sn, ai ); ,每个字符串的首地址,例:将已知字符串 He teachs C language 中的空格删去。,【方法一 引入新数组存放删除空格后的字符串】 若有定义:char s=“He teachs C language;,s,s1,i,j,si!=0,si!= ,H,s1j=si,e,t,e,a,c,h,s,C,l,a,n,g,u,a,g,e,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,i,j,i,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,0,例:将已知字符串 He teachs C language 中的空格删去。,#include main( ) char s=He teachs C language,s121; int i,j; i=0;j=0; while(si!=0) if(si!= ) s1j=si; j+;i+; else i+; s1j=0; printf(%sn%s,s,s1);, if(si!= ) s1j=si; j+; i+;, if(si!= ) s1j+=si; i+; ,例:将已知字符串 He teachs C language 中的空格删去。,【方法二 同一数组引入不同的下标变量】 若有定义:char s=“He teachs C language;,s,i,j,si!=0,si!= ,H,sj=si,e,t,e,a,c,h,s,C,l,a,n,g,u,a,g,e,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,i,j,i,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,j,i,0,例:将已知字符串 He teachs C language 中的空格删去。,#include void main( ) char s= He teachs C language; int i,j=0; for(i=0; si!=0 ;i+) if(si!= ) sj+=si; sj=0; printf(%s,s); ,si!=0,字符串/字符函数,字符串输出函数,1、字符串输出函数puts() 格式: puts(字符串起始地址或数组名) 功能:输出一个字符串以及n。所以用puts()函数输出字符串时,不需加换行符,自动换行。 说明 1) 字符串中允许包含转义字符。 2) 该函数一次只能输出一个字符串。,包含在头文件 stdio.h 即:#include ,P161,字符串输入函数,2、字符串输入函数gets() 格式: gets(字符数组名) 功能:从键盘接收1个字符串(可以包含空格),并将其存储到字符数组中去。 说明: 1)gets( )读取的字符串,其长度没有限制,编程者要保证字符数组有足够大的空间,存放输入的字符串。 2)该函数输入的字符串中允许包含空格,以回车结束。,包含在头文件 stdio.h 即:#include ,#include main( ) char str80; printf(“Input a string:”); gets(str); puts(str); puts( 输入: How are you?,How are you? are you?,读下列程序,写出其运行结果,友情提醒: 字符串输出时,可控制字符串的起始输出位置(地址),输出串为起始点到串尾。,字符串首地址,字符串第5个字符的地址,#include main() char s79; int j,i,n=0; gets(s); w
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号