| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 558 人关注过本帖
标题:返回值 问题
只看楼主 加入收藏
tdy1006
Rank: 4
等 级:业余侠客
帖 子:173
专家分:240
注 册:2009-5-13
结帖率:100%
收藏
 问题点数:0 回复次数:4 
返回值 问题
程序代码:
#include <stdio.h>
#define maxsize 100
typedef struct seqlist
{
    int data[maxsize];
    int len;
};
//顺序查找非递归
int seqsearch(seqlist l,int key)
{
    int k=l.len-1;
    while(k>=0&&l.data[k]!=key)
        k--;
    return k;
}
int seqsearch(seqlist l,int n,int key)
{
    int k=0;
    if(-1==n)
        k=-1;
    else
        if(l.data[n]==key)
            k=n;
        else
            k=seqsearch(l,n-1,key);
    return k;
}

void main()
{
    int i,k;
    int  key;
    seqlist l;
    printf(" please input the  length of list:");
    scanf("%d",&l.len);
    printf("please input the data of list:\n");
    for (i=0;i<l.len;i++)
        scanf("%d",&l.data[i]);
    do
    {
        printf("请输入待查找的关键字(-1 退出):");
        scanf("%d",&key);
        if(key==-1) break;
        if((k=seqsearch(l,l.len,key)!=-1))
            printf("%d 在线性表的第%d个位置。\n",key,k);
        else
            printf("未找到指定元素!\n");
    }
    while(key!=-1);
}
为什么在search()带回的值不管是多少,k总是1在main()中除-1外,
大家给看看。
搜索更多相关主题的帖子: 返回值 
2009-11-11 09:07
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
程序代码:
#include <stdio.h>
#define maxsize 100
typedef struct seqlist
{
    int data[maxsize];
    int len;
};
//顺序查找非递归
int seqsearch(seqlist l,int key)    //  LZ重载函数是想干什么呢??
{
    int k=l.len-1;
    while(k>=0&&l.data[k]!=key)
        k--;
    return k;
}
int seqsearch(seqlist l,int n,int key)
{
    int k=0;
    if(-1==n)
        k=-1;
    else
        if(l.data[n]==key)
            k=n;
        else
            k=seqsearch(l,n-1,key);
    return k;
}

void main()
{
    int i,k;
    int  key;
    seqlist l;
    printf(" please input the  length of list:");
    scanf("%d",&l.len);
    printf("please input the data of list:\n");
    for (i=0;i<l.len;i++)
        scanf("%d",&l.data[i]);
    do
    {
        printf("请输入待查找的关键字(-1 退出):");
        scanf("%d",&key);
        if(key==-1) break;
        if((k=seqsearch(l,l.len,key))!=-1)   //  主要问题出在LZ不在把返回值赋给k,而是把布尔表达示的值,故都是一···注意括号的位置
            printf("%d 在线性表的第%d个位置。\n",key+1,k);   //  这里是个人意见
        else  
            printf("未找到指定元素!\n");
    }
    while(key!=-1);
}
2009-11-11 12:35
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
楼上的高手似乎有点错哦···改过来

#include <stdio.h>
#define maxsize 100
typedef struct seqlist
{
    int data[maxsize];
    int len;
};
//顺序查找非递归
int seqsearch(seqlist l,int key)    //  LZ重载函数是想干什么呢??
{
    int k=l.len-1;
    while(k>=0&&l.data[k]!=key)
        k--;
    return k;
}
int seqsearch(seqlist l,int n,int key)
{
    int k=0;
    if(-1==n)
        k=-1;
    else
        if(l.data[n]==key)
            k=n;
        else
            k=seqsearch(l,n-1,key);
    return k;
}

void main()
{
    int i,k;
    int  key;
    seqlist l;
    printf(" please input the  length of list:");
    scanf("%d",&l.len);
    printf("please input the data of list:\n");
    for (i=0;i<l.len;i++)
        scanf("%d",&l.data[i]);
    do
    {
        printf("请输入待查找的关键字(-1 退出):");
        scanf("%d",&key);
        if(key==-1) break;
        if((k=seqsearch(l,l.len-1,key))!=-1)   //  主要问题出在LZ不在把返回值赋给k,而是把布尔表达示的值,故都是一···注意括号的位置
            printf("%d 在线性表的第%d个位置。\n",key,k+1);   //  这里是个人意见
        else  
            printf("未找到指定元素!\n");
    }
    while(key!=-1);
}
2009-11-11 13:20
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
LS~~~~~~~~``````````
2009-11-11 13:25
tdy1006
Rank: 4
等 级:业余侠客
帖 子:173
专家分:240
注 册:2009-5-13
收藏
得分:0 
呵呵,谢谢各位了啦,
上面问题自己找到了,()打错了位置,所以K的值成了BOOL型,所以提前结贴了,
本来是想把几种查找封装起来的,所以用了重载

[ 本帖最后由 tdy1006 于 2009-11-11 20:27 编辑 ]
2009-11-11 20:25
快速回复:返回值 问题
数据加载中...
 
   



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

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