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;
}
#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");
}
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