| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 965 人关注过本帖
标题:为什么我这个代码的目的实现不了
只看楼主 加入收藏
我有个梦想
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-1-21
结帖率:0
收藏
 问题点数:0 回复次数:4 
为什么我这个代码的目的实现不了
# include <stdio.h>
# include <conio.h>

int main()
{
    char str[100];
    gets(str);
    double num = 0;
    int i = 0;
    double t = 10;
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            if(t==10)
            num = num * t+str[i]-48;
            else
            {
                num+=(str[i]-48)*t;
                t = t*0.1;

            }
        }   
            if(str[i]='.')
            {
                t = 0.1;
            }
            i++;
        }
        if(str[0]=='-')
            num = 0 - num;
        printf("%lf\n",num);
        //count<<num<<endl;
        return 0;
    }
这个代码的目的是为了实现字符串和数字之间的相互转换,但是为什么不管我输入什么字符串结果就只是0.00000
搜索更多相关主题的帖子: include double 
2017-01-21 19:52
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
# include <stdio.h>
# include <conio.h>

int main()
{
    char str[100];
    gets(str);
    double num = 0;
    int i = 0;
    double t = 10;
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            if(t==10)
            num = num * t+str[i]-48;
            else
            {
                num+=(str[i]-48)*t;
                t = t*0.1;

            }
        }   
            if(str[i]=='.')          //少了个等于号
            {
                t = 0.1;
            }
            i++;
        }
        if(str[0]=='-')
            num = 0 - num;
        printf("%lf\n",num);
        //count<<num<<endl;
        return 0;
    }

早知做人那么辛苦!  当初不应该下凡
2017-01-21 20:43
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
程序代码:
# include <stdio.h>
# include <conio.h>

int main()
{
    char str[100];
    gets(str);
    double num = 0;
    int i = 0;
    double t = 10;
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            if(t==10)
            num = num * t+str[i]-48;
            else
            {
                num+=(str[i]-48)*t;
                t = t*0.1;

            }
        }  

            if(str[i]=='.')          //少了个等于号
            {
                t = 0.1;
            }
            i++;
        }
        if(str[0]=='-')
            num = 0 - num;   //好像上面的if都没执行,直接执行printf("%lf\n",num)了num=0所以0-unm等于0
        printf("%lf\n",num);
   

        //count<<num<<endl;
        return 0;
    }

我是硬件工程师
2017-01-21 22:48
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 3楼 qdcs
输出是在while()之后的

早知做人那么辛苦!  当初不应该下凡
2017-01-21 22:57
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
程序代码:
# include <stdio.h>
# include <conio.h>

int main()
{
    char str[100];
    gets(str);
    double num = 0;            

    int i = 0;                     

    double t = 10;
    while(str[i]!='\0')                        // 数组i项不等于0 这个一般成立
    {
        if(str[i]>='0'&&str[i]<='9')         //  数组i项大于等于0小于等于9    这个一般不成立,直接去下一条if  建议改成>=A <=Z
    

        {
            if(t==10)
            num = num * t+str[i]-48;        //第一次循环时t=10成立,num = num * t+str[i]-48;
            else
            {
                num+=(str[i]-48)*t;
                t = t*0.1;

            }//printf("jjjjj\n");
        }  

       

            if(str[i]=='.')          //少了个等于号
            {
                t = 0.1;
            }
            i++;
        }
        if(str[0]=='-')     //数组0项等于"-"    这个一般不成立,直接去下一条命令num=0-num  等于0

            num = 0 - num;
        printf("%lf\n",num);   //输出 num值为0

        //count<<num<<endl;
        return 0;
    } 

我是硬件工程师
2017-01-23 22:14
快速回复:为什么我这个代码的目的实现不了
数据加载中...
 
   



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

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