当前位置:编程学习 > C/C++ >>

C语言“保留整数”

题目描述:
输入一个字符串str1,编写一个函数把其中的连续非数字的字符子串换成一个‘*’,存入字符数组str2中,所有数字字符也必须依次存入str2中。并在主函数中输出str2。
输入:
输入为一行字符串str1,其中可能包含空格。字符串长度不超过80个字符。
输出:输出处理好的字符串str2。
样例输入:
$Ts!47&*s456  a23* +B9k
样例输出:
*47*456*23*9*
答案:#include "stdio.h"
#include "iostream"

void ChangeNonNumberToStar(char *value)
{
 char string[80];
 //初始化
 for (unsigned int i=0;i<80;++i)
 {
  string[i]='\0';
 }
 unsigned int index = 0; //拷贝数组的下标

 bool flag = true; //判断是否遇到了第一个非数字的

 while((*value)!='\0')
 {
  //碰到非数字的
  if((*value)<'0' || (*value)>'9')
  {
   //第一次碰到
   if(flag)
   {
    string[index++]='*';
    flag=false;
   }
  }
  else
  {
   string[index++]=(*value);
   flag=true;
  }
  value++;
 }
 string[index]='\0';
 printf("%s",string);
}

void main()
{
 char string[80]="$Ts!47&*s456  a23* +B9k";
 ChangeNonNumberToStar(string);
 system("pause");

}

我感觉下面这个代码比上面的那个要简单。你运行下试试。

#include<stdio.h>
#include<ctype.h>     //此中含有isdigit()函数,用来判断字符是否为数字,若为数字则返回值1,否则返回0

int main()
{
        //char str1[] = {"$Ts!47&*s456 a23* +B9k"};
        char str1[80];
        char str2[80];
        char * p1,*p2;

        printf("please input string\n");

        gets(str1);

        p1 = str1;
        p2 = str2;

        while(*p1!='\0')
        {
                if(!isdigit(*p1))
                {
                        p1++;
                        while(*p1!='\0' && !isdigit(*p1))
                                p1++;
                        *p2 = '*';
                        p2++;
                }else{
                        *p2 = *p1;
                        p2++;p1++;
                }
        }
        *p2='\0';
        printf("%s\n",str2);
        return 0;
}

 

上一个:C语言的四个程序
下一个:C语言switch的解析

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,