不厭徐何 2023-04-04 19:24 采纳率: 56.5%
浏览 11
已结题

函数,数组,排序-c语言

输入3个职工的姓名和职工号,按职工号从小到大排列,姓名顺序也随之调整。并输入一个职工号,用折半查找法查找该职工姓名。不知道哪里错了,输入完毕就退出程序,不知道怎么调试


#include <stdio.h>
#include <stdlib.h>
#define N 3
int main(){
    void input(int num[],char name[][8]);
    void sort(int num[],char name[][8]);
    void find(int num[],char name[][8],int num1);
    int num[N];//存放职工号
    char name[N][8];//存放姓名
    input(num,name);
    sort(num,name);
    int n;
    printf("要查找的职工号:\n");
    scanf("%d",&n);
    find(num,name,n);
} 
void input(int num[],char name[][8]){
    int i;
    for(i=0;i<N;i++){
        printf("NO.:");
        scanf("%d",&num[i]);
        printf("name:");
        getchar();//回车要清除掉 
        gets(name[i]);        
    } 
}

void sort(int num[],char name[][8]){     //排序 
    int i,j,t,min;
    char temp[8];
    for(i=0;i<N-1;i++){
        min=i;
        for(j=i+1;j<=N-1;j++)
            if(num[j]<num[min])min=j;
        t=num[min];
        strcpy(temp[8],name[min]);
        num[min]=num[i];
        strcpy(name[min],name[i]);
        num[i]=t;
        strcpy(name[i],temp[8]);
    }
    for(i=0;i<N;i++)
    printf("%d  %s\n",num[i],name[i]);
} 

void find(int num[],char name[][8],int num1){ //查找 
    int head=0;
    int end=N-1;
    int mid=(head+end)/2;
    int flag=0;
    while(head<=end){
        if(num1<num[mid])end=mid-1;
        else if(num1>num[mid])head=mid+1;
        else{
            flag=1;
            printf("找到了,该职工姓名为:%s\n",name[mid]);
        } 
    }
    if(flag=0)printf("没找到该职工号!\n"); 
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-04 19:27
    关注

    目测
    strcpy(temp[8],name[min]);
    ->
    strcpy(temp,name[min]);
    下面
    strcpy(name[i],temp[8]);
    也同理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比