【1171】C语言实验——保留整数 (栈)SDUT

C语言实验——保留整数

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

输入一个字符串str1,把其中的连续非数字的字符子串换成一个‘*’,存入字符数组

str2 中,所有数字字符也必须依次存入 str2 中。输出str2。

输入


输入为一行字符串str1,其中可能包含空格。字符串长度不超过80个字符。

输出


输出处理好的字符串str2。

示例输入

$Ts!47&*s456  a23* +B9k

示例输出

*47*456*23*9*

本题用栈的思想来解决较为简单,先用gets输入一串字符串str1(因为题目说可能有空格),再遍历str1,(1)若str1中出现数字,就让数字进栈(即把此字符写进str2中),(2)若str1中不是数字,先看
str2中前一项是否为‘*’,若不是就让‘*’进栈。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char str1[100];
    char str2[100];
    int n;
    int i;
    int jin=0;
    memset(str2,0,sizeof(str2));
    gets(str1);
    n=strlen(str1);
    if(str1[0]>='0'&&str1[0]<='9')//先让第一个字符进栈,以便后面进行比较
        str2[jin++]=str1[0];
    else
        str2[jin++]='*';
    for(i=1;i<n;i++)
    {
        if(str1[i]>='0'&&str1[i]<='9')//步骤(1)
            str2[jin++]=str1[i];
        else
        {
            if(str2[jin-1]!='*')//步骤(2)
                str2[jin++]='*';
        }
    }
    for(i=0;i<jin;i++)
        printf("%c",str2[i]);
    printf("\n");
    return 0;
}



posted @ 2014-08-28 19:40  jiangyy  阅读(1527)  评论(0编辑  收藏  举报