| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 844 人关注过本帖
标题:小菜求各位大神指教。。。
只看楼主 加入收藏
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
以下是引用赤血之魂在2012-12-26 16:40:50的发言:

#include
#include
#include
 
int main(void)
{
    int panduan(char a[]);
    int s;
    char a[20];
 
    printf("please input 1 string");
    gets(a);
    s = panduan(a);
    printf("%d", s);
    system("pause");
 
    return 0;
}
 
int panduan(char a[])
{
    int n, j;
    char b[20];
 
    n = strlen(a);
    for (j=0; j
strcmp函数问题出在哪里?
   我运行的任何字符串都输出0,回文的也是。

新手发言,请多指教。
2012-12-26 17:18
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 17楼 C语言白痴级
额额额额额额额。。。。。
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    int fun(char *);//声明。。。。
    int t;
    char a[20];
    printf("please input 1 string");
    gets(a);
    t=fun(a);
    printf("%d",t);
    system("pause");
    return 0;
}
int fun(char *a)
{
    int n,j;
    char b[20];
    n=strlen(a);
    for(j=0;j<n;j++)
        b[n-j-1]=a[j];
    b[n] = '\0';//这个结束符非常重要
    if(strcmp(a,b)==0)  return 1;
    else return 0;
} 


[fly]存在即是合理[/fly]
2012-12-26 17:26
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAX_SIZE 40
#define ERROR 0
#define OK 1

int panduan(char a[]);

int main(void)
{

    char a[MAX_SIZE];
    
    printf("please input 1 string:\n");
    gets(a);
    
    if (OK == panduan(a))
    {
        printf("是回文\n");
    }
    else
    {
        printf("不是回文\n");
    }
    
    system("pause");
    
    return 0;
}

int panduan(char a[])
{
    int n, j;
    char b[MAX_SIZE];
    
    n = strlen(a);
    for (j=0; j<n; j++)
    {
        b[n-j-1] = a[j];
    }
    for (j=0; j<n; j++)
    {
        if (a[j] != b[j])
        {
            return ERROR;
        }
    }

    return OK;
}


这个没问题啊, 我只是改了改宏定义什么的,核心都没有变啊。可以实现的

让平淡诉说非凡!
2012-12-26 17:31
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:0 
回复 22楼 azzbcc
极度赞成, 问题就出在‘\0’上。

让平淡诉说非凡!
2012-12-26 17:35
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:10 
回复 21楼 wangjialong
不是strcmp的问题, 是'\0'的问题。每个字符串都是以'\0'作为结尾的,就是说,数组里的最后一位时'\0'。所以,每次比较时,都会不一样。结果当然是0了。

让平淡诉说非凡!
2012-12-26 17:53
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
回复 25楼 赤血之魂
谢谢谢谢,终于弄懂了~~~~~~~~~~~~~~~祝福你,感恩你。
2012-12-26 21:26
聊斋唐少
Rank: 2
等 级:论坛游民
帖 子:17
专家分:11
注 册:2012-12-26
收藏
得分:0 
#include<stdio.h>
int fun(char str[])
{
    int n,k,flag=1;
    for(n=0;str[n]!='\0';n++)
    for(k=0;k<n/2;k++)
       if(str[k]!=str[n-k-1])
       {
           flag=0;
           break;
        }
     return flag;
}
int main()
{
   char s[80];
   printf("\n please enter string: \n");
   gets(s);
   if(fun(s)==1)  printf("%s是回文\n",s);
   else prinf("%s不是回文\n",s);
   return 0;
}
用数组直接这样就搞定了!!
2012-12-26 21:48
快速回复:小菜求各位大神指教。。。
数据加载中...
 
   



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

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