//输入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);
}
}