| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖, 1 人收藏
标题:求用二维数组解决此问题
只看楼主 加入收藏
Ruzy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-10
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:6 
求用二维数组解决此问题
写几个函数:1.输入10个职工的姓名和职工号;2.按职工号由小到大顺序排序,姓名顺序也随之调整;3.要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。

我只会一维数组。。。求解用二维数组,最好带注释,谢谢!
搜索更多相关主题的帖子: 姓名 最好 
2010-04-29 16:16
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
你用的是哪种开发环境?
说明一下,不然怎么帮你写?

南国利剑
2010-04-29 17:38
miracle110
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 17:51
Ruzy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-10
收藏
得分:0 
回复 楼主 Ruzy
TC编译软件
2010-04-29 19:07
Ruzy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-10
收藏
得分:0 
回复 2楼 南国利剑
TC编译器
2010-04-29 19:07
Ruzy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-10
收藏
得分:0 
回复 3楼 miracle110
是老师要求。。。
2010-04-29 19:08
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:20 
我用c写了一个,定义了一个结构体,然后再,定义结构体数组。
我认为处理这个问题用这种方法比较好。请楼主看看。也可以给你的老师看看,是否符合要求。
请多多指教。
程序代码:
#include<stdio.h>
#include<string.h>

struct employee
{
    int number;
    char name[20];
};

int main()
{
    int i,j;
    int t,n;
    char c[20];
    employee emp[10];
    //职工信息的录入
    for(i=0;i<10;i++)
    {
        printf("请输入职工的姓名:");
        scanf("%s",emp[i].name);
        printf("请输入职工的编号:");
        scanf("%d",&emp[i].number);

    }
    //对职工进行按工号排序
    for(i=1;i<10;i++)
        for(j=0;j<9;j++)
            if(emp[j].number>emp[j+1].number)
            {
                t=emp[j].number;
                emp[j].number=emp[j+1].number;
                emp[j+1].number=t;

                strcpy(c,emp[j].name);
                strcpy(emp[j].name,emp[j+1].name);
                strcpy(emp[j].name,c);
            }
    //输出排序后的职工信息
    for(i=0;i<10;i++)       
    {
        printf("职工编号:%d\n",emp[i].number);
        printf("姓名:%s\n",emp[i].name);
    }
    //以下是查找部分,采用折半查找
    printf("请输入要查找职工的工号:");
    scanf("%d",&n);
    int m,m1,m2;
    m=10/2;
    m1=0;
    m2=10;
    while(m1!=m2)
    {
        if(n<emp[0].number||n>emp[9].number)
            break;
        if(n==emp[m].number)
        {
            printf("所查找的职工的姓名是:%s\n",emp[m].name);
            return 1;
        }
        else if(n>emp[m].number)
        {
            m1=m;
            m=(m1+m2)/2;
        }
        else
        {
            m2=m;
            m=(m1+m2)/2;
        }
    }

    printf("没有找到该编号对应的职工。\n");
    return 0;
}



 

南国利剑
2010-04-29 19:30
快速回复:求用二维数组解决此问题
数据加载中...
 
   



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

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