题目为:首先将字符串中的*替换为0,然后将不规范化的数字规范化。
如:1.*,02.3*0,12*.210,012.5*,4*560.0,45*0
第一步替换:1.0,02.300,120.210,012.50,40560.0,4500
第二步规范化:1,2.3,120.21,12.5,40560,4500
程序代码(基于C语言)如下:
替换代码为:
void change(char *string) //string为char数组
{
int len = strlen(string);
for (int i=0; i<len; i++)
{
if (string[i] == '*')
{
string[i] = '0';
}
}
}
数字的规范化代码如下:
void replace(char *string)
{
char *temp;
bool isfloat = false;
int len = strlen(string);
len = len -1;
//去掉前面多余的零
for(int i = 0;i <len; i++)
{
if(string[i] == '0')
{
len =len -1;
}
else
{
break;
}
}
int gap = strlen(string) - len -1; //多减一是要去掉那个"\n",gap即为0的个数
printf("----------%d %d\n",strlen(string)-1,gap);
for(int i =0;i<len;i++)
{
string[i] = string[i +gap];
}
string[len] = '\0';
//判断是否是folat,如果是则要去掉后面的0
for(int i =0 ;i <len ;i++)
{
if(string[i] == '.') //遇到了.就停止扫描和去零操作
{
isfloat = true;
}
}
if(isfloat)
{
while((string[len-1] == '0')||(string[len-1] == '.'))
{
len = len -1;
if(string[len-1] == '.')
{
len = len -1;
break;
}
}
string[len] = '\0';
}
}
程序源码下载地址为:http://download.youkuaiyun.com/detail/wangyingjun321/5541205