C语言,第8章 数组(字符数组)_第1页
C语言,第8章 数组(字符数组)_第2页
C语言,第8章 数组(字符数组)_第3页
C语言,第8章 数组(字符数组)_第4页
C语言,第8章 数组(字符数组)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章数组(字符数组)内容提要什么是字符串?字符数组的作用字符数组的定义字符数组的输入和输出字符数组的初始化程序实例字符串复制函数strcpy字符串连接函数strcat字符串比较函数strcmp字符串长度函数strlen程序实例什么是字符串?字符串:用双引号括起来的一串字符。字符串在内存中的存储:C语言规定,当字符串在内存中存储时,在每一个字符串的结尾加一个“字符串结束标志\0”,以便据此判断字符串是否结束。例如:“china”c

h

i

na

\0字符数组

字符数组的作用:用来存储字符,每个数组元素存放一个字符。字符数组的定义:一维:char数组名[常量表达式];二维:char数组名[常量表达式1][常量表达式2];例如:

char

a[5];char

b[3][5];给字符数组赋值数组初始化:在定义数组时给数组赋值从键盘输入:使用循环逐个字符输入使用字符串输入函数,输入字符串使用字符串格式符%s,输入字符串给字符数组赋值数组初始化:在定义数组时给数组赋值例如:char

c[6]={“boy”};char

c[6]=“boy”;char

c[6]={‘b’,

‘o’,

‘y’,

‘\0’};赋值后字符数组c在内存中的状态:c[0]

c[1]b

oc[2]

c[3]

c[4]

c[5]y

\0

\0

\0给字符数组赋值例如:char

c[]={“boy”};char

c[]=“boy”;char

c[]={‘b’,

‘o’,

‘y’,

‘\0’};赋值后字符数组c在内存中的状态:c[0]c[1]c[2]c[3]boy\0给字符数组赋值从键盘输入:使用循环逐个字符输入例如::#include

<stdio.h>int

main(void){char

c[20];int

i;for

(i=0;

i<3;

i++){scanf(“%c”,&c[i]);}c[i]

=

‘\0’;……..return

0;}给字符数组赋值从键盘输入:使用循环逐个字符输入例如::#include

<stdio.h>int

main(void){char

c[20];int

i;for

(i=0;

i<3;

i++){c[i]

=

getchar();}c[i]

=

‘\0’;……..return

0;}给字符数组赋值从键盘输入:

使用格式符%s,输入字符串例如::#include

<stdio.h>int

main(void){char

c[20];int

i;scanf(“%s”,

c);……..return

0;}给字符数组赋值从键盘输入:使用字符串输入函数gets,输入字符串例如::#include

<stdio.h>int

main(void){char

c[20];int

i;gets(c);……..return

0;}gets函数和scanf输入字符串的区别gets函数:可以输入带空格的字符串例如:My

name

is

chdong!

scanf输入字符串:不能输入带空格的字符串例如:输入

My

name

is

chdong!遇到第一个空格结束,因此只输入My字符数组的输出使用循环逐个字符输出,使用%c格式#include

<stdio.h>int

main(void){char

c[

]

=

“China”;int

i;nc[0] c[1]

c[2]C

h

ic[3]

c[4]a

\0c[5]

for

(i=0;

i<5;

i++){printf(“%c”,c[i]);}return

0;}字符数组的输出使用循环逐个字符输出,使用putchar函数#include

<stdio.h>int

main(void){char

c[

]

=

“China”;int

i;nc[0] c[1]

c[2]C

h

ic[3]

c[4]a

\0c[5]

for

(i=0;

i<5;

i++){putchar(c[i]);}return

0;}字符数组的输出使用%s格式符输出字符串nac[0] c[1]

c[2]C

h

ic[3]#include

<stdio.h>int

main(void){char

c[

]

=

“China”;c[4]

c[5]\0

printf(“%s”,

c);return

0;}字符数组的输出使用puts函数输出字符串nac[0] c[1]

c[2]C

h

ic[3]#include

<stdio.h>int

main(void){char

c[

]

=

“China”;c[4]

c[5]\0

puts(c);return

0;}字符数组程序举例从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。(课程案例example01)#include

<stdio.h>int

main(void){char

str[128];int

i,

zimu

=

0,

shuzi

=

0,

kongge

=

0,

qita

=

0;printf("Please

input

string:");gets(str);输入字符串for

(i

=

0;

str[i]

!=

"\0";

i++){–if

(((str[i]

>=

"a")

&&

(str[i]

<=

"z"))

||

((str[i]

>=

"A")&&

(str[i]

<=

"Z"))){–––––––––––zimu++;}else

if

((str[i]

>=

"0")

&&

(str[i]

<=

"9")){shuzi++;}else

if

(str[i]

==

"

"){kongge++;}else{qita++;}}判断字符类型printf(“zimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,

shuzi,

kongge,

qita);return

0;}输出结果使用字符串处理函数必须加头文件<string.h>字符串复制函数strcpy1.

strcpy(字符数组1,字符串2)作用:将字符串2复制到字符数组1中去。例如:char

str1[10],

str2[

]={“China”};•strcpy(str1,str2);正确!•str1=str2;

错误!•strcpy(str1,“China”);正确!•str1=“China”;

错误!字符串连接函数strcat2.

strcat(字符数组1,字符串2)作用:连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中。例如:char

str1[15]={“I

am

”};char

str2[

]={“happy”};strcat(str1,

str2);I

a

m

h

a

p

p

y\0str1字符串的比较规则:对两个字符串从左至右逐个对应字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。•如全部字符相同,则认为相等;•若出现不相同的字符,则以第一个不相同的字符的比较结果为准。例如:“these”与“that”“abc”与“abc”“36+54”与“36”字符串比较函数strcmp3.

strcmp(字符串1,字符串2)作用:比较字符串1和字符串2的大小。比较的结果由函数值带回。☆如果字符串1=字符串2,函数值等于0。☆如果字符串1>字符串2,函数值大于0。☆如果字符串1<字符串2,函数值小于0。例如:strcmp(str1,

str2)>

0则str1大于str2strcmp(str1,

str2)<

0则str1小于str2strcmp(str1,

str2)==

0则str1等于str2字符串长度函数strlen4.

strlen(字符串)作用:计算字符串的长度。字符串的长度为第一个‘\0’之前的字符个数。例如:char

str[100]=“boy”;strlen(str)的结果为3strlen(“china”)的结果为5程序举例从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出长度最大的字符串的长度。(课程案例example02)gets(str1);gets(str2);gets(str3);len1

=

strlen(str1);

len2

=

strlen(str2);

len3

=

strlen(str3);if

(len1

>

len2){max

=

len1;}else{max

=

len2;}if

(len3

>

max){max

=

len3;}程序举例从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出最大的字符串。(课程案例example03)gets(str1);gets(str2);gets(str3);if

(strcmp(str1,

str2)

>

0){strcpy(maxstr,

str1);}else{strcpy(maxstr,

str2);}if

(strcmp(str3,

maxstr)

>

0){strcpy(maxstr,

str3);}程序举例从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。(课程案例

example04)char

str[5][81],

tmp[81];int

i,

j;for

(i=0;

i<=4;

i++){gets(str[i]);}输入5个字符串for

(i=0;

i<=3;

i++){for

(j=i+1;

j<=4;

j++){if

(strcmp(str[i],

str[j])

>

0){strcpy(tmp,

str[j]);strcpy(str[j],

str[i]);strcpy(str[i],

tmp);}}}对5个字符串排序for

(i=0;

i<=4;

i++){printf(“%s\n”,

str[i]);}输出排序后的字符串程序举例从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回文即正向与反向

的拼写都一样,例如:adgda。(课程案例example05)flag

=

0;for

(i=0,

j=strlen(str)-1;

i<j;

i++,

j--){if

(str[i]

!=

str[j]){flag

=

1;break;}}程序举例从键盘上读入一行字符(约定:字符数≤127字节),按以下方法将其加密变换:A->Z

a->zB->Y

b->yC->X

c->x……

……Z->A

z->a即字母A变成Z、字母B变成Y、…,非字母字符不变。最后在屏幕上先显示这一行字符的长度,再显示生成的密文。(课程案例example06)for

(i

=

0;

str1[i]

!=

"\0";

i++){if

((str1[i]

>=

"a")

&&

(str1[i]

<=

"z")){str2[i]

=

("a"

+

"z")

-

str1[i];}else

if

((str1[i]

>=

"A")

&&

(str1[i]

<=

"Z")){str2[i]

=

("A"

+

"Z")

-

str1[i];}else{str2[i]

=

str1[i];

}}str2[i]

=

"\0";程序举例在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。for

(i=0;

str[i]!="\0";

i++){if

(str[i]

!=

"

"){num++;}else{if

(num

>

maxlen){maxlen

=

num;}num

=

0;}}if

(num

>

maxlen){maxlen

=

num;}程序举例从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。注意:以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论