C语言 判断回文数的
#include<stdio.h>main(){chara[50];int*m,i,j;gets(a);m=a;for(i=0,j=strlen(a)-1;i<j;i++...
#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]字符串的最后一位么?哪错了?
另外,书本要我用函数编,“数组名为实参,指针为形参”,这个又怎么编?各位大虾帮帮忙写一下。 展开
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 <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);
}
# 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");
}
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;
你可以把具体的值打印出来,这也是常见的调试方法,同时也可以看出数据在内存中的排列.
把int *m改成char *m;
你可以把具体的值打印出来,这也是常见的调试方法,同时也可以看出数据在内存中的排列.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询