阁老 发表于 2021-3-9 21:20:29

C语言新手上路,大佬帮帮忙呗

编写一个函数,把字符串中的数字字符、英文字母字符和其它字符分开。如对于字符串“12a:?3b*yu98!”,将其分解为三个独立的字符串“12398”、“abyu”和“:?*!”。要求以指针作为函数参数,主函数输入原字符串,分解后的三个字符串在主函数打印输出。

记忆的声音 发表于 2021-3-17 21:55:39

思路:判断输入的字符的ascii,如果是a-z或者A-Z弄到一个数组,0-9弄到另一个数组,其他弄到第三个数组,然后打印

深谷看云飞 发表于 2021-3-25 01:45:27

代码仅供参考
#include<stdio.h>
int main()
{
    char s,a,b,c;
    int i,j,k,l,n;
    scanf("%s",s);
    i=j=k=l=0;
    while(s!='\0')
    {
      if((s>='a'&&s<='z')||(s>='A'&&s<='Z'))
      {
            a=s;
      }
      else if(s>='0'&&s<='9')
      {
            b=s;
      }
      else
      {
            c=s;
      }
      i++;
    }
    a=b=c='\0';
    printf("%s\n%s\n%s\n",a,b,c);
    return 0;
}

清香 发表于 2021-4-17 18:58:34

#include<stdio.h>
#include <ctype.h>

enum type {
    DIGIT,
    ALPHA,
    OTHER
};

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

int main()
{
    char str, substr;

    scanf("%s", str);

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

    return 0;
}

char *get_substr(char *str, char *substr, int op)
{
    char *tmp = substr;
    switch (op) {
      case DIGIT:
            while (*str) {
                if (isdigit(*str))
                  *tmp++ = *str++;
                else
                  str++;
            }
            break;

      case ALPHA:
            while (*str) {
                if (isalpha(*str))
                  *tmp++ = *str++;
                else
                  str++;
            }
            break;

      case OTHER:
            while (*str) {
                if (isalpha(*str) || isdigit(*str))
                  str++;
                else
                  *tmp++ = *str++;
            }
            break;
    }
    *tmp = 0;

    return substr;
}
页: [1]
查看完整版本: C语言新手上路,大佬帮帮忙呗