isdigit()判断一个字符是否是十进制数字

用来检测一个字符是否是十进制数字
十进制数字包括:0 1 2 3 4 5 6 7 8 9
1,头文件:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

2,参数
要检测的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)。

3,返回值
返回值为非零(真)表示c是十进制数字,返回值为零(假)表示c不是十进制数字

事例:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main ()
{
    char str[]="1776ad";
    int year;
    if (isdigit(str[0]))
    {
        year = atoi (str);
        printf ("The year that followed %d was %d.\n", year, year+1);
    }
    return 0;
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ```cpp int convert(const string& str) { int base = 10; if (str.length() > 2 && str[0] == '0' && str[1] == 'x') { base = 16; } int result = 0; for (int i = (base == 16) ? 2 : 0; i < str.length(); i++) { char c = str[i]; int value; if (c >= '0' && c <= '9') { value = c - '0'; } else if (base == 16 && c >= 'a' && c <= 'f') { value = c - 'a' + 10; } else if (base == 16 && c >= 'A' && c <= 'F') { value = c - 'A' + 10; } else { // Invalid character return 0; } result = result * base + value; } return result; } ``` 这是一个 C++,它接受一个字符串,并返回一个 int 值。 函内部会判断传入的字符串是 10 进制还是 16 进制,并将其转换为 int 值。 ### 回答2: 下面是一个用cpp实现的函,能够将传入的数字字符串转换为对应的int值: ```cpp #include <iostream> #include <string> #include <cmath> int convertToInt(std::string numStr) { int result = 0; int base = 10; // 默认为10进制 if (numStr.size() > 2 && (numStr[0] == '0' && (numStr[1] == 'x' || numStr[1] == 'X'))) { // 如果字符串以"0x"或"0X"开头,则将进制设置为16进制 base = 16; numStr = numStr.substr(2); // 清除开头的"0x"或"0X" } int len = numStr.size(); for (int i = 0; i < len; i++) { int digit; if (isdigit(numStr[i])) { digit = numStr[i] - '0'; // 获取当前数字字符对应的值 } else if (isalpha(numStr[i])) { digit = toupper(numStr[i]) - 'A' + 10; // 获取当前字母字符对应的值,A的值为10 } result += digit * pow(base, len - i - 1); // 根据不同进制计算值 } return result; } int main() { std::string numStr; std::cout << "请输入一个数字字符串:"; std::cin >> numStr; int result = convertToInt(numStr); std::cout << "转换后的int值为:" << result << std::endl; return 0; } ``` 以上代码实现了一个`convertToInt`函,它接受一个数字字符串作为参,并根据字符串的格式(如是否以"0x"开头)判断数字字符串的进制(10进制或16进制)。然后,使用迭代方式将字符串中的每个字符转换为相应的数字,并根据进制计算最终结果。 ### 回答3: 可以通过以下的方式来实现这个函: ```cpp #include <iostream> #include <string> #include <cmath> int convertToDecimal(std::string number) { // 如果字符串以"0x"开头,则表示是16进制的 if (number.substr(0, 2) == "0x") { // 从第3个字符开始截取字符串 number = number.substr(2); int decimal = 0; int len = number.length(); // 从字符串的末尾开始循环,依次计算每个字符对应的十进制值,并加到结果上 for (int i = len - 1; i >= 0; i--) { char c = number[i]; int digit; // 如果是字母,则将其转为大写字母 if (c >= 'a' && c <= 'f') { c += 'A' - 'a'; } // 将字符转为十进制值 if (c >= 'A' && c <= 'F') { digit = c - 'A' + 10; } else { digit = c - '0'; } // 根据字符字符串中的位置,计算其对应的权重 int weight = pow(16, len - i - 1); // 将权重和十进制值相乘,加到结果上 decimal += digit * weight; } return decimal; } else { // 默认为10进制的,直接使用库函stoi将字符串转为整并返回 return std::stoi(number); } } int main() { std::string number; std::cout << "请输入一个数字字符串:"; std::cin >> number; int decimal = convertToDecimal(number); std::cout << "转换后的十进制为:" << decimal << std::endl; return 0; } ``` 这个函的实现思路是,首先判断字符串是否以"0x"开头,如果是,则表示为16进制的,需要将其转换为10进制。通过循环遍历字符串的每个字符,将其转换为对应的十进制值,并根据字符字符串中的位置计算权重,最后将权重和十进制值相乘并累加到结果上即可得到最终的十进制。 如果字符串不是以"0x"开头,则默认为10进制的,可以直接使用库函`std::stoi`将字符串转换为整并返回。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路漫漫其远,吾求索

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值