嵌入式学习之路 10 (C语言基础学习——二维字符型数组)

二维字符型数组可以存放多个字符串,可以批量操作字符串。

定义一个二维字符型数组:

char a[5][10];

 这里定义了一个5行10列的二维字符型数组,表示可以存放5个长度小于10的字符串,一行存放一个字符串。(定义几行就表示能存几个字符串,几列就表示能存多长的字符串)

gets(a[0]);   

a[ 0 ]就是第0行的首地址,这里表示从键盘输入一个字符串到这个二维字符型数组的第0行。

二位字符型数组:
#include <stdio.h>

int main()
{
	char a[5][10];

	int i;

	for ( i=0; i<5; i++ )
	{
		gets(a[i]);
	}

	for ( i=0; i<5; i++ )
	{
		printf("a[%d] = %s\n",i,a[i]);
	}

	return 0;
}

输入:
qian
ru
shi
xue
xi

输出:
a[0] = qian
a[1] = ru
a[2] = shi
a[4] = xue
a[5] = xi

找出最大的字符串:

#include <stdio.h>
#include <string.h>

int main()
{
	char a[5][10];
	char max[10];

	int i,j;

	for ( i=0; i<5; i++ )
	{
		gets(a[i]);
	}

	printf("\n");
	
	//找出最大的字符串
	strcpy(max,a[0]);
	for ( i=0; i<5; i++)
	{
			if( strcmp(a[i],max) > 0)
			{
				strcpy(max,a[i]);
			}
	}

	puts(max);

    return 0;
}

输入:
aa
bb
cc
dd
ee

输出:
ee

用插入排序给字符串从小到大排序:

#include <stdio.h>
#include <string.h>

int main()
{
	char a[5][10];
	char temp[10];


	int i,j;

	for ( i=0; i<5; i++ )
	{
		gets(a[i]);
	}

	printf("\n");

	//插入排序
	for( i=1; i<5; i++)
	{
		strcpy(temp,a[i]);
		j=i;
		while (j>0 && strcmp(temp,a[j-1])<0)
		{
			strcpy(a[j],a[j-1]);
			j--;
		}
		strcpy(a[j],temp);
	}

	for ( i=0; i<5; i++)
	{
		puts(a[i]);
	}

	return 0;
}

输入:
b
e
d
a
c

输出:
a
b
c
d
e

用二分查找,找出对应字符串:

#include <stdio.h>
#include <string.h>

int main()
{
	char a[5][10];
	char temp[10];


	int i,j;

	for ( i=0; i<5; i++ )
	{
		gets(a[i]);
	}

	printf("\n");

	//插入排序
	for( i=1; i<5; i++)
	{
		strcpy(temp,a[i]);
		j=i;
		while (j>0 && strcmp(temp,a[j-1])<0)
		{
			strcpy(a[j],a[j-1]);
			j--;
		}
		strcpy(a[j],temp);
	}

	//二分查找
	int begin,mid,end;
	begin = 0;
	end = 5-1;
	
	char m[10];
	printf("m = ");
	gets(m);

	while ( begin <= end )
	{
		mid = ( begin + end )/2;

		if( strcmp(m,a[mid])<0 )
		{
			end = mid - 1;
		}
		else if ( strcmp(a[mid],m)<0)
		{
			begin = mid + 1;
		}
		else
		{
			break;
		}
	}

	if ( begin <= end )
		printf("found!\n");
	else
		printf("no found!\n");

	for ( i=0; i<5; i++)
	{
		puts(a[i]);
	}

	return 0;
}

输入:
aa
bb
cc
dd
ee

输入要找的字符串m:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值