strlen、strcmp、strcpy、strcat、二维数组以及算法在字符串中如何运用——day10

strlen、strcmp、strcpy、strcat、二维数组以及算法在字符串中如何运用——day10

strlen

strcpy --相当于字符串间 赋值 
size_t strlen(const char *s);
 功能:
 	 获取字符串长度
 参数:
     s
 返回值:
   	 数值,代表该字符串的有效长度
eg:
	char s[20] = "hello";
	有效长度为5

strcmp

int strcmp(const char *s1, const char *s2);
 功能:
     比较两个字符串 
 参数:
    s1 
	s2 
	  表示两个字符串 
 返回值:
    >0    s1 > s2
	==0   s1 == s2 
	<0    s1 < s2 
	
	返回值,实际上是,结束位置上字符的差值
eg:
	char s[20] = "hello";
	char s2[20] = "world";
	printf("%d\n",strcmp(s,s2));
	结果:-15

strcpy

char *strcpy(char *dest, const char *src);
 功能:
     字符串复制 
 参数:
     @dest  目标字符串 
     @src   源字符串 
 返回值:
     src字符串复制给dest
eg:
	char s[20] = "hello";
	char s2[20];
	strcpy(s2,s);
	printf("%s\n",s2);
	输出:hello

strcat

char *strcat(char *dest, const char *src); 
   功能:
      字符串拼接 
   参数:
      @dest  目标字符串 
	  @src   源字符串 
  返回值:
     成功 返回的是dest 
	 失败 NULL
eg:
	char s[20] = "hello";
	char s2[20] = "world";
	strcat(s2,s);
	printf("%s\n",s2);
	输出:worldhello

二维数组

二维数组:
	二维数组定义的一般形式为:
类型说明符 数组名[常量表达式][常量表达式];

总结:
1.C语言中,不存在真正的二维数组,只有一维数组 
2.二维数组本质,是一维数组的一维数组

二维数组初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//全部初始化 
int a[3][4] = {1,2,3,4,5,6,7};//部分初始化 
int a[3][4] = {{1,2,3,4},{5,6,7,8}}; //按行初始化 

如何在字符串数组中使用冒泡排序

#include
#include

int main(void)
{
	int n,i,j;
	scanf("%d",&n);
	char s[n][20];
	char temp[20];

	getchar();
	
	for(i = 0;i < n;++i)
	{
		gets(s[i]);
	}

	for(i = 1;i < n;++i)
	{
		for(j = 0;j < n - i;++j)
		{
			if(strcmp(s[j],s[j+1]) < 0)
			{
				strcpy(temp,s[j]);
				strcpy(s[j],s[j+1]);
				strcpy(s[j+1],temp);

			}
		}
	}

	for(i = 0;i < n;++i)
	{
		puts(s[i]);
	}

	return 0;
}

如何在字符串数组中使用插入排序后再进行二分查找

#include
#include

int main(void)
{
	int n,i,j,mid;
	scanf("%d",&n);
	char s[n][20];
	char temp[20];

	getchar();
	
	for(i = 0;i < n;++i)
	{
		gets(s[i]);
	}
	int begin = 0;
	int end = n;

	for(i = 0;i < n;++i)
	{
		strcpy(temp,s[i]);
		while(strcmp(temp,s[i-1]) < 0 && i > 0)
		{
			strcpy(s[i],s[i-1]);
			--i;
		}
		strcpy(s[i],temp);
	}
	
	printf("Which string to look for:");
	gets(temp);

	for(i = 0;i < n;++i)
	{
		mid = (begin + end) / 2;
		if(strcmp(temp,s[mid]) > 0)
		{
			begin = mid + 1;
		}else if(strcmp(temp,s[mid]) < 0)
		{
			end = mid - 1;
		}else
		{
			break;
		}
	}

	if(begin <= end)
	{
		printf("找到了!\n");
	}else
	{
		printf("Not find!\n");
	}
	return 0;
}

你可能感兴趣的:(学习,算法)