| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 844 人关注过本帖
标题:小菜求各位大神指教。。。
只看楼主 加入收藏
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
int fun(char s[])
{  
    int i,b;
    char a[100];
    b=strlen(s);   
    for(i=0;i<b;i++)
    a[b-i-1]=s[i];
    if(!strcmp(s,a))
    return 1;
    else   return 0;
}
int main(void)
{  
    char s[100];
    int i;
    printf("请输入字符串:");
    gets(s);
    i=fun(s);   
    if(i==1)
    printf("这是回文串!\n");
    else   printf("这不是回文串!\n");
    system("pause");
}
为什么上面这个就行。。。。我觉得我写的这个没什么错误呀。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    int fun(char a);
    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];
    if(strcmp(a,b)==0)  return 1;
    else return 0;
}
2012-12-26 13:13
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
回复 11楼 C语言白痴级
上面那个程序,是把函数定义在了main函数前面,就是先定义后调用,是没什么问题;
而下面这个函数的定义在main函数的后面,所以应该在main函数调用fun函数前先声明,方可调用,可是你的声明似乎错了。
一般比较好的程序写法是:
1、#include 指令
2、#define指令
3、类型定义
4、外部变量声明
5、除main函数值为的函数的原型的声明
6、main函数
7、其他函数的定义



[ 本帖最后由 wkz2012 于 2012-12-26 13:20 编辑 ]

我了个去的编程!
2012-12-26 13:16
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    int panduan(char *a1);//函数声明也要改哦
    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 *a1)//要传址, 不能是char a1,要是char a1的话,传进去的只是一个字符而已。
{
    int n,j;
    char b[20];
    n=strlen(a1);
    for(j=0;j<n;j++)
        b[n-j-1]=a1[j];
    if(strcmp(a1,b)==0)  return 1;
    else return 0;
}

/*好像你的算法有问题,执行的结果不对啊*/

让平淡诉说非凡!
2012-12-26 14:35
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:0 
回复 11楼 C语言白痴级
函数声明错了啊!!!

让平淡诉说非凡!
2012-12-26 14:37
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
回复 14楼 赤血之魂
函数声明错了吗。。。我从来就是把那个分函数复制上来再加一个分号呀
2012-12-26 15:06
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
回复 13楼 赤血之魂
确实有问题。。。但我没看出来哪里有问题。。。
2012-12-26 15:07
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
回复 12楼 wkz2012
声明不就是把分函数那个名称复制上来再加一个分号吗
2012-12-26 15:08
C语言白痴级
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-11-23
收藏
得分:0 
int fun(char s[])
{  
    int i,b,t;
    char a[20]={0};
    b=strlen(s);   
    for(i=0;i<b;i++)
    a[i]=s[b-1-i];
    if(strcmp(s,a)==0)
    return 1;
    else   return 0;
}
我想知道用这个函数判断回文到底有什么问题。。。不管我输什么,结果都是是回文。。。
2012-12-26 15:37
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:0 
回复 14楼 赤血之魂
int fun(char a); 你没发现这里差两个方括号吗?应该是int fun(char a[]);

让平淡诉说非凡!
2012-12-26 16:13
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

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<n; j++)
    {
        b[n-j-1] = a[j];
    }

    for (j=0; j<n; j++)
    {
        if (a[j] != b[j])
        {
            return 0;
        }
    }
        return 1;
}

/*妹纸啊, 你看这回行了吧!^_^*/

应该是strcmp函数的问题。

让平淡诉说非凡!
2012-12-26 16:40
快速回复:小菜求各位大神指教。。。
数据加载中...
 
   



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

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