如何用c语言分离字符串中的字母和数字并分别输出

如题所述

给出代码: 
#include <iostream>

#include <cstdio>

#include <cstring>

#include <cctype>

using namespace std;

int main()

{

    int num,snum;

    num=0;

    snum=0;

    char s[100];

    char zi[100];

    char fu[100];

    scanf("%s",s);

    for(int i=0;i<strlen(s);i++)

    {

        if(s[i]<='9'&&s[i]>='0')

        {

            zi[num]=s[i];

            num++;

        }

        else if(s[i]<='z'&&s[i]>='a'||s[i]<='Z'&&s[i]>='A')

        {

            fu[snum]=s[i];

            snum++;

        }

    }

    for(int i=0;i<=num;i++)

    {

        printf("%c",zi[i]);

    }

    cout<<endl;

    for(int j=0;j<=snum;j++)

    {

        printf("%c",fu[j]);

    }

    return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-14
先定义两个字符串数组变量a,b。。。。然后把原来的字符串进行遍历,判断每个字符的ACSSII码。。在数字区间的存在a中。。。字母的存在b中。。。然后再把a,b输出。本回答被网友采纳
第2个回答  2010-12-14
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
char *s1=new char[256],*s2=new char[256];
cout<<"请输入字符串:\n";
cin>>s;
int j1=0,j2=0;
for(int i=0;s[i];i++){
if(s[i]<='9'&&s[i]>='0'){
s1[j1]=s[i];
j1++;
}
if(s[i]<='z'&&s[i]>='a'||s[i]<='Z'&&s[i]>='A'){
s2[j2]=s[i];
j2++;
}
}
s1[j1]=0,s2[j2]=0;
cout<<"输入字符串中包含的数字字符串为:";
cout<<s1<<endl;
cout<<"输入字符串中包含的字母字符串为:";
cout<<s2<<endl;
return 0;
}本回答被提问者采纳
第3个回答  2010-12-14
班门弄斧一下吧;大师们勿怪

char c[]="123asdf564afg" ,c1[100] ,c2[100];
int len=sizeof(c)/sizeof(char);
int i ,j =0,k=0;
for(i=0 ;i<len ;i++)
{
if(c[i]<'9'&&c[i]>'0')
{
c1[j++]=c[i];
}
else if(c[i]<'z'&&c[i]>'A')
c2[k++]=c[i];
}
c1[j]='\0';
c2[k]='\0';
puts[c1];
puts[c2];
主程序完善一下就行了本回答被网友采纳
第4个回答  2010-12-14
#include"stdio.h"

void main()
{
char c,zimu[200],shuzi[200];
int i=0,j=0,k,l;
printf("please input one string:\n");
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
zimu[i]=c;
i++;
}
else if(c>='0'&&c<='9')
{
shuzi[j]=c;
j++;
}
}
k=i+1;
l=j+1;
printf("zimu:\n");
for(i=0;i<k;i++)
printf("%c",zimu[i]);
printf("\nshuzi:\n");
for(j=0;j<l;j++)
printf("%c",shuzi[j]);
}
测试通过
相似回答