| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 603 人关注过本帖
标题:不用库函数字符换转浮点
只看楼主 加入收藏
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
 问题点数:0 回复次数:6 
不用库函数字符换转浮点

#include<stdio.h>
#define N 20
int num(int i)
{
int j,a,b;
a=1;
b=10;
for(j=0;j<i;j++)
a*=b;
return a;
}
float num1(int i,int b1)
{

float a,b;
a=b=0.1;
for(b1;b1<i;b1++)
a*=b;
return a;
}
void main()
{
char a[N];
int i,j=0,sum=0,j1=0,t,b1;
float sum1=0;
printf("输入字符为数字\n");
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]=='.')
j=i;
t=i;
j1=i-1;
b1=i=j+1;
if(j!=0)
for(;i<=j1;i++)
sum1+=(a[i]-48)*num1(i,b1);
if(j==0)
j=t;
for(i=0;i<j;i++)
sum+=(a[j-i-1]-48)*num(i);
sum1=sum+sum1;
printf("转换完毕:%f\n",sum1);
}
说明:输入负数无效。
如果还有更好算法请介绍。

搜索更多相关主题的帖子: 函数 字符 
2006-10-08 16:40
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用C语言学习者在2006-10-8 16:40:56的发言:

#include<stdio.h>
#define N 20
int num(int i) //这里对正数控制
{
int j,a,b;
a=1;
b=10;
for(j=0;j<i;j++)
a*=b;
return a;
}
float num1(int i,int b1) //这里对小数控制。
{

float a,b;
a=b=0.1;
for(b1;b1<i;b1++)
a*=b;
return a;
}
void main()
{
char a[N];
int i,j=0,sum=0,j1=0,t,b1;
float sum1=0;
printf("输入字符为数字\n");
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]=='.') //这里区分正数和小数。
j=i;
t=i;
j1=i-1;
b1=i=j+1;
if(j!=0)
for(;i<=j1;i++) //这里对小数控制。
sum1+=(a[i]-48)*num1(i,b1);
if(j==0)
j=t;
for(i=0;i<j;i++)
sum+=(a[j-i-1]-48)*num(i); //这里对正数控制
sum1=sum+sum1;
printf("转换完毕:%f\n",sum1);
}
说明:输入负数无效。
如果还有更好算法请介绍。


谁有强殖装甲第二部,可以Q我460054868
2006-10-08 19:20
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
太强了!!

2006-10-08 19:47
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
我觉得自已的程序不完善。我希望能请高手提出提高效率算法,或者有其它方法简单算法。

谁有强殖装甲第二部,可以Q我460054868
2006-10-08 20:18
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

写个玩玩

#include<stdio.h>
#include<string.h>
#define M 20

int main()
{
char a[M],flag=0,k=1;
int i=0;
double sum1=0.0,sum2=0.0;
printf("Input:");
gets(a);
if(a[0]=='-')
{
k=-1;
i=1;
}
for(;a[i]!='.' && a[i]!='\0';i++)
sum1=sum1*10+a[i]+0-'0';
if(a[i]!='\0')
for(i=strlen(a)-1;a[i]!='.';i--)
sum2=sum2*0.1+(a[i]+0-'0')*0.1;
printf("the number is %lf\n",k*(sum1+sum2));
return 0;
}



2006-10-08 20:57
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用我不是郭靖在2006-10-8 20:57:41的发言:

写个玩玩

#include<stdio.h>
#include<string.h>
#define M 20

int main()
{
char a[M],flag=0,k=1;
int i=0;
double sum1=0.0,sum2=0.0;
printf("Input:");
gets(a);
if(a[0]=='-')
{
k=-1;
i=1;
}
for(;a[i]!='.' && a[i]!='\0';i++)
sum1=sum1*10+a[i]+0-'0'; //这里有点多余
if(a[i]!='\0')
for(i=strlen(a)-1;a[i]!='.';i--)
sum2=sum2*0.1+(a[i]+0-'0')*0.1;
printf("the number is %lf\n",k*(sum1+sum2));
return 0;
}


这程序不错。


谁有强殖装甲第二部,可以Q我460054868
2006-10-08 21:19
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
补充一点是在划线上。

谁有强殖装甲第二部,可以Q我460054868
2006-10-08 21:21
快速回复:不用库函数字符换转浮点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025844 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved