C语言程序设计项目式教程:数据的批量处理_第1页
C语言程序设计项目式教程:数据的批量处理_第2页
C语言程序设计项目式教程:数据的批量处理_第3页
C语言程序设计项目式教程:数据的批量处理_第4页
C语言程序设计项目式教程:数据的批量处理_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

批量数据的处理第一讲一维数组C语言程序设计任务驱动式教程问题导入intscore1,score2;……score100;scanf("%d",&score1);scanf("%d",&score2);

……scanf("%d",&score100);【问题】为什么要使数组array?读入两个学生的成绩,求其平均成绩?问题:一批数据怎么处理?intscore,i,sum=0;for(i=0;i<100;i++){scanf("%d",&score);sum=sum+score;}

aver=sum/100;可以使用循环来实现100个数求和。要存储这100个数就只能使用数组了intscore1,score2;scanf("%d",&score1);scanf("%d",&score2);aver=(score1+score2)/2;

intscore[100],i;for(i=0;i<100;i++){

scanf("%d",&score[i]);}保存大量同类型的相关数据导学【问题1】定义数组的一般格式是什么?数组元素如何表示?【问题2】为什么数组与循环结构密不可分?一维数组任务一7876如何将每位评委的分数保存下来?对于某大赛,若有10位评委,则必须定义10个变量,若有100位评委

……怎么办?使用数组可保存评委的分数。inta[10];一维数组-定义任务一

数组是一组用来存放多个相同类型的数据集合,该集合中的每一个成员称为数组元素。

通过数组名和一个下标唯一确定的称为一维数组。

数组在使用前必须先定义。a5a[5]数组变量普通变量数组在使用前必须先定义。如何定义一维数组呢?一维数组-定义任务一类型标识符

数组名[整型常量表达式];【定义格式】int

a[5];引例类型标识符数组名整型常量表达式中括号中的数字称为下标示例int

s[15];floatn[20];一维数组-定义任务一【说明】⑴

“类型标识符”表示数组中每个元素的数据类型。⑵“数组名”应是合法的用户标识符。int

a-1[10];a-1:不是合法标识符⑶“整型常量表达式”必须用一对方括号括起来,不能用其他括号。int

b[5];int

b(5);int

b{5};×√×一维数组-定义任务一【说明】(4)“整型常量表达式”表示数组长度(数组元素个数)int

a[5];数组a有5个元素,分别是:a[0]、a[1]、a[2]、a[3]、a[4]int

a[2*30];数组a有60个元素,分别是:a[0]、a[1]、a[2]、……a[59]一维数组-定义任务一【说明】(5)“整型常量表达式”也可以用符号常量表示。#defineN10;……int

b[N];(6)不允许对数组的大小动态定义。int

b[n];n------下标不可以是变量√×一维数组-定义任务一【说明】(7)“下标下限为0,下标上限为

“整型常量表达式-1”。

int

b[5];数组b有5个元素,分别是:b[0]、b[1]、b[2]、b[3]、b[4]int

a[10];如何存储呢?a(8)C系统为数组分配连续的存储空间,数组名代表数组在内存中存放的首地址(即数组第一个元素在内存中的存储地址)。a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]一维数组-定义任务一(9)数组名不能与其它变量同名例如:inta;floata[10];

(10)常量表达式可以是整型常量或整型符号常量,其值应为整型,不能是变量。×例如:#defineNUM5main(){intn,m;

inta[3+2],b[7+NUM];

floatc[n],d[m+10];

……}√

×【说明】一维数组-定义任务一【说明】(11)C语言不允许对数组作动态定义。例如:intn=5;scanf(“%d”,&n);inta[n];程序段是错误的,它对数组大小作了动态定义。一维数组-定义-示例任务一//定义float型数组,数组名为b,该数组有100个元素floatb[100];#defineN20……ints[N];//先定义符号常量N代表整数20//定义整型数组sintn=20;intarray[n];//此定义方式不正确,因为“数组长度”不是常量表达式inta[4+6];//合法一维数组-定义-应用任务一⑴定义一维数组,用来保存某大赛中10位评委亮出的分数。⑵定义一数组,存放50名学生的成绩。intscore[50];float

a[10];技能实训练一练一维数组任务一1、下面定义一维数组的语句正确吗:#defineN10inta[N];()A.正确B.不正确2、一维数组定义的格式为:类型标识符数组名[整型常量表达式];,例如:inta[5];,其中“整型常量表达式”代表的是()A.数组的长度B.数组的下标答案:A答案:A3、下面定义一维数组的语句正确吗:intn=10;inta[n];A.正确B.不正确4、数组起始下标是从0开始的。

A.正确B.不正确答案:B答案:A学习总结答一答任务一一维数组1、数组下标下限为02、数组下标上限为“整形常量表达式-1”3、数组名代表数组的首地址感谢观看!批量数据的处理第三讲二维数组的定义C语言程序设计任务驱动式教程综合2:选择结构综合应用100以内减法定期存款本息合计的计算银行ATM机操作界面“剪刀石头布”人机游戏问题导入在实际应用中,很多问题是二维的,具有行和列的特点。例如,现在有一个10行10列的矩阵,该如何存储?在本任务中,我们就来学习二维数组的使用。二维数组任务二【引例】intaver[3][4];类型标识符整型常量表达式inta[3];inta[3][4];一维数组二维数组数组名二维数组-定义任务二【定义格式】【说明】类型标识符

数组名[整型常量表达式1][整型常量表达式2];⑴

“整型常量表达式1”表示第一维下标的长度,“整型常量表达式2”表示第二维下标的长度,两个表达式分别用方括号括起来。inta[3][4];第一维下标第二维下标如:floata[3][4],b[5][10];二维数组-定义任务二(2)二维数组可被看作是一种特殊的一维数组:

它的元素又是一个一维数组

例如,把a看作是一个一维数组,它有3个元素:a[0]、a[1]、a[2]每个元素又是一个包含4个元素的一维数组【说明】inta[3,4];【想一想】×---两个下标分别用方括号括起来floata[5][5];√二维数组-定义任务二a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]a[0]a[1]a[2]二维数组-定义任务二【说明】(3)系统为二维数组分配连续的存储空间,将二维数组元素按行依次存储,数组名代表数组在内存中存放的首地址。int

a[3][4];如何存储呢?a[0]a[1]a[2]

a[0][0]a[0][1]a[0][2]a[0][3]aa[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]二维数组-定义-示例任务二floatb[10][10];#defineN200ints[N][N];intn=10;intarray[n][10];下标必须是常量,不可是变量

doublea[4,5];两个下标分别用一对方括号括起来

二维数组-定义-示例任务二(1)一学习小组有4人,每人有三门课程成绩。(2)有一3层书架,每层放60本书。

intscore[4][3];floata[3][60];【应用】技能实训1、有数组定义:ints[6][2];,该数组中有几个元素A.8B.12C.212、下列二维数组定义语句正确的是:A.doublea(4,5);B.doublea[4,5];C.doublea[4][5];3、有数组定义:ints[3][4];,该数组的最后一个元素如何表示A.s[2][3]B.s[3][4]4、有数组定义:ints[3][4];,该数组的第一个元素如何表示A.s[0][0]B.s[1][1]练一练技能实训任务二答案:B答案:C答案:A答案:A学习总结答一答任务二学习总结(1)二维数组有两个下标。(2)每个下标分别用一对方括号括起来。感谢观看!批量数据的处理第四讲二维数组初始化C语言程序设计任务驱动式教程综合2:选择结构综合应用100以内减法定期存款本息合计的计算银行ATM机操作界面“剪刀石头布”人机游戏问题导入34212865675074629954如何用表格中的数据初始化二维数组元素,并输出其中最小的值?二维数组-初始化任务二int

a[3][3]={{1,28,4},{15,7,8},{9,111,12}};对二维数组元素赋初值,即初始化。对二维数组全部元素赋初值

对二维数组部分元素赋初值float

b[2][3]={{1.1},{3.9,1.0}};等价于int

a[3][3]={1,28,4,15,7,8,9,111,12};int

a[][3]={1,28,4,15,7,8,9,111,12};第一维长度可不指定,但第二维长度不能省略。1.1

0.00.03.91.00.0【情况1】【情况2】二维数组-初始化任务二说明下列各二维数组元素的初值。inta[3][4]={{1},{2},{3}};inta[3][4]={1,2,3};100020003000123000000000二维数组-引用任务二引用数组中的元素可通过使用数组名及下标来实现。数组名[下标1][下标2]int

a[3][4];a[0][0]=6;只能逐个引用数组元素,不能一次引用整个数组。//引用a[0][0]元素,为其赋值为6。//引用a[1][0]元素,通过键盘为其输入值。scanf("%d",&a[1][0]);下标可是整型常量、变量或表达式【引用格式】二维数组-引用任务二二维数组数据的输入和输出。#include<stdio.h>voidmain(){int

a[3][4],i,j;

for(i=0;i<3;i++)

//二维数组的输入

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)//二维数组的输出

{for(j=0;j<4;j++)

printf("%d",a[i][j]);

printf("\n");//每输出一行后换行

}}1.二维数组根据需要进行初始化2.对二维数组访问一般用双重循环实现二维数组-引用任务二示例1两种商品在四个季节有不同的单价float

pri[2][4]={{1.12,1.3,1.2,1.4},{1.1,1.35,1.4,1.2}};使用初始化中的最小值作为两种商品的特价值1.1如何输出商品的特价值?printf("%0.1f\n",pri[1][0]);通过键盘输入3名学生两门课的成绩。ints[3][2],i,j;

for(i=0;i<3;i++)

for(j=0;j<2;j++)

scanf("%d",&s[i][j]);示例2二维数组-引用任务二34212865675074629954价格表:有一双层书架,每一层放5本书,找出其最低价格。应用思考如何计算第2层书架中书的单价之和。二维数组-引用任务二34212865675074629954价格表:#include<stdio.h>intmain(){intmin,i,j,s=0;inta[2][5]={{34,21,28,65,67},{50,74,62,99,54}};min=a[0][0];for(i=0;i<2;i++)

for(j=0;j<5;j++){if(a[i][j]<min)min=a[i][j];s=s+a[i][j];}printf("最小值是:%d数组和为:%d\n",min,s);return0;}有一双层书架,每一层放5本书,找出其最低价格。应用思考如何计算第2层书架中书的单价之和。二维数组的应用任务二【程序】将一个二维数组a的行和列的元素(即行列转置),存到另一个二维数组b中。例如:

a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]b[0][0]b[0][1]b[1][0]b[1][1]b[2][0]b[2][1]b[0][0]=a[0][0]b[1][0]=a[0][1]b[2][0]=a[0][2]b[0][1]=a[1][0]b[1][1]=a[1][1]b[2][1]=a[1][2]b[j][i]=a[i][j](i=0~1,j=0~2)000102101112000110112021a,b数组对应的数组元素下标:二维数组的应用任务二【算法设计】step1变量定义和初始化。定义数组a[2][3],数组b[3][2],循环控制变量i和j。step2用嵌套循环实现数组a的行列转置,并存放到数组b中。外层循环控制数组a的行下标变量i的取值范围:0~1。内层循环控制数组a的列下标变量j的取值范围:0~2。循环体部分:b[j][i]=a[i][j];step3打印输出数组a和数组b。二维数组的应用任务二#include<stdio.h>intmain(){

inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("arraya:\n"); for(i=0;i<=1;i++) /*外层循环*/{ for(j=0;j<=2;j++) /*内层循环*/

{

printf("%5d",a[i][j]);

b[j][i]=a[i][j];

/*为b数组赋值*/

}

printf("\n");

}

printf("arrayb:\n");

for(i=0;i<=2;i++)

{

for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");

}

return0;}step1step2step31.一个学习小组有6个人,每个人有3门课(数学、语文和英语)的考试成绩,如表所示。求每门课的平均分和每个人的平均分。技能实训任务二课程王笑李鹏吴欣张平赵明张晓娜数学859384859586语文7995958010098英语809193759790可设一个二维数组a[3][6]存放6个人3门课的成绩。再设一个一维数组v[3]存放每门课的平均分,设一个一维数组w[6]存放每个人的平均分。技能实训任务二#include<stdio.h>intmain(){inti,j,s=0,v[3],w[6]; /*定义变量*/inta[3][6]={{85,93,84,85,95,86},{79,95,95,80,100,98},{80,91,93,75,97,90}}; /*初始化*/for(i=0;i<3;i++) /*外循环*/{ for(j=0;j<6;j++) /*内循环*/ s=s+a[i][j]; /*各科的分数累加*/ v[i]=s/6; /*各科平均分*/ s=0; /*s重新赋初值0*/ }1.一个学习小组有6个人,每个人有3门课(数学、语文和英语)的考试成绩,如表所示。求每门课的平均分和每个人的平均分。技能实训任务二

for(j=0;j<6;j++) /*外循环*/

{ for(i=0;i<3;i++) /*内循环*/ s=s+a[i][j]; /*各人的分数累加*/ w[j]=s/3; /*各人平均分*/ s=0; /*s重新赋初值0*/}printf("数学:%d\t语文:%d\t英语:%d\n",v[0],v[1],v[2]); /*输出各科平均分*/printf("王笑:%d\t李鹏:%d\t吴欣:%d\t张平:%d\t赵明:%d\t张晓娜:%d\n",w[0],w[1],w[2],w[3],w[4],w[5]); /*输出每个人的平均成绩*/return0;}1.一个学习小组有6个人,每个人有3门课(数学、语文和英语)的考试成绩,如表所示。求每门课的平均分和每个人的平均分。学习总结答一答任务二学习总结【问题1】对二维数组元素赋初值,即初始化?

【问题2】二维数组的引用格式感谢观看!批量数据的处理第五讲字符数组定义及初始化C语言程序设计任务驱动式教程问题导入字符数组什么样的变量可以接收多个字符?字符数组-定义任务五一维字符数组的定义格式:

char

数组名[常量表达式];例如:chara[10];二维字符数组的定义格式:

char

数组名[常量表达式1][常量表达式2];例如:charb[3][4];字符数组实际上是一组字符构成的集合,其中的每个元素用来存放字符串中的一个字符。字符数组-初始化任务五对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。如:charc[10]={‘I’,‘└┘’,‘a’,‘m’,‘└┘’,‘h’,‘a’,‘p’,‘p’,‘y’};

等价于:c[0]=‘I’;c[1]=‘└┘’;c[2]=‘a’;c[3]=‘m’;c[4]=‘└┘’;c[5]=‘h’;c[6]=‘a’;c[7]=‘p’;c[8]=‘p’;c[9]=‘y’;

以上定义C为字符数组,包含10个元素,赋值后数组的状态如图所示。c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]I└┘am└┘happy对字符数组元素赋初值,即初始化。数组的初始化与数组的初始化一样,可以在定义时初始化,也可以先定义后初始化。字符数组-初始化任务五char

s[5]={‘S’,‘t’,‘u’,‘d’,‘y’};定义字符数组的同时用字符为其赋初值

等价于char

s[6]=“Study”;字符间用逗号分隔Studys定义字符数组的同时用字符串为其赋值。

char

s[6]={“Study”};Study\0

s【情况1】【情况2】字符数组-初始化任务五定义二维字符数组的同时用字符串赋值。char

str[3][10]={“keyboard”,“mouse”,“monitor”

};

str[0]str[1]str[2]strkeyboard\0

\0

mouse\0\0\0\0\0monitor\0\0\0【情况3】字符数组-初始化任务五二维字符数组可存放多个字符串。第一维的长度代表要存储的字符串的个数,可以省略;第二维的长度不能缺省,应按最长的字符串长度设定。char

book[3][8]={”Math”,”English”,”Physics”};等价于:char

book[][8]={”Math”,”English”,”Physics”};【情况4】字符数组-初始化任务五charc[10]={’I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};

charc[10]={’c’,’’,’p’,’r’,’o’,’g’,’r’,’a’,’m’};Iam

happyc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]cprogram\0c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]你知道下列数组是怎么存储的吗?字符数组-初始化-说明任务五①在定义数组时,可以用省略第一维大小的方法来初始化一个数组的各个元素.②二维字符数组的初始化可以用初始值表的方法,也可以用字符串常量的方法.chars5[3][4]={{'a','b','c','\0'},{'1','2','3','\0'},{'m','n','l','\0'}};chars5[3][4]={"abc","123","mnl"};chars5[][4]={"abc","123","mnl"};③字符数组在使用时,不能将一个字符串直接赋给一个字符数组名,只能对字符数组的元素逐个赋值。chars[10];s="abcde";chars3[]="abcde";例如:例如:例如:字符数组-初始化-说明任务五charstr1[]={’H’,’e’,’l’,’l’,’o’,’\0’};charstr2[]={’H’,’e’,’l’,’l’,’o’};str2是字符数组,但不是字符串。字符串的末尾必须要以‘\0’结束。6个元素5个元素

charstr[5]=”Hello”;

/*存储空间不够*/字符数组-引用任务五用字符数组的下标指定要引用的数组元素。一维字符数组的引用格式:

数组名[下标]

二维字符数组的引用格式:

数组名[行下标][列下标]char

a[10],b[10];a[10]=“Happy!”字符数组-引用任务五【例】输出一个字符串。#include<stdio.h>voidmain(){charc[10]={‘I’,‘└┘’,‘a’,‘m’,‘└┘’,‘h’,‘a’,‘p’,‘p’,‘y’};inti;

for(i=0;i<10;i++)

printf(“%c”,c[i]);printf(“\n”);}

运行结果为:

Iamhappy技能实训练一练技能实训任务二[1]下面字符数组的初始化正确吗?char

a[10],b[10];a[10]=“Happy!”b=Hello!学习总结答一答任务二学习总结【1】由于在C语言中并不存在字符串这种数据类型,而是使用字符数组来存储字符串。对于字符数组,其长度是固定的,其中任何一个数组元素都可以为'\0'字符。因此,字符数组不一定是字符串。【2】对于字符串string,可以直接使用printf按字符串打印其内容;而对字符数组,很显然使用printf按字符串打印其内容是不合适的。感谢观看!批量数据的处理第六讲字符数组的输入/输出C语言程序设计任务驱动式教程问题导入字符数组字符数组要怎样输入/输出呢?字符数组的输入/输出任务六一维字符数组的输入/输出操作有三种方法。(1)以%c的格式逐个字符输入/输出charstr[6];inti;for(i=0;i<6;i++)scanf(“%c”,&str[i]); /*字符数组输入*/for(i=0;i<6;i++)printf(“%c”,str[i]);

/*字符数组输出*/字符数组的输入/输出任务六(2)以%s的格式将字符串作为一个整体输入/输出charstr[6];scanf(“%s”,str);

/*字符串输入*/printf(“%s”,str);

/*字符串输出*/【注意】1、字符数组名表示的是数组的首地址,所以以%s的格式输入/输出一个字符串时,字符数组名前面不能再加取地址符号“&”。2、空格、回车或Tab键是字符串输入结束的标志。charstr[13];scanf(“%s”,str);printf(“%s”,str); HelloWorld!↙Hello字符数组的输入/输出任务六#include<stdio.h>voidmain(){charstr[10];//str是string的缩写,即字符串

printf("请输入字符串:");scanf("%s",str);//输入参数是已经定义好的字符数组名

printf("输出结果:%s\n",str);}输出结果是:请输入字符串:ILoveC输出结果:I字符数组的输入/输出任务六【实例】用格式符%s将整个字符串一次输入/输出。#include<stdio.h>voidmain(){charc[15];printf("Pleaseinputastring:\n");scanf("%s",c);printf("%s",c);}用字符数组名,不要加&输入串长度<数组维数遇空格或回车结束自动加‘\0’用字符数组名,遇‘\0’结束程序运行结果为:

Pleaseinputastring:abcdefghij<回车>abcdefghij字符数组的输入/输出任务六例字符串输入举例

How\0

are\0

you?\0

#include<stdio.h>main(){chara[15],b[5],c[5];

scanf("%s%s%s",a,b,c);

printf("a=%s\nb=%s\nc=%s\n",a,b,c);

scanf("%s",a);

printf("a=%s\n",a);}运行情况:输入:Howareyou?输出:a=Howb=arec=you?输入:Howareyou?输出:a=Howscanf中%s输入时,遇空格或回车结束运行情况:输入:Howareyou?字符数组的输入/输出任务六(3)使用字符串处理函数gets和puts把字符串作为一个整体输入/输出charstr[13];

gets(str);

puts(str);①使用gets函数将字符串整体进行输入时,系统自动在末尾添加一个‘\0’。②输入的字符串中若包含空格、Tab键等字符信息均能正常输入,仅以回车作为字符串输入结束的标志。③使用puts函数将字符串整体进行输出时,系统一旦遇到‘\0’便停止输出。HelloWorld!↙HelloWorld!任务一字符串处理函数

a.字符串输出函数格式:puts(字符数组名或字符串)功能:将一个字符串(以‘\0’为结束标志)输出到终端。输出的字符串中可以包含转义字符。例如:charstr[]={“China\nBeijing”};

puts(str);

输出:

ChinaBeijing

在输出时系统将字符串结束标志‘\0’转换成‘\n’,即输出完字符串后换行。printf()在输出字符串后光标不换行,而puts()输出字符串后光标回车换行。printf()与puts()的不同:包含在头文件stdio.h专门的标准字符串输入输出函数:gets或puts任务一字符串处理函数【实例】字符串的输出---puts函数示例。#include<stdio.h>main(){charstr[]="boy\ngirl";puts(str);}程序运行结果为:

boygirl专门的标准字符串输入输出函数:gets或puts任务一字符串处理函数

b.字符串输入函数格式:gets(字符数组)功能:从终端输入一个字符串(可包含空格)以回车为输入结束标志,将接收到的字符依次赋值给字符数组各个元素,并自动在字符串末尾加结束标记‘\0’。例如:gets(str);注意:用puts和gets函数只能输入或输出一个字符串,不能写成:puts(str1,str2);或gets(str1,str2);【示例】scanf()在输入字符串时遇空格即结束,也就是说,scanf()只能输入不带空格的字符串。charstr[20];gets(str);将Howareyou?存入数组str中,并自动添加‘\0’。输入:Howareyou?<回车>scanf()与gets()的不同:包含在头文件stdio.h任务一字符串处理函数【实例】字符串的输入---gets函数示例。#include<stdio.h>main(){chars[15];printf("Pleaseinputastring:\n");gets(s);puts(s);}程序运行结果为:

Pleaseinputastring:Howareyou?<回车>Howareyou?专门的标准字符串输入输出函数:gets或puts技能实训[1]输出一个已知的字符串:要求:定义一个字符数组,并用“初始化列表”对其赋以初值用循环逐个输出此字符数组中的字符练一练技能实训任务六1.输出一个已知的字符串技能实训任务六#include<stdio.h>intmain(){charc[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};inti;for(i=0;i<15;i++)printf("%c",c[i]);printf("\n");return0;}技能实训[2]输出字符数组中的元素。运行结果:CLangProgramFunny练一练技能实训任务二技能实训2.输出字符数组中的元素。练一练技能实训任务二#include<stdio.h>intmain(){inti,j;chara[][7]={{'C','','L','a','n','g'},{'P','r','o','g','r','a','m'},{'F','u','n','n','y'}};for(i=0;i<=2;i++){for(j=0;j<=6;j++){printf("%c",a[i][j]);}printf("\n");}return0;}学习总结答一答任务六学习总结[1]对于字符串的输入,我们可以使用scanf()函数或gets()函数来实现;[2]但是在输入包含空格的字符串时,使用gets()函数更方便。感谢观看!批量数据的处理第七讲字符串处理函数C语言程序设计任务驱动式教程问题导入字符数组常见的字符串处理函数有哪些呢?任务七字符串处理函数包含在头文件string.h常见的字符串处理函数charstr1[13]=“Hello“;charstr2[7]=“World!“;printf(“%s”,strcat(str1,str2));HelloWorld!①字符数组str1的最小长度应为:“len1+len2+1”。②原字符串1后面的‘\0’取消,在新字符串1的末尾增加一个‘\0’。【示例】字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’任务七字符串处理函数【实例

】strcat函数示例。

#include<string.h>main(){chars1[20]="Youare";chars2[]="astudent.";strcat(s1,s2);puts(s1);}程序运行结果为:

Youareastudent.任务七字符串处理函数包含在头文件string.h常见的字符串处理函数charstr1[6]=“happy“;charstr2[6]=“day“;printf(“%s”,strcpy(str1,str2));day字符数组1的长度不应小于字符串2的长度。【示例】字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大拷贝时‘\0’一同拷贝

不能使用赋值语句为一个字符数组赋值任务七字符串处理函数【实例

】strcpy函数示例。

#include<string.h>main(){chars1[15],s2[]="CLanguage";strcpy(s1,s2);puts(s1);}程序运行结果为:

CLanguage任务七字符串处理函数不能用赋值运算符“=”来实现将一个字符串常量或字符数组直接赋给一个字符数组。charstr1[6],str2[6];str1=”Hello”;

/*赋值错误*/str2=str1;

/*赋值错误*/charstr1[6],str2[6];strcpy(str1,”Hello”);strcpy(str2,str1);【说明】任务七字符串处理函数包含在头文件string.h常见的字符串处理函数【示例】charstr1[6]=“happy“;charstr2[4]=“day“;printf(“%d”,strcmp(str1,str2));1字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止返值:返回int型整数,a.若字符串1<

字符串2,返回负整数

b.若字符串1>

字符串2,返回正整数

c.若字符串1==字符串2,返回零说明:字符串比较不能用“==”,必须用strcmp任务七字符串处理函数【实例】strcmp函数示例。#include<string.h>main(){intk;staticcharstr1[15],str2[]="CLanguage";printf("inputastring:\n");gets(str1);k=strcmp(str1,str2);if(k==0)printf("str1=str2\n");if(k>0)printf("str1>str2\n");if(k<0)printf("str1<str2\n");}若输入CProgram输出结果为str1>str2任务七字符串处理函数不能直接用关系运算符“>,>=,<,<=”来实现将两个字符串的大小的比较。charstr1[6],str2[6];if(str1<str2)

/*赋值错误*/…… charstr1[6],str2[6];if(strcmp(str1,str2)>0) ……【说明】任务七字符串处理函数包含在头文件string.h常见的字符串处理函数charstr[10]=“happy”;printf(“%d”,strlen(str));可以直接测试字符串常量的长度:strlen(“happy”);5【示例】字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括‘\0’在内任务七字符串处理函数例对于以下字符串,strlen(s)的值为:(1)chars[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};(2)chars[]=“\t\v\\\0will\n”;(3)chars[]=“\x69\082\n”;

答案:131【实例

】】strlen函数示例。

#include<string.h>main(){intn;charstr[10]={"china"};n=strlen(str);printf("Thelenthofthestringis%d\n",n);}程序运行结果为:

Thelenthofthestringis5【示例】任务七字符串处理函数5

温馨提示

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

评论

0/150

提交评论