C语言编程,用递归求回文字符串
#include<stdio.h>#include<string.h>#defineN50voidinput(chara[]){charc;inti;printf("请在...
#include <stdio.h>
#include <string.h>
#define N 50
void input(char a[])
{
char c;
int i;
printf("请在下面输入字符串:\n");
for(i=0;i<N;i++)
{
scanf("%c",&c);
if(c=='q')
break;
while(c<'a'||c>'z')
scanf("%c",&c);
a[i]=c;
}
}
int fun(char a[],int length,int i)
{
if(i==length/2)
return 1;
if(a[i]!=a[length-i-1])
return 0;
fun(a,length,i+1);
}
int main()
{
char a[N];
int length;
int i=0;
input(a);
length=strlen(a);
printf("%d",length);
if(fun(a,length,i))
printf("yes\n");
else
printf("no\n");
return 0;
}
这有几个问题,一个是用strlen测出的长度为55是怎么回事,我定义的长度只有50啊,还有一个是我想在while(c<'a'||c>'z')这用(c<'a'||c>'z'||c<'A'||c>'Z')行不行 展开
#include <string.h>
#define N 50
void input(char a[])
{
char c;
int i;
printf("请在下面输入字符串:\n");
for(i=0;i<N;i++)
{
scanf("%c",&c);
if(c=='q')
break;
while(c<'a'||c>'z')
scanf("%c",&c);
a[i]=c;
}
}
int fun(char a[],int length,int i)
{
if(i==length/2)
return 1;
if(a[i]!=a[length-i-1])
return 0;
fun(a,length,i+1);
}
int main()
{
char a[N];
int length;
int i=0;
input(a);
length=strlen(a);
printf("%d",length);
if(fun(a,length,i))
printf("yes\n");
else
printf("no\n");
return 0;
}
这有几个问题,一个是用strlen测出的长度为55是怎么回事,我定义的长度只有50啊,还有一个是我想在while(c<'a'||c>'z')这用(c<'a'||c>'z'||c<'A'||c>'Z')行不行 展开
1个回答
展开全部
#include <stdio.h>
#include <string.h>
#define N 50
void input(char a[]) {
char c;
int i;
printf("请在下面输入字符串:\n");
for(i = 0;i < N;i++) {
scanf("%c",&c);
if(c == 'q') break; // q to quit!
while(c < 'a' || c > 'z') scanf("%c",&c); // 只读入小写字母
a[i] = c;
}
a[i] = '\0'; // 添加串结束符
}
int fun(char a[],int length,int i) {
if(i == length/2) return 1;
if(a[i] != a[length - i - 1]) return 0;
fun(a,length,i + 1);
return 1;
}
int main() {
char a[N];
int length;
int i=0;
input(a);
length = strlen(a);
// printf("%d",length);
if(fun(a,length,i)) printf("yes\n");
else printf("no\n");
return 0;
}
更多追问追答
追问
printf("%d",length)是我用来测试长度是不是正确的,测出来是55是怎么回事,我定义的最大长度都才50啊
追答
在函数input()中,没有给a[]添加'\0',那么在main()中的strlen(a)如何才能找到'\0'呢,这可是strlen()计数a字符个数的结束标志啊!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询