| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 417 人关注过本帖
标题:遇到一个简单函数问题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:13 回复次数:3 
遇到一个简单函数问题
题目是:判断一个字符串是不是回数
不知道我哪步错了,不管我怎么输,都是显示‘NO’
#include"stdio.h"
int fun(char *str)
{
  int i=0,k=0;
   while(*str!='\0')
      { k++;         \*K是求这个字符的长度*\
   str++;}
   for(i=0;i<=k-1-i;i++)
       if(str[i]!=str[k-1-i])              \*判断是不是回数*\
       {
      return(0);
       break;
       }
       if(i>=k-1-i)
           return(1);
}
 void main()
 {
   char s[20];
   gets(s);             \*输入字符串*\
   if(fun(s))
     printf("yes");
   else
       printf("no");
 
 }
搜索更多相关主题的帖子: 函数 
2010-08-17 16:23
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1686
专家分:4252
注 册:2007-12-27
收藏
得分:0 
你在数长度的时候把str指向字符串末尾去了
下面使用的str就没啥意义了

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-17 17:05
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:13 
楼上说的对,因为你的while函数让str指向了'\0',所以后续的引用没有意义。
改成:
#include <stdio.h>

int fun(char *str)
{
   char *tmp = str;
   int i = 0,k = 0;
   while(*tmp != '\0')
   {
        k++;        //K是求这个字符的长度
        tmp++;
   }
        
   for(i=0;i<=k-1-i;i++)
   if(str[i]!=str[k-1-i])              //判断是不是回数
   {
        return(0);
//        break;                            //有return不需要break
    }

    if(i>=k-1-i)
        return(1);
}

int main()
{
   char s[20];
   gets(s);             //输入字符串

   if(fun(s))
     printf("yes!\n");
   else
       printf("no!\n");

   return 0;
}
2010-08-17 19:39
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
谢谢
2010-08-18 11:07
快速回复:遇到一个简单函数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014612 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved