当前位置: 首页 > 知识库问答 >
问题:

C程序称为"回文整数"二func。函数1//返回反转整数。函数2//如果回文返回true

东方谦
2023-03-14

请帮帮忙

我正在用VisualBasic2010用C写一个程序,这个程序叫做“回文整数”。我需要写两个函数,一个是//返回整数的倒数。例如,reverse(456)返回654//并带有标题:--

倒整数(整数)

我需要写另一个函数,//返回true,如果数字是一个回文//标题:-

bool isPalindrome(整数)

我需要使用reverse函数来实现isAlindrome函数。如果一个数字与它本身相同,那么它就是一个回文。我的程序应该报告这个数字是否是回文。所有内容都在一个文件中。

我认为这个程序在我第一次编写代码时是有效的,不是作为两个函数,而是直接写入int main()。但是我必须将代码放入指定的两个函数中,一旦我这样做并进行调整,我就会收到以下错误消息,黑色的cout显示框没有出现。下面是错误报告的片段,后面是完整的错误报告

:错误LNK2005:“int _cdecl反向(int)”(?反向@@YAHH@Z)已在驱动程序中定义。obj

:致命错误LNK1169:找到一个或多个乘法定义符号

我收到以下错误报告

1>------ Build started: Project: Palindrome integer, Configuration: Debug Win32 ------
1>Build started 12/7/2013 4:54:25 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\Palindrome integer.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>implementation.obj : error LNK2005: "int __cdecl reverse(int)" (?reverse@@YAHH@Z) already defined in Driver.obj
1>c:\documents and settings\dell\my documents\visual studio 2010\Projects\Palindrome integer\Debug\Palindrome integer.exe : fatal error LNK1169: one or more multiply defined symbols found
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:02.25
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

//Bellow是我的代码

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

//Retun reversal of an integer
int reverse(int number);              //function prototype

//Return true if number is a palindrome
bool isPalindrome(int number);            //function prototype


//Driver
int main()
{
    int usersNumber = 456; //0;    //a few lines commented tempararily for easier number testing
//  cout<<"Enter a number and I'll tell you if it's a Palindrome: ";
//  cin>> usersNumber;

bool palindromeToF = (isPalindrome(usersNumber));

    if (palindromeToF == true)
    {
        cout <<"YES the number is a Palindrome";
    }
    else
    {
        cout <<"NO the number is not a Palindrome";
    }


    return 0;
}

//function Implementation
//Retun reversal of an integer
int reverse(int number)
{
    //do while loop to count number of digits in Number
    int digitsCount = 0;
    double exponent1 = 1.0;
    int quotient;

    do
    {
        int tenToPower = pow( 10.0, exponent1);
    //  cout <<"tenToPower  "<< tenToPower <<"\t  ";
        quotient = (number / tenToPower);
    //      cout <<"exponent1  "<< exponent1<<"\t  ";
            exponent1++;

            //cout <<"quotient  "<< quotient<< "\t  "<<endl;
        digitsCount++;
    }while (!quotient == 0);


    //populating array "arrDigits" with integer's digits
    int *arrDigits = NULL;
    arrDigits = new int[digitsCount];
    double exponent2 = 0.0;
        for(int i = 0; i < digitsCount; i++)
        {
        int powerOfTen = pow( 10.0, exponent2);
    //cout <<endl<<"adding "<<((number / powerOfTen) % 10) <<" to sum";
        //cout <<powerOfTen;
        arrDigits[i]= ((number / powerOfTen) % 10);
        exponent2++;
        }

        //reverse number & populate array "arrDigRevers" with reversed order number 
        int *arrDigRevers = NULL;
        arrDigRevers = new int[digitsCount];
        int j = 0;
        int reversedNum = 0;
        double exponent3 = 0.0;
        for(int i = digitsCount-1; i >= 0; i--)
        {
            int powerOfTenB = pow( 10.0, exponent3);
        reversedNum += (powerOfTenB * arrDigits[i]);    //return of reverse func.
        exponent3++;

        /*   //reversed integer put into array 
        if(j < digitsCount)
        {
            arrDigRevers[j] = arrDigits[i];
            //cout <<"\t"<< "arrDigRevers"<<"["<< j<<"]="<< arrDigRevers[j]<<" "<< "arrDigits"<<"["<< j<<"]="<< " "<<arrDigits[j]<<" ";
            j++;
        }
        */

        }

        delete[] arrDigits;
        delete[] arrDigRevers;
        arrDigits = NULL;
        arrDigRevers = NULL;

        //cout <<endl<<"reversed number is "<< reversedNum;

        return reversedNum;
}


//function Implementation 
//Return true if number is a palindrome
bool isPalindrome(int number)
{
    if(number == reverse(number))
        {
            return true;
        }
        else
        {
            return false;
        }
}

共有1个答案

赵同
2023-03-14

答案就在这里:

<代码>1

似乎在两种实现中都定义了int reverse(int number)。cpp和司机。cpp。您需要从项目中重命名或删除其中一个定义。

 类似资料:
  • 出于某种原因,在下面的递归函数中, 永远不递增p,也就是说字符串s永远不是一个回文,尽管在我的程序中,s确实是一个回文,次数相当少。但是在下面一行中它仍然返回false 是因为功能吗?s采用的一些值为:aaa、aba、AAAA、abbb、bab 我已确保s中没有前后空格 P、 S:我已经检查过了,x==n 示例输入: 输出0。回文:aaaaaa、abaaba、aaaaaa

  • 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回

  • 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回

  • 受到这个问题的启发。我创建了这个函数: 不幸的是,它不起作用。为什么?是否可以用C返回一个指向二维数组的指针,并使用上面的方法保留[][]符号?如果不是,原因何在?我在这里遗漏了什么? 我知道通过创建外部数组,通过引用将其传递给函数,可以解决这个问题。但是它有点难看,我想把所有的东西都封装在一个函数中。

  • 在rust中,任何函数都有返回类型,当函数返回时,会返回一个该类型的值。我们先来看看main函数: fn main() { //statements } 之前有说过,函数的返回值类型是在参数列表后,加上箭头和类型来指定的。不过,一般我们看到的main函数的定义并没有这么做。这是因为main函数的返回值是(),在rust中,当一个函数返回()时,可以省略。main函数的完整形式如下:

  • C++ 数组 C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。 如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:int * myFunction() { . . . } 另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。 现在,让我们来看下面的函数,它会生成 10 个随机数,并