目录
6-1 字符串的长度
C 语言标准函数库中包括 strlen 函数,用于计算字符串的长度。作为练习,我们自己编写一个功能与之相同的函数。
函数原型
int StrLen(const char *str);
说明:str 为串的起始地址,从该地址开始连续存储串中的字符,并以字符 '\0' 作为结束标记。函数值为串的长度,即串中字符(不包括结束标记)的总数。
裁判程序
#include <stdio.h>
int StrLen(const char *str);
int main()
{
char s[1024];
int n;
gets(s);
n = StrLen(s);
printf("%d\n", n);
return 0;
}
/* 你提交的代码将被嵌在这里 */
输入样例:
abcd
输出样例:
4
int StrLen(const char *str)
{
int k = 0;
for(int i = 0; str[i] != '\0'; i++)
{
k++;
}
return k;
}
6-2 字符串的联接(复合加赋值)
C语言标准函数库中包括 strcat 函数,用于字符串联接(复合加赋值)。作为练习,我们自己编写一个功能与之相同的函数。
函数原型
char* StrCat(char *dst, const char *src);
char* StrCat(char *dst, const char *src);
说明:src 为源串的起始地址,dst 为目的串起始地址。函数将 src 串添加到 dst 串末尾,函数值为 dst。
裁判程序
#include <stdio.h>
#include <string.h>
......
char* StrCat(char *dst, const char *src);
int main()
{
char a[1024], b[1024], c[1024];
gets(a);
gets(b);
gets(c);
StrCat(a, StrCat(b, c));
puts(a);
puts(b);
puts(c);
return 0;
}
......
/* 你提交的代码将被嵌在这里 */
输入样例:
abc
de
f
输出样例:
abcdef
def
f
int StrLen(const char *str)
{
int k = 0;
for(int i = 0; str[i] != '\0'; i++) // C语言字符串最后一个字符就是'\0' 所以到了这里就可以终止了
{
k++;
}
return k;
}
6-3 字符串的比较
C 语言标准函数库中包括 strcmp 函数,用于字符串的比较。作为练习,我们自己编写一个功能与之相同的函数。
函数原型
int StrCmp(const char *str1, const char *str2);
说明:str1 和 str2 分别为两个字符串的起始地址。按字典排序法,若 str1 串值大于 str2,则函数值为正整数;若 str1 串值小于 str2,则函数值为负整数;若 str1 串值与 str2 相等,则函数值为零。
裁判程序
#include <stdio.h>
......
int StrCmp(const char *str1, const char *str2);
int main()
{
char a[1024], b[1024];
int r;
gets(a);
gets(b);
r = StrCmp(a, b);
if (r > 0)
{
puts("a > b");
}
else if (r < 0)
{
puts("a < b");
}
else // r == 0
{
puts("a == b");
}
return 0;
}
......
/* 你提交的代码将被嵌在这里 */
输入样例1:
stock
stack
输出样例1:
a > b
输入样例2:
be
bed
输出样例2:
a < b
输入样例3:
heart
heart
输出样例3:
a == b
int StrCmp(const char *str1, const char *str2)
{
int flag = 1;
int k;
while (*str1 == *str2 && flag == 1)
// flag用于记录是否要退出循环 首先是比较两个字符串相同的部分
{
if(*str1 == '\0') // 当字符串遍历完了之后 flag=0然后跳出循环
{
k = 0;
flag = 0;
}
else
{
str1++;
str2++;
}
}
if(*str1 != *str2) // 最后比较不同的部分 部分部分的字符编码谁大一些
{
k = *str1 - *str2;
}
return k;
}