传送门:https://ac.tuubu.com/p/824

本题其实不算太难,不过需要学到string,即字符串就可以解决问题。 但是,如果只学会string的初步使用方法,而不记一些实用的函数,那么写起代码来也会比较麻烦。

在介绍本题使用的“string库”中的函数前先讲解本题思路: 通过数字的小数部分的长度来判别数据类型, 那么我们只需利用string获得小数部分,便可求解答案。

好了,看一下我们要使用的函数:

// 这是下列函数所需的头文件,它包含了有关string的实用函数
#include <string> 


// 字符串名称.size(),可以得到该字符串的长度
string str = "I love tuubu!";
int n = str.size(); // 此时 n = 13
cout << n << endl; // 输出 13

// 字符串名称.erase(a, b),可以删除一个字符串中从第 a 个下标算起,连续删除 b 个字符
string str = "I don't love tuubu!";
str.erase(2, 6); // 从下标为 2 的 'd' 连续删除6个字符,即 "don't "
cout << str << endl; // 输出 "I love tuubu!"

接下来是代码,仅供参考

#include <bits/stdc++.h>
using namespace std;

int main() {
    string str;
    cin >> str;
    // 处理 str ,使得只保留小数点后的内容
    while (str[0] != '.' && str.size() > 0) { // 重复执行直到最前字符为小数点
        str.erase(0, 1); // 删除最前字符
    }
    str.erase(0, 1); // 别忘了删除小数点
    // 判断数据类型 + 输出
    if (str.size() < 7) cout << "float";
    else cout << "double";
    
    return 0;
}

本题解分享到这,如有错误和疑问之处,欢迎指出与探讨。

1 条评论

  • 1