您的位置:首页 > 编程语言 > C语言/C++

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

2014-08-28 19:40 405 查看

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];elsestr2[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;}
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: