#include <string.h>
#define MAXSIZE 121//最大职员人数
typedef struct worker {
unsigned id//工号
char name[21]
char sex[3]
int age
}WORKER
void read(WORKER *w) {
printf("工号: ")
scanf("%d",&w->id)
fflush(stdin)
printf("姓名 性别 年龄 : ")
scanf("%s%s%d",w->name,w->sex,&w->age)
}
int find(WORKER a[],int n,WORKER w) {
int i,ind = 0
for(i = 0 i < n ++i) {
if(a[i].id == w.id) return i
}
return -1
}
int add(WORKER a[],int n,WORKER w) {
int ind = find(a,n,w)
if(ind) {
a[n] = w
return 1
}
return 0
}
int del(WORKER a[],int n,WORKER w) {
int i,ind = find(a,n,w)
if(ind < 0) return 0
for(i = ind i < n - 1 ++i)
a[i] = a[i + 1]
return 1
}
void show(WORKER a[],int n) {
int i,len
printf("\t┌────┬───┬──┬──┐\n")
for(i = 0 i < n ++i) {
len = strlen(a[i].name)
printf("\t│%7d │",a[i].id)
if(len == 6) printf("%s│",a[i].name)
else if(len == 4) printf("%s │",a[i].name)
printf("%4s│",a[i].sex)
printf("%4d│\n",a[i].age)
if(i < n - 1) printf("\t├────┼───┼──┼──┤\n")
}
printf("\t└────┴───┴──┴──┘\n")
}
int main() {
int n = 0,flag,choice,an
WORKER WRKS[MAXSIZE],w
do {
printf("**********公司员工管理系统**********\n")
printf("\t\t1、添加\n")
printf("\t\t2、查找\n")
printf("\t\t3、删除\n")
printf("\t\t4、浏览\n")
printf("\t\t0、退出系统\n")
printf("\n\t请选择:")
scanf("%d",&choice)
switch(choice) {
case 1 :
printf("请输入待添加员工的信息\n")
read(&w)
if(add(WRKS,n,w)) {
printf("成功添加。\n")
++n
}
break
case 2 :
printf("请输入待查找员工的信息\n")
read(&w)
if(find(WRKS,n,w)) printf("成功找到\n")
else printf("没有找到工号为%ud的员工。\n",w.id)
break
case 3 :
printf("请输入待删除员工的信息\n")
read(&w)
if(del(WRKS,n,w) >= 0) {
printf("删除成功。\n")
--n
}
else printf("没有找到工号为%ud的员工,删除操作失败。\n",w.id)
break
case 4 : show(WRKS,n)break
case 0 : printf("退出系统\n") break
default : printf("%d,不能识别的命令。\n",choice)break
}
}while(choice)
return 0
}
第一题:有3个错。
1.strupr(name[i]) 改为:strcpy(name[i],strupr(name[i]))
2.if(name[i]>name[j])改为:if(strcmp(name[i],name[j])>0)
3.strcpy(name[i],str )改为:strcpy(str,name[i])
第二题:
(1)s[i] != '\0'
(2){ j ++}else
memcpy(s[i],s[i]+1,strlen(s)-i-1)
第三题:
s[i] <= '9' &&s[i] >= '0'