小白教程

 找回密码
 立即注册
查看: 5961|回复: 3

[已解决]C语言新手上路,大佬帮帮忙呗

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2021-3-9 21:20:29 | 显示全部楼层 |阅读模式
编写一个函数,把字符串中的数字字符、英文字母字符和其它字符分开。如对于字符串“12a:?3b*yu98!”,将其分解为三个独立的字符串“12398”、“abyu”和“:?*!”。要求以指针作为函数参数,主函数输入原字符串,分解后的三个字符串在主函数打印输出。
最佳答案
2021-3-25 01:45:27
代码仅供参考
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char s[256],a[100],b[100],c[100];
  5.     int i,j,k,l,n;
  6.     scanf("%s",s);
  7.     i=j=k=l=0;
  8.     while(s[i]!='\0')
  9.     {
  10.         if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
  11.         {
  12.             a[j++]=s[i];
  13.         }
  14.         else if(s[i]>='0'&&s[i]<='9')
  15.         {
  16.             b[k++]=s[i];
  17.         }
  18.         else
  19.         {
  20.             c[l++]=s[i];
  21.         }
  22.         i++;
  23.     }
  24.     a[j]=b[k]=c[l]='\0';
  25.     printf("%s\n%s\n%s\n",a,b,c);
  26.     return 0;
  27. }
复制代码
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-3-17 21:55:39 | 显示全部楼层
思路:判断输入的字符的ascii,如果是a-z或者A-Z弄到一个数组,0-9弄到另一个数组,其他弄到第三个数组,然后打印
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-3-25 01:45:27 | 显示全部楼层 &
代码仅供参考
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char s[256],a[100],b[100],c[100];
  5.     int i,j,k,l,n;
  6.     scanf("%s",s);
  7.     i=j=k=l=0;
  8.     while(s[i]!='\0')
  9.     {
  10.         if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
  11.         {
  12.             a[j++]=s[i];
  13.         }
  14.         else if(s[i]>='0'&&s[i]<='9')
  15.         {
  16.             b[k++]=s[i];
  17.         }
  18.         else
  19.         {
  20.             c[l++]=s[i];
  21.         }
  22.         i++;
  23.     }
  24.     a[j]=b[k]=c[l]='\0';
  25.     printf("%s\n%s\n%s\n",a,b,c);
  26.     return 0;
  27. }
复制代码
回复

使用道具 举报

1

主题

2

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-4-17 18:58:34 | 显示全部楼层
  1. #include<stdio.h>
  2. #include <ctype.h>

  3. enum type {
  4.     DIGIT,
  5.     ALPHA,
  6.     OTHER
  7. };

  8. char *get_substr(char *str, char *substr, int op);

  9. int main()
  10. {
  11.     char str[128], substr[128];

  12.     scanf("%s", str);

  13.     printf("%s\n", get_substr(str, substr, DIGIT));
  14.     printf("%s\n", get_substr(str, substr, ALPHA));
  15.     printf("%s\n", get_substr(str, substr, OTHER));

  16.     return 0;
  17. }

  18. char *get_substr(char *str, char *substr, int op)
  19. {
  20.     char *tmp = substr;
  21.     switch (op) {
  22.         case DIGIT:
  23.             while (*str) {
  24.                 if (isdigit(*str))
  25.                     *tmp++ = *str++;
  26.                 else
  27.                     str++;
  28.             }
  29.             break;

  30.         case ALPHA:
  31.             while (*str) {
  32.                 if (isalpha(*str))
  33.                     *tmp++ = *str++;
  34.                 else
  35.                     str++;
  36.             }
  37.             break;

  38.         case OTHER:
  39.             while (*str) {
  40.                 if (isalpha(*str) || isdigit(*str))
  41.                     str++;
  42.                 else
  43.                     *tmp++ = *str++;
  44.             }
  45.             break;
  46.     }
  47.     *tmp = 0;

  48.     return substr;
  49. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 12:32 , Processed in 0.028529 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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