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

C++调用Verify函数出现参数过多错误的求助

解决C++函数参数不匹配报错及代码问题

核心错误原因

报错too many arguments to function 'bool Verify(int, int)'的直接原因是函数声明与定义/调用不匹配:

  • 代码开头声明的Verify函数仅接受2个参数:bool Verify(int number,int size);
  • 实际调用时传入了3个参数Verify(number,size,array),且函数定义也写了3个参数bool Verify(int number,int size,int array[])

修复步骤

  1. 修正函数声明
    将开头的函数声明改为与定义一致的形式:
bool Verify(int number,int size,int array[]);
  1. 修复其他潜在问题
    除参数不匹配外,代码还有两处需要调整:
  • 替换非标准变长数组:int array[size];是C风格变长数组,C++标准不支持,建议改用std::vector(需添加<vector>头文件),提升代码可移植性:
    #include<vector>
    // 替换int array[size];为:
    std::vector<int> array(size);
    // 函数参数同步修改为:
    bool Verify(int number,int size,std::vector<int>& array);
    
  • 修复循环变量递增逻辑:第二个for循环for(int j=0;j<size;j+2)中的j+2不会改变j的值,会导致无限循环,需改为j+=2

修复后的完整代码

#include<iostream>
#include<cmath>
#include<vector>

bool Verify(int number,int size,std::vector<int>& array);

int main()
{
    int number;
    std::cin>>number;
    int size= floor(log10(number))+1;
    std::vector<int> array(size);

    if(Verify(number,size,array)){
        std::cout<<"这个数字验证通过";
    }else{
        std::cout<<"这个数字验证不通过";
    }
    return 0;
}

bool Verify(int number,int size,std::vector<int>& array)
{
    int sum=0;
    for(int i=0;i<size;i++){
        int digit=number%10;
        number=number/10;
        array[i]=digit;
    }

    for(int j=0;j<size;j+=2){
        if(array[j]%2==1)
        {
            sum=sum+array[j];
        }else if(array[j]>4){
            sum=sum+2*array[j]-9;
        }else
        {
            sum=sum+2*array[j];
        }
        
    }
    return sum%10==0;
}

额外提示

  • 调用Verify时无需写==true,函数返回的就是布尔值,直接写if(Verify(...))更简洁
  • std::vector是C++中动态数组的标准实现,比变长数组更安全、灵活

内容的提问来源于stack exchange,提问作者potato-sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:33:33