【C语言】定义一个判断回文数的函数,输入一串数字或字母,判断是否为回文数。(要求使用数组)

int main()
{
int N,i,k=1;
printf("请输入您要输入字母的个数");
scanf("%d",&N);
char a[N];
getchar();
for(i=0;i<=N;i++){
scanf("%c",&a[i]);}
for(i=0;i<N/2;i++){
if(a[i]!=a[N-i-1])
{
k=0;
break;
}
}
if(k=1)
printf("您输入的数是回文数");
else
printf("您输入的数不是回文数");

return 0;
}

#include<stdio.h>
#include<math.h>
int check(char a[],int N)
{ int i;
  for(i=0; i<N/2; i++)
  { if(a[i]!=a[N-i-1])
      return 0;
  }
  return 1;
}
int main()
{ int N,i,k=1;
  printf("请输入您要输入字母的个数");
  scanf("%d",&N);
  char a[N];
  getchar();
  for(i=0; i<=N; i++)
  { scanf("%c",&a[i]);
  }
  
  if(check(a,N))
    printf("您输入的是回文字符串");
  else
    printf("您输入的不是回文字符串");

  return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-18
#include<stdio.h>

int main(){
    char s[1000];
    int i=0,n=0;
    bool flag=true;
    char c;
    while(scanf("%c",&c)!=EOF){
        s[n++]=c;
        printf("%c %d\n",s[n-1],n-1);
    }
    for(i=0;i<n/2;i++){
        if(s[i]!=s[n-2-i]){
            flag=false;
            break;
        }
    }
    if(flag) printf("是回文数\n");
    else printf("不是回文数\n");
}

第2个回答  2018-11-18
这段代码至少有两个错误。第一,输入N个数,但是你的第一个for循环是i从0开始,i<=N,就说明有N+1个数,所以数组越界,会崩溃(数组a只定义了N的长度)。第二,后面的if(k=1)一直会为真(这样写是判断1是否能成功赋值给1,这个当然为真),应该是两个等号if(k==1)。追问

请问能不能帮我修改为函数形式?谢谢

追答

手机打字很辛苦的...,我只说怎么做。你可以把函数声明写成这样,bool IsPlalindrome(int N, char* p);把第二个for语句移到这个函数里,再稍微修改一下,OK

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网