You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++函数实现求助:将字符数组转为对应整数并返回其平方值

字符数组转整数并返回平方值的正确实现

需求说明

创建一个函数,接收字符数组参数,将其转换为对应的整数后返回该整数的平方值。示例:输入字符数组"11",函数应返回121。

用户尝试的错误代码

char nr[] = "11";
cout << strToNumber(nr);//will return the value 121;
int strToNumber (char c[]) {
int cifra, rezultat, fin;
cifra = c - '0';
return cifra * cifra;
}

int main () {

char sir[9] = "13";
char c;

int n = strlen(sir);
  for (int i = 0; i < n; ++i) {
   c = sir[i];
    strToNumber(c);
  }
return 0;
}

问题分析

  • 指针运算错误:函数strToNumber中,c是字符数组的指针,直接执行c - '0'是计算指针地址与字符'0'的ASCII值差值,不是字符转数字的正确逻辑。
  • 参数类型不匹配:主函数中循环传递单个char变量给需要char[](等价于char*)的函数,属于类型错误,无法正确调用。
  • 缺少整数拼接逻辑:代码逐个处理单个字符并计算平方,没有将整个字符数组拼接成完整整数的步骤,完全不符合需求。

正确实现方案

方案1:自定义字符转整数逻辑

适合理解底层转换过程的实现:

#include <iostream>
#include <cstring> // 用于strlen获取字符数组长度

using namespace std;

int strToNumber(char c[]) {
    int num = 0;
    int len = strlen(c);
    
    // 遍历字符数组,拼接成完整整数
    for (int i = 0; i < len; ++i) {
        // 仅处理合法数字字符(可选:可添加非数字输入的判断逻辑)
        if (c[i] >= '0' && c[i] <= '9') {
            num = num * 10 + (c[i] - '0');
        }
    }
    
    // 返回整数的平方
    return num * num;
}

int main() {
    char nr[] = "11";
    cout << strToNumber(nr) << endl; // 输出121
    
    char sir[] = "13";
    cout << strToNumber(sir) << endl; // 输出169
    return 0;
}

关键逻辑解释

  • strlen(c):获取字符数组的有效长度(依赖字符串末尾的'\0'结束符)。
  • 整数拼接:num = num * 10 + (c[i] - '0'),每次将当前数字左移一位(乘以10),再加上当前字符对应的数字(c[i] - '0'通过ASCII值差将字符转为数字)。
  • 平方计算:拼接完成后返回num * num。

方案2:使用标准库函数简化实现

如果不需要底层逻辑,可直接用atoi函数快速转换:

#include <iostream>
#include <cstdlib> // 用于atoi函数

using namespace std;

int strToNumber(char c[]) {
    int num = atoi(c); // 标准库函数直接将数字字符串转为整数
    return num * num;
}

int main() {
    char nr[] = "11";
    cout << strToNumber(nr) << endl; // 输出121
    
    char sir[] = "13";
    cout << strToNumber(sir) << endl; // 输出169
    return 0;
}

说明

atoi函数会自动处理合法的数字字符串,将其转换为int类型,代码更简洁,但如果需要处理非数字输入,需额外添加校验逻辑。

内容的提问来源于stack exchange,提问作者popescubianca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:55:17