• 字符串练习题


    什么是字符串?
    以结尾的字符数组
    只要是字符串操作我们就找字符串结尾

    标准的字符串操作函数

    char* strcpy_s(char*,const char*)
    把第二个参数复制到第一个参数中

    char* strncpy(char*,const char*,size_t)
    第三个参数说明要复制几个到第一个参数中

    char* strcat(char*,const char*)
    把第二个参数连接到第一个参数的后面

    char* strncat(char*,const char*,size_t)
    第三个参数说明要连接几个到第一个参数后面

    int strcmp(const char*,const char*)
    比较两个字符串是否相等
    返回值 1 0 -1

    int strncmp(const char*,const char*,size_t)
    第三个参数说明要比较几个字符

    练习题:

    1.查找一个字符在另外一个字符串中第一次出现的下标
    2.查找一个字符在另外一个字符串中第一次出现的地址
    3.查找一个字符串在另外一个字符串中第一次出现的地址  abcccccde ccd

     1 #include <stdio.h>
     2 
     3 int Index(char *str, char a);
     4 char* Address(char *str, char a);
     5 char* Find(char* str1, char* str2);
     6 int main()
     7 {
     8     char *str1 = "abcccde";
     9     char *str2 = "ccd";
    10     char a = 'c';
    11     printf("%s
    " , Find(str1 , str2)); //一个字符串在另外一个字符串中第一次出现的地址
    12     printf("%d
    " , Index(str1 , a));//一个字符在另外一个字符串中第一次出现的下标
    13     printf("%d
    " , &str1[Index(str1 , a)]); //一个字符在另外一个字符串中第一次出现的地址
    14     printf("%d
    " , Address(str1, a));  //一个字符在另外一个字符串中第一次出现的地址
    15 }
    16 int Index(char *str, char a)
    17 {
    18     int index = 0;
    19     while(*str != '')
    20     {
    21         if(str[index] == a)
    22         {
    23             return index;
    24         }
    25         index++;
    26     }
    27     return 0;
    28 }
    29 char* Address(char *str, char a)
    30 {
    31     while(*str != '')
    32     {
    33         if(*str == a)
    34         {
    35             return str;
    36         }
    37         str++;
    38     }
    39     return NULL;
    40 }
    41 char* Find(char* str1, char* str2)
    42 {
    43     char *flag1 = str1;
    44     char *flag2 = str2;
    45     while(*str1 != '')
    46     {
    47         while(*str1 != *str2)
    48         {
    49             str1++;
    50         }
    51         flag1 = str1;
    52         while(*str1 == *str2)
    53         {
    54             str1++;
    55             str2++;
    56             if(*str2 == '')
    57             {
    58                 return flag1;
    59             }
    60         }
    61         str1 = flag1 +1;
    62         str2 = flag2;
    63     }
    64     return NULL;
    65 }
    查找

    4.统计一个字符串中单词的个数(单词与单词之间是空格分割)"a abc make 89 12 a ma make 12 abc 89"


    5.将一个字符串插入到另一个字符串中  "abcd"  "12345" 3

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 void Inter(char *str1 , char *str2, int index);
     5 int main()
     6 {
     7     char str1[100] = "abcd";
     8     char *str2 = "1234";
     9     int index = 2;
    10     Inter(str1 , str2, index);
    11     printf("%s",str1);
    12 }
    13 void  Inter(char *str1 , char *str2 , int index)
    14 {
    15     
    16     int len2 = strlen(str2);
    17     char *flag = str1 + index; //找到要插入位置
    18     while(*str1 != '')
    19     {
    20         str1++;
    21     }
    22     while(str1 >= flag)    //从后向前,向后移动
    23     {
    24         *(str1 + len2) = *str1;
    25         str1--;
    26     }
    27     while(len2)  //从标记处开始插入
    28     {
    29         *flag = *str2;//或者*(flag++) == *(str2++);
    30         flag++;
    31         str2++;
    32         len2--;
    33     }
    34 }
    插入字符串

    6.翻转字符串

    7.判断是否回文(回文指的是顺读和逆读都一样的字符串)  "abcdcba"

     1 #include <stdio.h>
     2 typedef int BOOL;
     3 #define TRUE 1
     4 #define FALSE 0
     5 
     6 char* Reverse(char *str);
     7 int Echo(char *str);
     8 int main()
     9 {
    10     char str[10] = "abcba";
    11     printf("%s
    ",Reverse(str));
    12     printf("%d
    ",Echo(str));
    13 }
    14 char* Reverse(char *str)
    15 {
    16     char *a = str;
    17     char *b = str;
    18     char c;
    19     while(*b != '')
    20     {
    21         b++;
    22     }
    23     b--;
    24     while(a < b)
    25     {
    26          c = *a;
    27          *a = *b;
    28          *b = c;
    29          a++;
    30          b--;
    31     }
    32     return str;
    33 }
    34 BOOL Echo(char *str)
    35 {
    36     char* a = str;
    37     while(*a != '')
    38     {
    39         a++;
    40     }
    41     a--;
    42     while(*a == *str)
    43     {
    44         str++;
    45         a--;
    46         if(a < str)
    47         {
    48             return TRUE;
    49         }
    50     }
    51     return FALSE;
    52 }
    53 //int Echo(char *str)
    54 //{
    55 //    char *b = Reverse(str);      
    56 //    while(*str == *b)
    57 //    {
    58 //            str++;
    59 //            b++;
    60 //            if(*str == '' && *b =='')
    61 //                return 1;
    62 //    }
    63 //        return 0;
    64 //}
    翻转和回文

    Getstring 函数

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 char* Getstring();
     6 int main()
     7 {
     8     
     9     char* str = Getstring();
    10     printf("%s
    ",str);
    11 
    12     return 0;
    13 }
    14 
    15 char* Getstring()
    16 {
    17     char c;
    18     char* str = (char*)malloc(5);
    19     int count = 0;
    20     char* newStr = NULL;
    21     int size = 5;
    22     char* bj = str;
    23     while((c = getchar()) != '
    ')
    24     {
    25         //1.存储
    26         *str = c;
    27         str++;
    28         count++;
    29         //2.看空间是否够用
    30         if(count+1 == size)
    31         {
    32             //1.申请新的空间
    33             size += 5;
    34             newStr = (char*)malloc(size);
    35             //2.让旧空间里面存的东西变成字符串
    36             *str = '';
    37             //3.拷贝到新的空间里
    38             strcpy_s(newStr,size,bj);
    39             //4.释放旧的空间
    40             free(bj);
    41             bj = newStr;
    42             str = newStr + count;
    43 
    44         }
    45     }
    46 
    47     *str = '';
    48     return bj;
    49 }
    Getstring
  • 相关阅读:
    Django RequestContext用法
    【Django】Django命令(Manager.py)
    Django:快速搭建简单的Blog
    win7下安装Ubuntukylin-14.04双系统
    activity生命周期
    Activity(三)
    BZOJ 3944 Sum 解题报告
    BZOJ 3901 棋盘游戏 解题报告
    web框架之socket
    新式类__new__()方法
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/7723293.html
Copyright © 2020-2023  润新知