C语言 判断回文数的
#include<stdio.h>
main()
{
char a[50];
int *m,i,j;
gets(a);
m=a;
for(i=0,j=strlen(a)-1;i<j;i++,j--)
{
if(*(m+i)!=*(m+j))
{
printf("No");
break;
}
printf("Yes");
}
}
刚学C语言,这里用了指针,运行时无论输什么都打出“No”,我输入“12321”那么长度不就是五位么?减去1,*(m+4)不就是a[50]字符串的最后一位么?哪错了?
另外,书本要我用函数编,“数组名为实参,指针为形参”,这个又怎么编?各位大虾帮帮忙写一下。
#include<stdio.h>
#include <string.h>
#include<iostream.h>
void main()
{
char a[50];
int i,j;
char *m;
gets(a);
m=a;
for(i=0,j=strlen(a)-1;i<j;i++,j--)
{
if(*(m+i)!=*(m+j))
{
printf("No");
break;
}
else if(j-i==1||j-i==2)
printf("Yes");
}
cout<<endl;
}
给你改了下,基本符合要求了。
主要是strlen的头函数, int *m定义错误,数伏雹 printf("Yes")只要厅蔽输出一次等
算法是没问题的
用函数编的
#include<stdio.h>薯帆
#include <string.h>
#include<iostream.h>
void fun(char *m)
{ int i,j;
for(i=0,j=strlen(m)-1;i<j;i++,j--)
{
if(*(m+i)!=*(m+j))
{
printf("No");
break;
}
else if(j-i==1||j-i==2)
printf("Yes");
}
}
void main()
{
char a[50];
char *p;
gets(a);
p=a;
fun(p);
cout<<endl;
}
判断是陪型凳租握否回文芦旅
# include <stdio.h>
int hw(char *p)
{ char *q;int n;
n=strlen(p);
q=p+n;q--;
while(p<q)
if(*p==*q) {p++;q--;}
else return 0;
return 1;
}
void main()
{ char *p="heeh";
int c;c=hw(p);
printf("%d",c);
}
你定义的指针是指岩巧行向一个字符数组的,不能用int类型的粗哗指针,建宽镇议把指针改为char型的,char* m试试。
#include<stdio.h>
void main()
{
int a,b,i=0;
scanf("%d"如袭,&a);
b=a;
while (b>0)
{
i=i*10+b%10;
b=b/游橡正神悔10;
}
if (i==a)printf("Yes\n");
else printf("No\n");
}
注意数据类型.
把int *m改成char *m;
你可以把具体的笑悉值打印出来,这碰逗乎也是常见的调试指兄方法,同时也可以看出数据在内存中的排列.