飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2569|回复: 0

[C/C++] 19课 字符串查找及大小写转换作业

[复制链接]
  • TA的每日心情
    开心
    2024-3-7 15:25
  • 签到天数: 442 天

    [LV.9]以坛为家II

    发表于 2011-1-17 09:13:53 | 显示全部楼层 |阅读模式
    本帖最后由 sdnyzjzx 于 2011-1-17 09:18 编辑

    现在有点越学越模糊的感觉了,记录一下字符串操作的代码,敬请批评指正。
    1. #define total 30
    2. char c;

    3. _csh(char *p,char *a)
    4. {
    5. int i=0;
    6.         for(i=0;i < total;i++)
    7.         {
    8.         *(p+i)=0;
    9.         }
    10.         for(i=0;i<10;i++)
    11.         {
    12.         *(a+i)=0;
    13.         }
    14. }

    15. _len(char *p)
    16. {
    17. int i=0;
    18.         while(*(p+i))
    19.         {
    20.         i++;
    21.         }
    22. return(i);
    23. }

    24. _show(char *p,int n)
    25. {
    26. int i=0;
    27.         for(i=0;i<n;i++)
    28.         {
    29.         printf("%c",*(p+i));
    30.         }
    31.         printf("\n");
    32. }

    33. _find1(char *p)
    34. {
    35. int i=0,j=0;
    36. printf("\n");
    37.         while(*(p+i))
    38.         {
    39.                 if(c==*(p+i))
    40.                 {
    41.                 printf("No.%d ",i+1);
    42.                 j++;
    43.                 }
    44.                 i++;
    45.         }
    46.         if(j==0)
    47.         {
    48.         printf("There are not any char what you find !\n");
    49.         }
    50.         else
    51.         {
    52.         printf("is char '%c'.\n",c);
    53.         printf("There are %d '%c' in the string.\n\n",j,c);
    54.         }
    55. }

    56. _find2(char *p,char *a,int s)
    57. {
    58.         int k=0,m=0,j=0,i=0;
    59.            m=_len(a);

    60.             for(i=0;i<s-m;i++)       
    61.             {
    62.                     if(*a == *(p+i))
    63.                     {
    64.                     k++;
    65.                             while(*(a+k) == *(p+i+k))
    66.                             {
    67.                                     if(k == m-1)
    68.                                     {
    69.                                     j++;
    70.                                     printf("No.%d  ",i+1);
    71.                                     break;
    72.                                     }
    73.                                     k++;
    74.                             }
    75.                     }
    76.                         else
    77.                         {
    78.                                 k=0;
    79.                         }
    80.             }
    81.         if(j==0)
    82.         {
    83.         printf("There are not any string what you find !\n");
    84.         }
    85.         else
    86.         {
    87.         printf("is the string what you find : '");
    88.         for(i=0;i<m;i++)
    89.         {
    90.         printf("%c",*(a+i));
    91.         }
    92.         printf("'\n");
    93.         printf("There are %d  in the string.\n",j);
    94.         }
    95. }

    96. _Stob(char *p)
    97. {
    98. int i=0;
    99.         while(*(p+i))
    100.             {
    101.                     if( *(p+i)>='a' && *(p+i)<='z' )
    102.                     {
    103.                     *(p+i) &= 0x0df;
    104.                     }
    105.                     i++;
    106.             }       
    107. }
    108.    
    109. _Btos(char *p)
    110. {
    111. int i=0;
    112.         while(*(p+i))
    113.             {
    114.                     if( *(p+i)>='A' && *(p+i)<='Z' )
    115.                     {
    116.                     *(p+i) |= 0x20;
    117.                     }
    118.                      i++;
    119.             }
    120. }
    121.       
    122. main()
    123. {
    124. char *p = (char *)malloc( 30 * sizeof(char));
    125. char a[10];
    126. int s1=0,s2=0,s=0;
    127. _csh(p,a);

    128. clrscr();

    129. /* 输入字符串1 */
    130. printf("Please input string1 : ");
    131. scanf("%30s",p);
    132. s1 = _len(p);
    133. printf("String1 is : ");
    134. _show(p,s1);
    135. printf("String1 lenth is : %d\n",s1);
    136. printf("\n");

    137. /* 输入字符串1 */
    138. printf("Please input string2 : ");
    139. scanf("%30s",p+s1);
    140. s2=_len(p);
    141. printf("String2 is : ");
    142. _show(p+s1,s2-s1);
    143. printf("String2 lenth is : %d\n",s2-s1);
    144. printf("\n");

    145. /* 两个字符串长度和不大于总长度打印输出其和,否则输出第一个字符串 */
    146.         if(s2>total)
    147.         {
    148.         printf("Your input is too long !\n");
    149.         s=s1;
    150.         }
    151.         else
    152.         {
    153.         s=s2;
    154.         }

    155. printf("String result is : ");
    156. _show(p,s);
    157. printf("String result lenth is : %d\n",s);
    158. printf("\n");

    159. /* 查找一个字符 */
    160. printf("Please input a char what you want to find : ");
    161. c=getch();
    162. printf("%c",c);
    163. _find1(p);

    164. /* 查找一个字符串 */
    165. printf("Please input a string what you want to find : ");
    166. scanf("%10s",a);;
    167. _find2(p,a,s);

    168.    
    169. /*  小写变大写 */
    170. printf("\n");
    171. printf("Small to Big is : ");
    172. _Stob(p);
    173. _show(p,s);

    174. /*  大写变小写 */
    175. printf("\n");
    176. printf("Big to Small is : ");
    177. _Btos(p);
    178. _show(p,s);

    179. free(p);
    180. }
    复制代码
    str.jpg
    str2.jpg
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表