我怎样才能解决这个问题的代码,以检查一个数是否为回文,使用指针?

问题描述 投票:0回答:2

我很新的C.我真的不明白如何让指针正确。我知道它可以在不指针做,但我不得不使用它们

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

void palindrome(int *n)
{
   int ok=0,*p,*m;
    m=n;
    while(*n!=0)
    {
        *p=*p*10+*n%10;
        *n=*n/10;
    }
    if (*m==*p) ok=1;
    if (*m!=*p) ok=0;

    if (ok==1)
        printf("Number is palindrome.");
    if (ok==0)
        printf("Number is not palindrome");
}

int main()
{
    int n;
    printf("Give value to n: ");
    scanf("%d",&n);

    palindrome(n);


}

预期resut将是,例如,数字212是回文,数字312是不回文

c pointers numbers palindrome
2个回答
0
投票

下面是代码。我想你应该尝试和了解指针实际使用之前是如何工作的。我不想给你提供的代码,但因为你是新人,我提供一个工作代码。试着了解它是如何工作的,而不是仅仅复制粘贴此代码在任何你必须把。

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

void palindrome(int *n)
{
   int ok=0;
   int *p = (int *)malloc(sizeof(int));
   int *m = (int *)malloc(sizeof(int));
   *p=0;
    *m=*n;
    while(*n!=0)
    {
        *p=*p*10+*n%10;
        *n=*n/10;
    }
    if (*m==*p) ok=1;
    if (*m!=*p) ok=0;

    if (ok==1)
        printf("Number is palindrome.");
    if (ok==0)
        printf("Number is not palindrome");
}

int main()
{
    int n;
    printf("Give value to n: ");
    scanf("%d",&n);
    palindrome(&n);
    return 0;

}

0
投票

@ arpit,阿格拉瓦尔

你忘了添加免费,在结束

void palindrome(int *n)
{
    ...
    free(p);
    free(m);
}
© www.soinside.com 2019 - 2024. All rights reserved.