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,否则返回0int 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的解析