第六讲二级C字符串
二级C语言PPT教学课件_10_字符串与字符指针

a[j] = '\0'; puts(a);
24
字符串函数
3
puts
字符串 输出
gets
字符串 输入
strlen
字符串长度
strcpy
字符串 复制
strcat
字符串 连接
strcmp
[2007.4.10]以下程序的运行结果是
9
printf("%d", strlen("IBM\n012\1\\"));
[2010.3.31]以下程序的运行结果是
5,5
char s1[10] = "abcd!", *s2 = "\n123\\";
printf("%d,%d", strlen(s1), strlen(s2));
17
字符串函数
2
puts
字符串 输出
gets
字符串输入
strlen
字符串 长度
strcpy
字符串 复制
strcat
字符串 连接
strcmp
字符串 比较
18
gets与scanf
gets scanf
gets函数读取字符串,直至遇到 换行符为止,然后把换行符替换 为空字符'\0'。
scanf函数遇到空格或换行符时 输入结束,输入有空格的字符串 时,须用gets。
不能给数组a输入字符串的语句是
A)gets(a);
全国计算机二级C语言常考题型专题讲座

全国计算机二级C语言常考题型专题讲座字符串长度的计算方法提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。
所以,遇到反斜杠时要特别注意!!!1、不带转义字符的字符串如:“abc!x=/”,其长度为 72、带转义字符的字符串(1) 字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而不是5)(2) 字符串“abc\n\\\'\"":其中有4个转义字符:'\n'(换行符)、'\\'(反斜杠)、'\''(单引号)、'\"'(双引号),所以该字符串的长度为7(而不是11)。
(3) 字符串“abc\0xyz”:其中有一个转义字符'\0',它是字符串结束符,所以,当用函数strlen来测试该字符串的长度时,结果应该为3(而不是7)。
(4) 字符串“abc\\0xy”:其中有一个转义字符'\\'(反斜杠),这样,后面的字符串“0xy”照样计算,所以,该字符串的长度为7(而不是将第二个反斜杠与其后的0结合为一个转义字符'\0',若那样的话,第一个反斜杠将无法处理,因为一个转义字符总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符)。
(5) 若将字符串“abc\\0xy”改为“abc\\\0xy”:则其中有二个转义字符'\\'(反斜杠)和'\0'(字符串结束符),这时,当用函数strlen来测试该字符串的长度时,结果应该为4(而不是7)。
(6) 若将字符串“abc\\\0xy”改为“abc\\\061xy”:则其中有二个转义字符'\\'(反斜杠)和'\061'(ASCII码值等于061的字符,也即数字字符'1'),这时,当用函数strlen来测试该字符串的长度时,结果应该为7(而不是4或9)。
2019年最新-全国计算机等级考试实用应试教程二级C语言字符串-精选文档

下面介绍几种常用的字符串处理函数。
1.字符串复制函数
作用是把一个字符串全部或部分复制到另一个字符 串尾部。其基本函数有两个。
(1) strcpy(字符数组1,字符串2)
功能:把字符串2复制到字符数组1中去(即给一个 字符数组赋值)。
(2)strncpy(字符数组1,字符串2,n)
我们还可以通过定义字符型指针数组并通过赋初 值来构成一个类似的字符串数组。例如:
char *p[3]={“a”,”bb”,”ccc”};
指针数组p的每个元素指向一个字符串,即p的 每个元素中存放着一个字符串的首地址。
此时,指针元素指向长度不同的无名一维字符 数组,各字符数组之间并不占连续的存储单元, 它们的联系全依赖与p指针数组元素,一旦p指针 数组中的元素地址被重新赋值,则相应的字符串 将丢失。
2.用给以一般数组赋初值的相同方式给一维字符数 组赋初值
按照一维数组的赋初值的方式,把初值依次放 入一对花括号内
3.在赋初值时直接赋字符串常量 可以直接用字符串常量给一维数组赋初值,例
如: char str[10]={“string”}; 或
char str[10]= “string”; 此时,由于“string”是字符串常量,系统已自
10.2 使指针指向一个字符串
10.2.1 通过赋初值的方式使指针指向一个字符串
可以在定义字符指针变量的同时,将存放字符 串的存储单元起始地址赋给指针变量。也可以先 定义一个存放字符串的字符数组,并将数组的首 字地址赋给指针变量。
10.2.2 通过赋值运算使指针指向一个字符串
若已定义一个字符指针变量,可以通过赋值运 算将某个字符串的起始地址赋给它,从而使其指 向一个具体的字符串
计算机二级C语言知识点(字符串)

计算机二级C语言知识点(字符串)计算机二级C语言知识点(字符串)字符串与字符数组1.字符数组的定义定义方法与前面介绍的类似,只是将数组定义为字符型即可。
例如:charc[10];这里定义了一个包含10个元素的字符数组c。
2.字符数组的初始化对字符数组初始化,可以采用以下方法:(1)逐个字符赋给数组中各元素;(2)用字符串常量使字符数组初始化。
3.字符串在C语言中,字符串是作为字符数组来处理的,字符串可以存放在字符型一维数组中,故可以把字符型一维数组作为字符串变量。
字符串常量是用双引号括起来的一串字符。
C语言中约定用′\0′作为字符串的结束标志,它占内存空间,但不计入串的长度,′\0′的代码值为0。
系统对字符串常量也自动加一个′\0′作为结束符。
例如″clanguage″共有10个字符,但在内存中占11个字节,最后一个字节存放′\0′。
4.字符数组的输入输出(1)逐个字符输入和输出①在标准输入输出printf和scanf中使用%c格式描述符;②使用getchar和putchar函数。
例如:for(i=0;i10;i++)scanf(″%c″,str[i]);/*或str[i]=getchar();*/str[i]=′\0′;/*人为加上串结束标志*/for(i=0;i10;i++)printf(″%c″,str[i]);/*或putchar(str[i]);*/(2)字符串整体输入输出①在标准输入输出函数printf和scanf中使用%s格式描述符;输入形式:charstr[6];scanf(″%s″,str);其中str为字符数组名,代表着str字符数组的起始地址,输入时系统自动在每个字符串后加入结束符′\0′。
若同时输入多个字符串,则以空格或回车符分隔。
输入形式:printf(″%s″,str);输字符串时,遇第一个′\0′即结束。
但可人为控制输出串所占的域宽如:printf(″%6s″,str);/*若字符串中字符多于6个,仍将全部输出*/ printf(″%-6s″,str);/*只输出前6个字符,多余的不输出*/②使用gets和puts函数输入输出一行gets函数用来从终端键盘读字符,直到遇换行符为止,换行符不属字符串的内容。
C二级第06章-字符数据-演示

第5章 字符型数据
例6.2: 等待回车字符
#include<stdio.h> main() { continue\ printf("Press Enter to continue\n" ); while(getchar()!='\ while(getchar()!='\n'); …… }
19/23
第5章 字符型数据
例6.3:一行小写字母变大写字母 一行小写字母变大写字母
#include<stdio.h> main() { char c; !='\ while ( (c=getchar() ) !='\n') { c=c-('a'if(c>='a'&& c<='z') c=c-('a'-'A'); putchar(c); } putchar('\ putchar('\n'); }
第 6 章 字 符 型 数 据
C语言程序设计
第6章 字符型数据 章
6.1 字符型常量 6.2 字符变量 6.3 字符的输入和输出
第5章 字符型数据
6.1.1 字符常量
是用一对单撇号括起来的一个字符, 是用一对单撇号括起来的一个字符,如: '#' '' '9' ‘A’ ‘a' #include <stdio.h> void main(void) { char ch; ch='a'; printf("%c",ch); }
c=B,ASCII=66 c=D,ASCII=68 c=F,ASCII=70 c=H,ASCII=72 c=J,ASCII=74 c=L,ASCII=76 c=N,ASCII=78 c=P,ASCII=80 c=R,ASCII=82 c=T,ASCII=84 c=V,ASCII=86 c=X,ASCII=88 c=Z,ASCII=90
二级C(数据类型)资料

8
基本类型 类型 整型 短整型 大小 4B 2B 常量 23(十) 027(八) 0x17(十六) 变量 int a,b; short int a,b;
15 (-32768--32767)
长整型
4B
36
72L
long int a,b;
无符号整型 单精度 双精度 字符型 4B 8B 1B
。。。。。。 3.14 3.14 1.25e3 (7个有效位) 1.25e3 (15个有效位) float a,b; double a,b; 。。 char a,b; 。。
串长度:字符个数 “good” “A” “” “\\a:\\b” 串长 4 串长 1 串长 0 串长 5 占5B 占2B 占1B 占6B
回9
23
2018/10/22
变量赋值
1.先定义后赋值
int a,b,c; char d; float f; a=2; b=5; c=10; d=′a′; f=5.7;
2018/10/22
2
二、 关键字
关键字是C语言已经定义的、具有特殊功能和含义的单词、 单词缩写或者单词组合。以下列出的是C语言的关键字:
auto
default float struct volatile
break
do for
case
double goto
char
else if
const
enum int
C语言的标识符必须按以下规则构成 :
(1)必须以英文字母或下划线开始,并由字母、数字和下划
线组成。例如:chABC,intX,uY126 等都是合法的标识符,而 555Str,-chabc,+intJ等则是非法的标识符。 (2)每个标识符可以由多个字符组成,但只有前 8个标识符 为有效标识符。例如:employee1和employee2 被认为是相同的 标识符employee。 (3)大写字符和小写字符代表不同的标识符。 (4)不能使用C语言的关键字作为标识符。
计算机二级C语言、 字符型数据

第六章字符型数据1.字符型常量(1)普通字符常量:单引号括起来的一个字符,C语言中一个字符常量代表ASCII字符集中的一个字符,且有一个对应的ASCII 数值(字符在内存中以ASCII代码值形式存放)字符常量在内存中占一个字节,存放的是字符的ASCII代码值。
C语言规定,所有的字符常量都作为整型量来处理,在计算机内部,其对应的数值就是ASCII字符集中的字符序号。
(2)转义字符常量:反斜线后跟一个特定的字符,代表一个字符。
同样包含在单引号内。
\n回车换行光标回到下一行的首位置\r回车光标回到当前行的首位置\b 退格\f 换页符\t 横向跳格\v 竖向跳格\\ 输出\\' 输出'\" 输出"\0空值,其ASCII代码值为0 NULL \ddd1--3位的八进制数,代表一个ASCII字符‘\101’‘\0101’...\10‟ (010)‘\0‟‟\00‟\xff1--2位的十六进制,代表一个ASCII字符‘\x ab’…\x f‟总结:形式:‟a‟…A‟…0‟………*‟…\n‟…\022‟…\xa‟值:ASCII存放形式及其计算形式:ASCII(3)字符串常量:双引号括起来的一串字符。
C语言中系统在每个字符串后自动加入一个字符’\0’.作为字符串结束标志。
形式:“”空串“a”“aA01*\n\0777\xaa”存放:串结束标志\0字符串常量所占的内存空间: “”0+1 "a" 1+1 “01234”5+1 "sfsd\n\\\xa\v a\"" 10+1扩充:“12345\012345”(4)字符量进行运算:①大小写转换:A 65+0 a 97+0B 65+1 b 97+1C 65+2 c 97+2…….Z 65+25 c 97+25…0‟48+0…1‟48+1….…9‟48+9①32②基数+序列号=字符③大小写序列号相同加减32…A‟+32 ‘a‟…a‟-32 …A‟字符=基数+序列号大写字母ch求小写字母?已知:大写字母,小写基数求:小写字母小写字母=‟a‟+序列号ch-…A‟=‟a‟+(ch-…A‟)应用举例:大小字母间互相转换ch 小写-----大写ch-32…A‟+(ch-…a‟)要求把某一个小写字母转换为其后面的第一个字母“abcz”“bcda”“abxyz”“bcyza”ch0----24 1----2525 0if(ch>=‟a‟&&ch<=‟y‟)ch=ch+1;ch=‟a‟;0---22 3---25 %23 26-26 0 26%26 024 27-26 1 27%26 125 28-26 2 28%26 2 if(ch>=‟a‟&&ch<=‟w‟)ch=ch+3;if(ch==‟x‟) ch=‟a‟;if(ch==‟y‟) ch=‟b‟;if(ch==‟z‟) ch=‟c‟;if(ch>=‟a‟&&ch<=‟w‟)ch=ch+3;if(ch>=‟x‟&&ch<=‟z‟)ch=ch+3-26;ch=…a‟+(ch-…a‟+2)%26ch=‟a‟+(ch-…a‟-2+26)%26 “abcd”“zabc”2----25 0---230 24 (0-2+26)%261 252 03 1 (3-2+26)%264 2….25 23②数字字符与其对应数值间转换数字字符的对应数值为该数字字符在数字字符表里的序列号字符序列号数值…0‟0 0…1‟ 1 1…….…9‟9 9加减48…0‟-48 ? 0…9‟9字符-基数=对应的数值…0‟-…0‟?0…9‟-…0‟?9应用:123456789“1234”1234 4321取数组数ch …1‟ 1 1***** ****1 …2‟ 2 12*** ****21…3‟ 3 123** ***321…4‟ 4 1234 4321y=y*10+(ch-…0‟);{y=y+(ch-…0‟)*t; t=t*10;}③关系运算及其逻辑运算‘a‟>‟A‟ 1‘\0‟&&‟0‟0‘1‟||…0‟ 12.字符变量把字符放入字符变量中时,字符变量的值为该字符的ASCII值。
第六章全国计算机二级C语言课件new.ppt

注意:若程序中用到上面两个函数,则在程序的开头 注意:若程序中用到上面两个函数, 加上#include “stdio.h” 加上
2010年12月4日星期六 主讲教师:李 黎 14
真题选讲
2010年12月4日星期六
主讲教师:李 黎
15
程序举例
1.、printf 语句中,第一个 用%c输出一个字符,第二个 用%d输出字符 、 语句中,第一个ch用 输出一个字符 第二个ch用 输出一个字符, 输出字符 代码值。 的ASCII代码值。 代码值 2、printf语句后面的回车换行符是“\n” (双引号),而 putchar语句后面 语句后面的回车换行符是“ 双引号), ),而 、 语句后面的回车换行符是 语句后面 的回车换行符是’\n’(单引号)。 的回车换行符是 (单引号)。 3、从本例中掌握小写字母转换为大写字母的方法。 、从本例中掌握小写字母转换为大写字母的方法。
2010年12月4日星期六 主讲教师:李 黎 16
★
1、while((c=getchar())!=‘\n’)这句话经常考到,请考生注意。它的意思是,如果输 、 这句话经常考到, 这句话经常考到 请考生注意。它的意思是, 入的不是回车符,则执行下面的循环;也就是说,如果输入用回车符结束, 入的不是回车符,则执行下面的循环;也就是说,如果输入用回车符结束,则 循环也就结束了。 循环也就结束了。 2、if(c>=‘a’&&c<=‘z’)这句话是判断小写字母的方法。如果一个字符的 这句话是判断小写字母的方法。 、 这句话是判断小写字母的方法 如果一个字符的ASCII值 值 >=’a’的ASCII值,<=’z’的ASCII值,则这个字符一定是小写字母。 的 值 的 值 则这个字符一定是小写字母。 3、c=c-(‘a’-’A’)用小写字母 减去大写字母和小写字母的差值,得出的字母就是大写 用小写字母c减去大写字母和小写字母的差值 、 用小写字母 减去大写字母和小写字母的差值, 字母,可直接写成c=c-32。因此公式可写为:小写字母 - 32=大写字母;大写字 大写字母; 字母,可直接写成 。因此公式可写为: 大写字母 小写字母。 母+32=小写字母。 小写字母
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
给出以下定义:
char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'};
C
则正确的叙述为( )。
A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同
C) 数组X的长度大于数组Y的长度
D) 数组X的长度小于数组Y的长度
字符串的结束标志:‘\0’。 注:C语言无字符串类型,字符串是存放在字符数
组中的。
第六讲二级C字符串
2. 用字符串来直接初始化字符数组 可直接把字符串写在花括号中来初始化字符数组. 如:char ch[9]={“student”};字符串和数组长度?
s t u d e n t \0
系统将双引号括起来的字符依次赋给字符数组的各个元 素, 并自动在末 尾补上字符串结束标志字符'\0'。
第六讲二级C字符串
(2)用puts函数输出字符串
函数原型:int puts(char * str); 调用格式:puts(str);
函数功能:将字符数组str中包含的字符串或str所指示的字 符串输出,同时将'\0'转换成换行符。 例:char ch[]="student";
puts(ch); puts("Hello"); 将字符数组中包含的字符串输出,然后再输出一个换行 符。因此,用puts()输出一行,不必另加换行符'\n'。 函数puts每次只能输出一个字符串,而printf可以输出几个 :printf("%s%s",str1,str2);
若按如下方法输入: How do you do?↙
执行语句 : scanf("%s",st) ; 则s 的内容为: How\0 使用格式字符串"%s"时会自动加上结束标志'\0'。第一个空
格后的字符没有输入st中。
第六讲二级C字符串
(2)使用函数gets()输入字符
函数原型:char *gets(char *str); 调用格式: gets(str); str是一个字符数组或指针。 函数功能:从键盘读入一个字符串到str中,并自动 在末尾加字符串结束标志符’\0’。 输入字符串时以回车结束输入,这种方式可以读入 含空格符的字符串
printf(“%c”,str[k]); /*一个一个地输出字符*/
}
输出结果为:How do you do ?How do you do ?
使用printf()函数的"%s"格式符来输出字符串,从数组的第一个字符 开始逐个输出,直到遇到第一个'\0'为止。
使用”%c”格式时,用循环实现每个元素的输出。
计算机等级考试辅导
第六讲
第六讲二级C字符串
• 第十章 字符串 • 第十一章 对函数的进一步讨论 • 第十四章 结构体、共用体和用户定义类
型
第六讲二级C字符串
第10章 字符数组与字符串
字符数组的定义与初始化 1. 字符数组的定义 字符数组:其元素类型为字符类型的数组,其 定义与前面介绍的数组定义相同。 例如:
第六讲二级C字符串
2. 字符串的输入 (1)使用scanf函数输入字符串
例:char st[15]; scanf(“%s”,st); 但:scanf(“%s”,&st);是错误的; 因为st就代表了该字符数组的首地址。 注:输入时,以回车或空格作为结束标志; 即:用scanf输入的字符串中不能含有空格。
char ch[]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’}; ③如果花括弧内提供的初值个数大于数组长度?
出错
第六讲二级C字符串
字符串的概念及存储
1.字符串的概念
字符串: 若干有效字符的序列; 可包含转义字符、ASCⅡ码表中的字符;
形式为: 用双引号括起来的字符序列; 例:"I am a student." , "Hello " "a[5]="; "%f\n"。
输出结果:
st=I am a boy!mb
第六讲二级C字符串
例: 字符串输出示例
#include<sstr[20]={”How do you do ?”};
int k;
printf(“%s”,str);
/*输出str中的字符串*/
for (k=0;str[k]!=’\0’;k++)
第六讲二级C字符串
字符串的输入输出
1.字符串的输出方法
(1)用printf函数
用printf输出字符串时,要用格式符“%s”,输出时 从数组的第一个字符开始逐个字符输出,直到遇
到第一个‘\0’为止。
例: char st[15]=“I am a boy!”
printf(“st=%s,%c,%c”,st,st[3],st[7]);
char str[40]; 定义一个有40个元素的字符数组,每个元素 相当于一个字符变量。 字符型与整形是通用的.
第六讲二级C字符串
2. 字符数组的初始化
方法:将字符常量以逗号分隔写在花括号中 ①在定义字符数组时进行初始化
char ch[7]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’}; ②在对全部元素指定初值时,可省写数组长度。
几点说明: (1)字符串结束标志'\0'仅用于判断字符串是否结束,输出字符串时不 会输出。 (2)在对有确定大小的字符数组用字符串初始化时,数组长度应大于 字符串长度。如: char s[7]={"student"};是错误的. (3)在初始化一个一维字符数组时,可以省略花括号。如: char s[8]="student"; ( 4 )不能直接将字符串赋值给字符数组名。下面的操作是错误的。 s=”student”;
如: char s[14]; gets(s);
若输入的字符串为: How do you do?↙ 则s 的内容为: How do you do?\0
第六讲二级C字符串
例:字符串输入输出示例
#include<stdio.h> main() {char s[20],s1[20]; scanf(“%s”,s); printf(“%s\n”,s); scanf(“%s%s”,s,s1); printf(“s=%s,s1=%s”,s,s1); puts(“\n”); gets(s); puts(s); }