三、字符串类型

目录

1.ASCII码值

(1)字符串的遍历

(2)字符串的结束标志        '\0'

(3)字符串函数

2.字符字母的判定与统计

3.字母的大小写转换

4.数字字符的判定与统计

5.数字字符转化为对应数字

6.字符串中字符的删除

(3)删除*号

7.字符串中字符的移动

8.字符串中查找子串

9.字符串的回文判断与逆置

 (1)回文:顺读和倒读都一样的字符串

(2)逆置

10.复制字符串

11.字符串数组

(1)字符串的连接

(2)字符串的长度


1.ASCII码值

'A'-----65

'a'-----97

'0'-----48

(1)字符串的遍历

(1)while(*s) s++;

(2)for(i=0;s[i]!='\0';i++)

(2)字符串的结束标志        '\0'

(3)字符串函数

strlen()                    字符串长度

strcopy(s1,s2)        将s2复制到s1中

strcmp(s1,s2)         比较

strcat(s1,s2)           连接

2.字符字母的判定与统计

//统计a-z各自出现的次数
void fun(char *tt,int pp[])
{
    int i;
    for(i=0;i<26;i++)
        pp[i]=0;
    while(*tt)
    {
        if(*tt>='a'&& *tt<='z')
        {
            pp[*tt-'a']++;
        }
        tt++;
    }
}

3.字母的大小写转换

//将下标为奇数位上的字母转换为大写字母
void fun(char *ss)
{
    int i;
    for(i=0;ss[i]!='\0';i++)
    {
        if((i%2==1)&&(ss[i]>='a'&&s[i]<='z'))
        {
            ss[i]=ss[i]-32;
        }
    }
}

4.数字字符的判定与统计

//统计数字字符的个数
int fun(char *s)
{
    int i,count=0;
    for(i=0;s[i]!='\0';i++)
        if(s[i]>='0'&&s[i]<='9')
            count++;
    return count;
}

5.数字字符转化为对应数字

long fun(char *s)
{
    long t=0;
    int len=0;
    len=strlen(s);
    int i,d=0;
    for(i=0;i<len;i++)
    {
        d=s[i]-'0';
        t=t*10+d;
    }
    return t;
}

6.字符串中字符的删除

(1)将后边的数据覆盖点前边的数据

s[i]=s[i+1]

(2)不包含要删除的数字

s[i]!=key

s[j++]=s[i]

//只保留下标为奇数,同时ASCII码值为奇数的字符
void fun(char *s,char t[])
{
    int i,j=0,len;
    len=strlen(s);
    for(i=0;i<len;i++)
    {
        if(i%2==1&&s[i]%2==1)
        {
            t[j++]=s[i];
        }
    }
    t[j]='\0';
}

(3)删除*号

//删除字符串后边*号
//输入****A*BC*DEF*G*******,n=4;输出****A*BC*DEF*G****
void fun(char *a,int n)
{
    char *p=a;//要移动的指针
    int k=0;//统计字符串后边*号的个数
    while(*p) p++;
    p--;//指向有效地字符 G
    while(*p=='*')
    {
        k++;
        p--;//倒着统计
    }
    if(k>n) *(p+n+1)='\0';   
}
//删除前边的
void  fun( char *a, int  n )
{
  int i=0;
  int k=0;
  char *p,*t;
  p=t=a;
  while(*t=='*')
  {k++;t++;}
  if(k>n)
  {
    while(*p)
      {
        a[i]=*(p+k-n);
        i++;
        p++;
      }
  a[i]='\0';
  }
}
//删除中间的*
void  fun( char *a, char *h,char *p )
{
    int i=0; 
    char *q=a; 
    while(q<h) 
    {
        a[i]=*q; 
        q++;
        i++;
    } 
    while(q<p) 
    {
        if(*q!='*') 
        {
            a[i]=*q; 
             i++;
        } 
         q++;
    } 
    while(*q) 
    {
        a[i]=*q; 
        i++; 
        q++;
    } 
    a[i]='\0';
}

//只删除前导和尾部的*号
//n为字符串的长度;h为前导*号的个数;e为尾部*号的个数
void fun(char *a,int n,int h,int e)
{
    int i,j=0;
    for(i=h;i<n-e;j++)
        a[j++]=a[i];
    a[j]='\0';    
}

7.字符串中字符的移动

//把1-m个字符平移到字符串的最后,把m+1的最后的字符移动到字符串的前部
//输入ABCDEFGHIJK,m=3;输出DEFGHIJKABC
void fun(char *w,int m)
{
    int i,j;
    char t;
    for(i=1;i<=m;i++)
    {
        t=w[0];
        for(j=1;w[j]!='\0';j++)
        {
            w[j-1]=w[j];
        }
        w[j-1]=t;
    }   
}

8.字符串中查找子串

9.字符串的回文判断与逆置

 (1)回文:顺读和倒读都一样的字符串

int fun(char *str)
{
    char *p=str;
    int flag=0;
    while(*p) p++; p--;
    while(str<=p)
    {
        if(*str==*p)
        {
            str++;
            p--;
        }
        else
        break;
    }
    if(str>=p) flag=1;
    return flag;
}

(2)逆置

void fun(char *s)
{
    char *p=s,t;
    while(*p) p++;
    p--;
    while(s<=p)
    {
        t=*s;
        *s=*p;
        *p=t;
        s++;
        p--;
    }
}

10.复制字符串

void fun(char *a, char *s)
{
    int i;
    for(i=0;s[i]!='\0';i++)
    {
        a[i]=s[i];
    }
    a[i]='\0';
}

11.字符串数组

(1)字符串的连接

void fun(char a[M][N],char *b)
{
    int i,j,k;
    for(i=0;i<M;i++)
    {
        for(j=0;a[i][j]!='\0';j++)
        b[k++]=a[i][j];
    }
    b[k]='\0';
}

(2)字符串的长度

char *fun(char (*a)[81],int num,char *max)
{
    int i;
    max=a[0];
    for(i=0;i<num;i++)
    {
        if(strlen(max)<strlen(a[i]))
        max=a[i];
    }    
    return max; 
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊不胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值