C语言用函数int isH(char s[],int n)判断回文数,是返回为1,为什么我写的不对啊

#include <stdio.h>

#include<string.h>

#include<stdlib.h>

 

 int isH(char s[],int n)

 {

    int i,j;

    n=1;

    for(i=0,j=strlen(s)-1; i<j;i++,j--)

    {

        if(s[i]==s[j]) 

         {n=1*n;}

        else

        {n=n*0;}

        

    }

   return (n);

}

  

int main()

 {

  char s;

  int n=1;

  printf("请输入字符串:\n");

  gets(s);

  int isH(s,n);

printf("%d\n",n);

}

你的char s;定义的是一个字符

应该定义成字符数组char s[50];

printf("%d\n",n);改成printf("%d\n", isH(s,n));

char s;改为 char s[100]

初步判断: 

gets(s);

  int isH(s,n);

第二行改为:

gets(s);

 n =  isH(s,n); //调用函数接收返回值

 

你函数中的n应该是字符串的长度吧。用了strlen也能计算出来,这个n没啥用。

代码修改如下:

#include <stdio.h>
#include <string.h>
int isH(char s[])
{
	int i,j;
	for(i=0,j=strlen(s)-1; i<j;i++,j--)
	{
		if(s[i]!=s[j]) 
			return 0;
	}
	return 1;
}

int main()
{
	char s[100]={0};
	int n=1;
	printf("请输入字符串:\n");
	gets(s);
	n = isH(s);
	printf("%d\n",n);
	return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632