字符串操作在很多C语言比赛里面都有涉及,最近公众号里面的C语言比赛,都是两个关于字符串操作的题目,希望大家认真看题目。
直接上代码
/*************************************************************************
> File Name: trim.c
> Author:
> Mail:
> Created Time: Mon 12 Nov 2018 10:16:04 AM CST
************************************************************************/
#include<stdio.h>
/*****************************************************************************
函 数 名 : strtrim
功能描述 : 删除行首、行尾空白符号
输入参数 : char *is
输出参数 : 无
返 回 值 : char *
调用函数 :
被调函数 :
修改历史 :
1.日 期 : 2018年11月12日
作 者 : strtrim
修改内容 : 新生成函数
*****************************************************************************/
char * strtrim(char *s) {
char *p = s;
char *q = s;
//去掉行首的空格
while (*p==' ' || *p=='\t')
while ((p != NULL)&&(q != NULL)&&(*p != '\0')&&(*p != '\0'))
*q++ = *p++;
//删除'\0'字符 注意是 -2 上面q++是先操作再自加
q -= 2;
//去掉行末的空格
while (*q==' ' || *q=='\t')
//给字符串添加字符结束标志
*(q+1) ='\0';
//这里的return s要注意看好
//因为p q经过一系列操作后,已经不是原来的位置,越界了 ,s还在原来位置,所以return s才是正确的。
return s;
/*****************************************************************************
函 数 名 : strtrimc
功能描述 : 删除字符串空白符,包括行首和行尾
输入参数 : char * s
输出参数 : 无
返 回 值 : char *
调用函数 :
被调函数 :
修改历史 :
1.日 期 : 2018年11月12日
作 者 : strtrim
修改内容 : 新生成函数
*****************************************************************************/
char * strtrimc( char * s )
char * p1 = s;
char * p2 = s;
while(*p1 != '\0')
while(*p1 == ' ' || *p1 == '\t')
p1 ++;
* p2 ++ = *p1 ++;
*p2 = '\0';
return (s);
void main(void)
char str[1000] = {" adf asdfasldf jjjjjjjjj iiii "};
char str1[1000] = {" adf asdfasldf jjjjjjjjj iiii "};
puts("Start main.");
printf("%s\n",strtrimc(str));
printf("%s\n",strtrim(str1));
1 常量区
刚开始的时候,我写的是char * s = "adfasdfasdfsf adfasdf adfasdfad ";
然后出现段错误,这里定义的s,保存在的是常量区,所以不能做赋值等操作,大家对字符串操作的时候要特别注意。
2指针的返回值问题
原来我返回的是p1 ,p1 p2 s原来是相等的,但是经过一系列运算后,他们的值已经不相等了,他们的值如上面显示那样,所以返回值一直要返回s。
python 哈希 性能 python可哈希
类型与哈希哈希(散列计算),可以将任意长度的输出,通过散列算法变为固定长度输出,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
1.可哈希类型:
数字类型(int,float,bool)字符串str、元组tuple
注意:int与float类型通过hash计算后还是原来的值,取决于__hash__魔术方法的运算过程
bool:在通过hash运算后为1,0
可以理解为:当
python 公因数 python怎么求公倍数
公约数:亦称“公因数”,它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。公倍数:公倍数是指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数。公倍数中最小的,就称为这些整数的最小公倍数。
常见求法有:质因数分解法、短除法、辗转相除法、更相减损法。