c语言用二维数组处理多个字符串,C语言-第五章、用数组实现批量数据处理

5_1  数组的概念

注:(1)在定义数组时,数组的元素个数(又称数组长度)必须是确定的,即只能是整型常量表达式。

(2)完成数组的定义,引用元素时,下标从0开始计数。

5_2  一维数组

2.1   一维数组的定义

2.2  一维数组的使用

1.   两种方法初始化

(1)在定义数组时同时初始化数组元素

注:①可以只部分元素初始化

②只能给元素逐个赋值,不能整体赋值。

(2)先定义,再初始化:采用循环结构如:

#include

int main()

{

int i,score[10];

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

{

scanf("%d",&score[i]);/*也可以是对元素直接赋值如:score[i]=i+2;*/

}

return 0;

}

2.C语言中只能逐个地引用数组元素,而不能对数组进行整体引用。如:

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

printf("%d",score[i]);/*而不是printf("%d",score);*/

3.删除数组元素

简要分析:功能实现   ①查找定位           ②移动

#include

#define N 10

int main()

{

int a[N]={1,2,3,4,5,6,7,8,9,10},x,i,k,flag=0;

printf("原数组值:");

for(i=0;i

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

printf("输入要删除的元素值:");

scanf("%d",&x);

for(i=0;i

if (a[i]==x) {k=i;flag=1;break;}

if (flag==0) printf("不存在为%d的元素值!\n",x);

else

{

if (k==N-1) a[N-1]=0;

else

{

for (i=k;i

a[i]=a[i+1];

a[i]=0;

}

printf("\n删除元素%d后的数组值:",x);

for(i=0;i

printf("\n");

}

return 0;

}

2.一维数组的排序

【5-4】输入N个整数,将其按升序排列

①冒泡排序法:

#include

#define N 5

int main()

{

int a[N],t,i,j;

printf("请输入%d个数:",N);

for (i=0;i

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

for (i=0;i

for (j=0;j

if (a[j]>a[i])

{

t=a[j];a[j]=a[j+1];a[j+1]=t;

}

printf("升序排列结果如下:\n");

for(i=0;i

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

printf("\n");

return 0;

}

②选择排序法:

#include

#define N 5

int main()

{

int a[N],t,i,j,k;

printf("请输入%d个数:",N);

for (i=0;i

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

for (i=0;i

{ k=i;

for (j=i+1;j

if (a[j]

k=j;

if (k!=i)

{

t=a[k];a[k]=a[i];a[i]=t;

}

}

printf("升序排列结果如下:\n");

for(i=0;i

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

printf("\n");

return 0;

}

2.3.数组中递推的应用

【5-5】利用一维数组,输出斐波拉契数列:1,1,2,3,5,8,13,21,34,55,89……

#include

#define N 20

int main()

{

int a[N]={1,1},i;

for (i=2;i

a[i]=a[i-1]+a[i-2];

for(i=0;i

{

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

if((i+1)%5==0)

printf("\n");

}

return 0;

}

5_3  二维数组

_3-1.二维组的定义

_3-2.二维数组的使用

1.二维数组的初始化

2.二维数组元素的引用

3.二维数组的应用举例

5_4  字符数组

_4-1 字符数组的定义

_4-2 字符数组和字符串

_4-3 字符数组的初始化

①逐一赋值:char str[10]={C',' ','p','r','o','g','r','a','m'};

②字符串赋给指定的数组:char str[10]={"C progaram"}

_4-4.  字符数组的输入输出

1. 用格式符“%c”逐个输入输出数组中的字符

【例5-8】逐个输入/输出数组中的字符

#include

#include

int main()

{

char c[10];

int i;

printf("请输入10个字符:");

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

scanf("%c",&c[i]);

printf("您输入的10个字符为:");

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

printf("%c",c[i]);

printf("\n");

return 0;

}

2. 用格式符“%s”将整个字符串一次输出,遇到‘\0’停止输出(停止后不会自动换行)。

(1)【例5-9】

#include

int main()

{

char c[]="Program";

printf("%s\n",c);

c[4]='\0';

printf("%s\n",c);

return 0;

}

注:数组下标从0开始计数,所以c[4]是第五个数即‘\0’,结束。

(2)用“%s”输出字符时,printf 函数中的输出项为元素的地址如:

char c[]="Program";

printf("%s",&c[1]); /*结果为:rogram*/

(3)  可用scanf输入一个字符串,系统默认以空格作为一个串的输出结束标志如:

char c[20];

scanf("%s",c);

printf("%s",c);

键盘输入:you are a student.

结果为:you

注:如果要输入的字符串中本来就有空格字符,则不能使用格式控制符“%”将整个字符串输入。此时,通常可采用格式符“%c”逐个输入数组中的字符或字符串处理函数gets来接收字符串。

_4-5  常用的字符串处理函数

头文件stdio.h 包含:输入、输出、合并、修改、比较、转换、复制、搜索等几类。

而其他字符串函数应包含头文件“string.h”

1.字符串输出函数puts

2.字符串输入函数gets

#include

int main()

{

char str [15];

printf("请输入一个字符串:");

gets (str)

puts("您输入的字符串如下:");

puts (str);

return 0;

}

①当输入的字符串中含有空格时,输出仍为全部字符串。使用gets函数接受字符串时,只以回车作为结束标       志。这是与scanf函数不同的。

②使用puts函数输出字符串时,其参数可以是字符数组名,也可以是字符串常量。

③puts函数完全可以由printf函数取代,当需要按比较灵活的格式输出时,通常使用printf函数。

3.字符串连接函数strcat

功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,字符串1的串结束标志'\0'自动删去。字符数组名2可以字符串常量。

一般调用格式:strcat(字符数组名1,字符数组名2)如:

#include

#include

{ char str1[30]="This a";

char str2[10]="book";

strcat(str1,str2);

puts(str1)

return 0;

}

4.  字符串复制函数strcpy

功能:把字符数组2中的字符串复制到字符数组1中。串结束标志'\0'也一同拷贝。"字符数组名2"可以字符串常量。

格式:strcpy(字符数组名1,字符数组名2)

#include

#include

int main()

{

char str1[15],str2[]="C Language";

strcpy (str1,str2);

puts(str1);

return 0;

}

5.  字符串比较函数strcmp

功能:两个数组(字符串)按照ASC‖码顺次比较,并由函数返回值比较结果。

字符串1=字符串2,函数返回0值;

字符串1>字符串2,函数返回>0值

字符串1

格式:strcmp (字符数组名1,字符数组名2)

6.求字符串长度的函数strlen

功能:测出字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值

格式:strlen(字符数组名)

5_5  数组的应用举例

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值