weixin_45821714 2019-12-14 21:58 采纳率: 0%
浏览 2195

用c语言编写以下程序:输入十个职员的姓名和工号,并按工号大小进行排序,姓名顺序也随之排序

图片说明

//输入10个员工的工号和姓名,并将其以工号大小排序,姓名随之排序
#include<stdio.h>
#include<string.h>
#define N 3                //为了方便起见输入三个信息来测试代码 
struct WORKERS             //存放职员的信息 
{
    int num;                  //工号 
    char name[20];       //姓名   
}worker[N]; 
void input_();            //输入员工信息 
void sort();               //排序 
int main()
{
    input_();
    sort();
    return 0;
}
void input_()
{
    int i;
    printf("工号   姓名"); 
    for(i=0;i<N;i++)
    {
        scanf("%d %s",&worker[i].num,&worker[i].name);
    }
}
void sort()
{
    int i,j;
    int *ntemp;              //储存工号的中间变量 
    char *stemp;             //储存姓名的中间变量 
    for(i=0;i<N;i++)        //冒泡法排序 
    {
        for(j=0;j<N-i;j++)
        {
            if(worker[j].num>worker[j+1].num)
            {
                ntemp=worker[j+1].num;
                worker[j+1].num=worker[j].num;
                worker[j].num=ntemp;
                strcpy(stemp,worker[j+1].name);
                strcpy(worker[j+1].name,worker[j].name);
                strcpy(worker[j].name,stemp);
            }
        }
    }
    for(i=0;i<N;i++)
    {
        printf("%d %s\n",worker[i].num,worker[i].name);
    }
}
```这个程序中需要使用结构体,指针等内容,并使用两个函数实现,我的代码中出现了[Error] invalid conversion from 'int' to 'int*' [-fpermissive]这个错误
在测试时出现第三项无法正确输出的错误,如图片所示




已经解决了,以下是正确代码
//输入10个员工的工号和姓名,并将其以工号大小排序,姓名随之排序
#include<stdio.h>
#include<string.h>
#define N 3                //为了方便起见输入三个信息来测试代码 
struct WORKERS             //存放职员的信息
{
    int num;               //工号
    char name[20];         //姓名
} worker[N];
void input_();             //输入员工信息
void sort();               //排序
int main()
{
    input_();
    sort();
    return 0;
}
void input_()
{
    int i;
    printf("工号   姓名\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d %s", &worker[i].num, &worker[i].name);
    }
}
void sort()
{
    int i, j;
    int ntemp;              //储存工号的中间变量
    char *stemp=&worker;             //储存姓名的中间变量
    printf("排序后员工信息列表\n");
    for (i = 0; i < N - 1; i++) //冒泡法排序
    {
        for (j = 0; j < N - i - 1; j++)
        {
            if (worker[j].num > worker[j + 1].num)
            {
                ntemp = worker[j + 1].num;
                worker[j + 1].num = worker[j].num;
                worker[j].num = ntemp;
                strcpy(stemp, worker[j + 1].name);
                strcpy(worker[j + 1].name, worker[j].name);
                strcpy(worker[j].name, stemp);
            }
        }
    }
    for (i = 0; i < N; i++)
    {
        printf("%d %s\n", worker[i].num, worker[i].name);
    }
}
  • 写回答

1条回答

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择