输入一个字符串,内有数字和非数字字符,如a123x456 17960? 302tab5876将其中连续的数字作为一个整数

2024-11-23 06:22:52
推荐回答(1个)
回答1:

这要综合用到字符串读入和栈操作,简单起见可以给你一个伪代码:
//先建栈并定义其基本函数
typedef int datatype;
datatype x;
typedef struct{
datatype data[maxsize];
int top;
}zhan;
zhan *s;

void setnull(zhan *s)
{
s->top=-1;
}/*置空*/

int empty(zhan *s)
{
if(s->top<=-1)
return(1);
else return(0);
}

zhan *insert(zhan *s,datatype x)
{
if(s->top==maxsize-1)
{
printf("溢出");
return NULL;
}
else
{s->top++;
s->data[s->top]=x;
}
return s;
}

datatype pop(zhan *s)
{
if(!empty(s)
return s->data[s->top--];
}
//读入字符串,通过连续字符入栈出栈提取并还原它们。
m=0//m是数组下标变量
for(i=0;;i++)
{
ch=getchar();//读入字符
if(ch=='\n')//换行终止
break;
if('0'<=ch<='9')//数字开始,入栈
insert(s,ch);
else if(!empty(s)){//有非数字字符插入,一个完整数字结束,出栈还原
k=j=0
while(!empty(s)){
k=k+int(pop(s))*10^j
j=j+1
}
a[m]=k
m++
}
}
最后,组织一下,main函数加上去,就差不多了。
希望对你能有所帮助。