Dolphin_Frank 2021-10-16 23:12 采纳率: 0%
浏览 12

atof()括号里面填写一个char数组可以将一整个char数组里面的数字合并成一个数


#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <string>
#include <stack>
#include <cctype>
#include <assert.h>
#include <iomanip>
using namespace std;

int my_strlen(const char *str)
{
    assert(str);
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}

int main()
{
    char s[10001];
    cin >> s;
    char temp[10001];
    int integer[10001];
    int counti = 0;
    int decimal[10001];
    int countd = 0;
    char low[10001];
    char upp[10001];
    int len = my_strlen(s);
    int i, j;
    int count0 = 0;
    int count1 = 0;
    int l = -1;
    bool isB = false;
    for (i = 0; i < len; i++)
    {
        if (s[i] == '.' || isdigit(s[i]))
        {
            if (l = -1)
            {
                l = i;
            }
            if (s[i] == '.')
            {
                isB = true;
            }
        }
        else
        {
            if (l != -1)
            {
                char *temp = (char *)malloc((i - l + 1) * sizeof(char));
                for (j = 0; j < i - l; j++)
                {
                    temp[j] = s[j + l];
                }
                double number = atof(temp);
                cout << "temp is" << temp << endl;
                if (isB)
                {
                    decimal[countd] = number;
                    countd++;
                }
                else
                {
                    integer[counti] = number;
                    counti++;
                }
                isB = false;
                l = -1;
            }
            if (islower(s[i]))
            {
                int lenupp = my_strlen(upp);
                s[i] = toupper(s[i]);
                upp[lenupp] = s[i];
                count0++;
            }
            else
            {
                int lenlow = my_strlen(low);
                s[i] = tolower(s[i]);
                low[lenlow] = s[i];
                count1++;
            }
        }
    }
    //打印整数integer
    double numint = 0.0;
    for (i = 0; i < counti; i++)
    {
        numint += integer[i];
    }
    cout << numint << endl;
    //打印小数decimal
    double numdec = 0.0;
    for (i = 0; i < countd; i++)
    {
        numdec += decimal[i];
    }
    cout << fixed << setprecision(2) << numdec << endl;
    //打印小写字母
    for (i = 0; i < count1; i++)
    {
        cout << low[i];
    }
    cout << endl;
    //打印大写字母
    for (i = 0; i < count0; i++)
    {
        cout << upp[i];
    }
    return 0;
}

中间的这一部分

img


为什么我测试出来它不能做到把整个temp数组里面的数合并为数字?给一个测试样例

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-16 23:27
    关注

    这本来就是不可能的事啊。atof没这本事

    评论

报告相同问题?

问题事件

  • 创建了问题 10月16日