c语言简单问题

yoshikis 2012-03-01 06:11:56
输入五位数,判断是否是回文数。我的代码哪个地方错了,怎么老是输出No呢?

#include<stdio.h>
#include<string.h>
int main()
{
int n,length,i=0,c;
char str[6];
while(scanf("%d",&n)!=EOF)
{
c=0;
sprintf(str,"%d",n);
length=strlen(str);
for(i=0;i<length;i++)
{
if(str[i]==str[length-i-1])
c++;
else
break;
}
if(c==3)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
氰客 2012-03-01
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
int main()
{
int n,length,i=0,c;
char str[6];
while(scanf("%d",&n)!=EOF)
{
c=0;
sprintf(str,"%d",n);
length=strlen(str);
for(i=0;i< (length / 2 + 1);i++)
{
if(str[i] == str[length - i - 1])
c++;
else
break;
}
if(c==3)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}

你循环条件写错了- -如果是回文的话 c > 3 具体的自己看
knightGG 2012-03-01
  • 打赏
  • 举报
回复
小弟初学。你打个断点在 length=strlen(str); 这个地方。
看看这个 length的值是什么。
例子:
char aa[10];cout<<strlen(aa)<<endl; //结果是不定的

yoshikis 2012-03-01
  • 打赏
  • 举报
回复
还是不行啊。
jixingzhong 2012-03-01
  • 打赏
  • 举报
回复
或者也可以修改
if(c==3)
==》
if(c==length)
jixingzhong 2012-03-01
  • 打赏
  • 举报
回复
length=strlen(str);
==>
length=(strlen(str)+1)/2;

不需要回文判断整个字符串。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧