| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 332 人关注过本帖
标题:C程序找错,急啊
只看楼主 加入收藏
雪天
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2009-7-23
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:1 
C程序找错,急啊
#include"stdio.h"
double GetReal(char *s);     /*用来实atof的函数*/
int ten_n(int);
void main()
{
    char s[]="  -3454e-3";
    double n;
    n=GetReal(s);
    printf("%f",n);
}
double GetReal(char *s)
{
    int i,i1,j,k,s1[100],s2[100];
    double n,n1,n2;
    char *p;
    p=s;
    while(*p==' ')
        p++;
    if(*p=='-')
    {
        p++;
        i=0;
        while(*p!='e'&&*p!='E'&&*p!='.')
        {
            s1[i++]=(int)(*(p++)-48);
            printf("%d",s1[i-1]);
        }
        printf("\n");
        if(*p=='e'||*p=='E')
        {
            p++;
            i1=0;
            if(*p=='-')
            {
                p++;
                do
                {
                    s2[i1++]=(int)(*(p++)-48);
                }while(*p!='\0');
                k=0;n1=0;
                for(j=i-1;j>=0;j--)
                    n1+=s1[k++]*ten_n(j);
                k=0;n2=0;
                for(j=i1-1;j>=0;j--)
                    n2+=s2[k++]*ten_n(j);
                printf("n2=%d\n",n2);    /疑问在这里:这里n2=3才对,怎么运算出来n2=0呢?/
                n2=-n2;
                n=n1+(double)ten_n(n2);
                return n;
            }
        }
    }
}
int ten_n(int n)
{
    int s=1,i;
    for(i=1;i<=n;i++)
        s*=10;
    return s;
}
搜索更多相关主题的帖子: C语言 找错 
2009-08-02 10:50
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
printf("n2=%d\n",n2);    /*疑问在这里:这里n2=3才对,怎么运算出来n2=0呢?*/

n2被定义为double型,要加强制类型转化:
printf("n2=%d\n",(int)n2);
下面一句 n2=-n2; 要删去,因为你的 ten_n(int n) 函数中没有写n是负数的代码;
接下来一句应改为:
n=n1/(double)ten_n((int)n2);
2009-08-04 00:12
快速回复:C程序找错,急啊
数据加载中...
 
   



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

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