求指出哪里错误

C++语言 码拜 8年前 (2016-04-18) 1093次浏览
写一函数,判断一字符串能否回文,回文是指正反序相同,如LeveL
#include<stdio.h>
#include<string.h>
int fun(char *m)
{
int i=0;
i=strlen(m);
int k;
for (k = 0; k < i; k++)
{
if( m[k] = m[i- k – 1])
printf(“YES”);
else
printf(“NO”);
}
}
main()
{
char *p;
gets(p);
fun(p);
}
解决方案

60

错误好几个:
1.你应该给p分配空间,否则的话gets会向未知区域写入值
2.m[k] = m[i- k – 1]这里少了一个=
3.你比较的时候,不应该每比较一次就printf一次,而应该等比较结束再printf
4.fun既然不用返回值就改为void,main前面也漏了返回值类型

#include<stdio.h>
#include<string.h>
void fun(char *m)
{
	int i=0,flag=0;
	i=strlen(m);
	int k;
	for (k = 0; k < i; k++)
	{
		if( m[k] != m[i- k - 1])
		{
			flag = 1;
			break;
		}
	}
	if(!flag)
		printf("YES\n");
	else
		printf("NO\n");
}
void main()
{
	char p[64] = {0};
	gets(p);
	fun(p);
}

20

解决了的话记得及时结帖求指出哪里错误

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求指出哪里错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)