注册 登录
编程论坛 C语言论坛

为什么我这个代码的目的实现不了

我有个梦想 发布于 2017-01-21 19:52, 893 次点击
# 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
4 回复
#2
炎天2017-01-21 20:43
# 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;
    }
#3
qdcs2017-01-21 22:48
程序代码:
# 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;
    }
#4
炎天2017-01-21 22:57
回复 3楼 qdcs
输出是在while()之后的
#5
qdcs2017-01-23 22:14
程序代码:
# 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;
    }
1