#include <bits/stdc++.h>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <utility>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct NumberDigits
{
    vector<int> sint;
    vector<int> sfloat;
};
NumberDigits splitNumberDigits (const string & numberStr)
{
    size_t dotPosition=numberStr.find('.');
    string integerPartStr=numberStr.substr(0,dotPosition);
    string decimalPartStr=(dotPosition!=string::npos) ? numberStr.substr(dotPosition+1) : "";
    NumberDigits result;
    for(char digit : integerPartStr)
    {
        result.sint.push_back(digit-'0');
    }
    for(char digit : decimalPartStr)
    {
        result.sfloat.push_back(digit-'0');
    }

    return result;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    string inputNumber;
    cin>>inputNumber;
    NumberDigits digits=splitNumberDigits(inputNumber);
    cout<<"整数部分:";
    for(size_t i=0;i<digits.sint.size();++i)
    {
        cout<<digits.sint[i];
        if(i!=digits.sint.size()-1)
        {
            cout<<" ";
        }
    }
    cout<<"\n";
    cout<<"小数部分:";
    for(size_t i=0;i<digits.sfloat.size();++i)
    {
        cout<<digits.sfloat[i];
        if(i!=digits.sfloat.size()-1)
        {
            cout<<" ";
        }
    }
    cout<<"\n";
    return 0;
}

代码功能简述:

该代码接收一个数字字符串(如 "123.456"),将其拆分为整数部分和小数部分,并逐位输出。

例如:

输入 "123.456",输出:

整数部分:1 2 3

小数部分:4 5 6

无小数点(如 "789"),则仅输出整数部分,小数部分为空。

结构体 NumberDigits

中文含义:用于存储数字的各位数字

成员变量

sint (signed int 的缩写):存储整数部分的各位数字(如 123.456 的 1,2,3)

sfloat (signed float 的缩写):存储小数部分的各位数字(如 123.456 的 4,5,6)

2. 函数 splitNumberDigits

中文含义:拆分数字字符串为整数和小数部分

参数

numberStr:输入的数字字符串(如 "123.456")

返回值

返回 NumberDigits 结构体,包含拆分后的整数和小数各位数字

3. main 函数中的变量

inputNumber:存储用户输入的数字字符串(如 "123.456")

digits:接收 splitNumberDigits 返回的结果,包含:

digits.sint:整数部分的各位数字

digits.sfloat:小数部分的各位数字

4. 局部变量(在 splitNumberDigits 函数内)

dotPosition:记录小数点位置的索引值

integerPartStr:截取出的整数部分字符串(如 "123")

decimalPartStr:截取出的小数部分字符串(如 "456")

result:临时存储拆分结果的 NumberDigits 对象

代码执行流程

用户输入一个数字字符串(如 "123.456")

splitNumberDigits 函数:

找到小数点位置

分离整数和小数字符串

将每个字符转换为数字存入 NumberDigits

主函数输出:

整数部分数字(digits.sint

小数部分数字(digits.sfloat

示例

输入 "123.456" 时:

digits.sint → {1, 2, 3}

digits.sfloat → {4, 5, 6}

输出:

整数部分:1 2

小数部分:4 5 6