比较简单问题,可是我不会,请教各位大侠!

xiaoxuw 2003-08-19 07:00:34
有一字符串中:"000888880088"或000999990085


前面8位是整数,后四位是小数位!

最后要得到这样的输出的形式"88888.88"或"99999.95"

也就是说把字符串中前面为"0"的数据去掉,后面4位除以100;

要以函数型式输出.代码精简者得分!!!!谢过!!!
...全文
46 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dragon132 2003-08-20
  • 打赏
  • 举报
回复
#include <stdio.h>

char *change(char *Dest, const char *Src)
{
int i,j=0;

for(i=0;i<8;i++)
if(Src[i]!='0')
Dest[j++]=Src[i];
Dest[j++]='.';
for(;i<=12;i++)
if(Src[i]!='0')
Dest[j++]=Src[i];
return Dest;
}

main()
{
char str[13]="000888880088";
char dest[13];
printf("%s\n",change(dest,str));

}
Dragon132 2003-08-20
  • 打赏
  • 举报
回复
看看这样可以吗?
xiaoxuw 2003-08-20
  • 打赏
  • 举报
回复
谢谢楼上各位的热情相助!!!真心谢谢!

可是以上各位写的函数都是返回float型的!

我要的是返回是字符型的!
ransion 2003-08-19
  • 打赏
  • 举报
回复
是我错了
用了mycoolu(mycoolu)的数据
汗,没看清楚
cdxiaogan 2003-08-19
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdlib.h>

double convert(char a[])
{
char a1[14];
strncpy(a1,a,8);
strcpy(a1+9,a+8);
return atol(a1)+atof(a1+9)/100;
}

void main()
{
char a[]="000888880088";
printf("%.2lf\n",convert(a));
}
cdxiaogan 2003-08-19
  • 打赏
  • 举报
回复
这个行不?
#include <string.h>
#include <stdlib.h>

double convert(char a[])
{
char a1[14];
strncpy(a1,a,8);
strcpy(a1+9,a+8);
return atol(a1)+atof(a1+9)/100;
}

void main()
{
char a[]="000888880088";
printf("%.2lf\n",convert(a));
}
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
楼主看一下现在可以了吗?

float change(char str[])
{
int i;
int m=0,n=0;
float a;
for(i=0;i<8;i++)
m=m*10+(str[i]-'0');
for(;i<12;i++)
n=n*10+(str[i]-'0');
a=(float)m+((float)n)/100;
return a;
}
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
to ransion(西方失败)
字符串中根本没有小数点,不用处理。你改的是错的
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
to ransion(西方失败)
字符串中根本没有小数点,不用处理。你改的是错的
ransion 2003-08-19
  • 打赏
  • 举报
回复
晕啊
这么快有帖子了
我改动了一下Dragon132(Dragon) 的代码
ransion 2003-08-19
  • 打赏
  • 举报
回复
楼上的程序有错误
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[12];
int i;
int m=0,n=0;
float a;
scanf("%s",str);
for(i=0;i<8;i++)
m=m*10+(str[i]-'0');
for(i=9;i<=12;i++)
n=n*10+(str[i]-'0');
a=(float)m+((float)n)/100;
printf("%6.2f\n",a);
return 0;
}
小数点没有处理
Tangyongkang 2003-08-19
  • 打赏
  • 举报
回复
/* Running in TC 2.0 */
#include <stdio.h>
#include <string.h>

main()
{
int i,len;
double f = 0, k = 1;
char scr[20],dest[20];
gets(scr); /* input the string */
len = strlen(scr);
strncpy(dest,scr, len-4); /* Copy the first len-4 characters into integer */
i = atoi(dest); /* convert into integer*/
/* Convert the othes into float */
for( ; k > 0.0001 ; len--, k /= 10 )
f += (scr[len]-'0')*k;
printf("\n%.4f\n",i+f); /* output the Result */
}
paulxj 2003-08-19
  • 打赏
  • 举报
回复
把楼上的改成这样

CHANGE(CHAR *STR)
{

int i;
int m=0,n=0;
float a;
scanf("%s",str);
for(i=0;i<8;i++)
m=m*10+(str[i]-'0');
for(;i<12;i++)
n=n*10+(str[i]-'0');
a=(float)m+((float)n)/100;
printf("%6.2f\n",a);
}
xiaoxuw 2003-08-19
  • 打赏
  • 举报
回复
谢谢楼上的,程序基本实现,可是还是没有达实本贴的最终的要的---以函数形式输出!
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
main()
{
char str[12];
int i;
int m=0,n=0;
float a;
scanf("%s",str);
for(i=0;i<8;i++)
m=m*10+(str[i]-'0');
for(;i<12;i++)
n=n*10+(str[i]-'0');
a=(float)m+((float)n)/100;
printf("%6.2f\n",a);
}
mycoolu 2003-08-19
  • 打赏
  • 举报
回复
?????没说清楚???

把"00088888.0088"转成"88888.88"
"00099999.0095"转成"99999.95"
!!!!
yakai 2003-08-19
  • 打赏
  • 举报
回复
000888880088->88888.88
俺确实没这个水平,拜托不要问这么让俺猜谜语的问题,俺们出苦力挣工分也真不容易,呜呜
cdxiaogan 2003-08-19
  • 打赏
  • 举报
回复
tag

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧