C语言按字符串处理字符数组

1、定义大小都为100的5个字符数组s、s1、s2、s3和s4,按字符串方式将字符数组s初始化为“Hello WoRlD!”;将s1、s2、s3和s4均初始化为’\0’。

2、使用scanf函数和%s格式从键盘向字符数组s1中输入一串由字母、数字符号混合组成的文字串。运用while循环或for循环语句以及字符串结束标志’\0’,判断s1中各字符,将其中的数字字符依次保存到数组s2中,将非数字字符保存到s3中。按字符串方式(使用%s格式)输出s1,使用函数puts输出s2和s3,要求每个字符串输出在不同的行。

3、使用scanf函数、%c格式和循环语句从键盘给s4读入一串字符,读入#后结束输入。然后for循环语句、使用printf语句、%c输出读入s4中的所有字符,换行后使用puts输出s4。(注意键盘输入后有字符串结束标志,输出时也用该结束标志)

4、使用函数strcpy,将s4拷贝到s,用%s格式输出s,换行后用puts函数输出s4。

按以上要求编写程序。

代码如下,如有帮助,请帮忙采纳一下,谢谢。

#include <stdio.h>
#include <string.h>
int main()
{
    //1
    char s[100]= "Hello WoRlD!";
    char s1[100]={0},s2[100]={0},s3[100]={0},s4[100]={0};
    int i=0,j,sz=0,ot=0;
    //2
    scanf("%s",s1);
    getchar(); //接收此处的回车符
    while(s1[i]!= '\0')
    {
        if(s1[i]>='0' && s1[i]<='9')
            s2[sz++] = s1[i];
        else
            s3[ot++] = s1[i];
        i++;
    }
    
    printf("%s\n",s1);
    puts(s2);
    puts(s3);
    //3
    i=0;
    while(1)
    {
        scanf("%c",&s4[i]);
        if(s4[i] == '#')
        {
            s4[i]= 0;
            break;
        }
        i++;
    }
    for(j=0;j<i;j++)
        printf("%c",s4[i]);
    printf("\n");

    puts(s4);

    //4
    strcpy(s,s4);
    printf("%s\n",s);
    puts(s4);

    return 0;
}

步骤也出来了,程序主要功能也不要你写,跟着题目写语句还不自己写?