1.题目
设计程序,将字符串中的字符和数字分类,存储到指定的数组中。比如:“ab123fda89fd90”分类后的字符:abfdafd;分类后的数字:123 89 90
2.代码展示
#include <stdio.h>
int main(){
char str[32];
int a[32];
char b[32];
int i=0;
int j=0;
int k=0;
int key;
int num=0;
char *p=str;
printf("请输入字符:");
gets(str);
while(str[i]!='\0'){ //分离出字符
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'){
b[j]=str[i];
j++;
}
i++;
}
while(*p){
if(*p>='0'&&*p<='9'){ //分离数字
num=k+1; //统计数字的个数(num=实际个数+1)
a[k]=a[k]*10+*p-'0'; //将字符串转为数字
key=1; //实现数字分开的关键
}
else if(key){ //如果key==1,则下次数字保存在a[k+1]里
a[++k]=0;
key=0;
}
p++;
}
for(int m=0;m<j;m++){
printf("%c",b[m]);
}
printf("\n");
for(int m=1;m<num;m++){ //只能从a[1]开始输出
printf("%d ",a[m]);
}
printf("\n");
return 0;
}
3.结果展示
4.问题描述
如何分离数字且得是一个个完整的数字?
5.解决办法
思路如下:第一个数字保存在a[0]中,如果数字连续,则a[0]*10+*p-'0',将一串数字字符串 转成整型数字,将key赋值为1;如果字符串中数字不连续了,那么执行key==1的操作,将k加1,则下一个数字将存储在a[1]中,并将key还原为0,继续循环。