C语言:麻烦给程序加个输入一个职工号,用折半查找法找出改职工的姓名的功能,谢谢了
答案:2 信息版本:手机版
解决时间 2019-10-02 04:09
已解决
2019-10-01 21:48
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void inputstud (struct employee *stud);
void printstud (struct employee *stud);
void savestud (struct employee *stud);
struct employee
{
char num[15];
char name[15];
char sex[15];
char old[15];
char nation[15];
}
stud[100];
int n=0;
void main()
{
int x;
while (1)
{
system ("cls");
printf ("\n");
printf ("\t\t\t\t 职工信息管理系统\n");
printf ("\n");
printf ("\t\t\t\t 1:职工信息录入\n");
printf ("\t\t\t\t 2:职工信息输出\n");
printf ("\t\t\t\t 3:职工信息保存\n");
printf ("\t\t\t\t 4:退出\n");
printf ("\n");
printf ("\t 请按序号(1~4)选择:");
scanf ("%d",&x);
switch (x)
{
case 1:inputstud (stud);break;
case 2:printstud (stud);break;
case 3:savestud (stud);break;
default :exit (0);
}
}
}
void inputstud (struct employee *stud)
{
char ch;
system ("cls");
while (1)
{
printf ("请输入职工号:");
scanf ("%s",stud[n].num);
printf ("请输入姓名:");
scanf ("%s",stud[n].name);
printf ("请输入性别:");
scanf ("%s",stud[n].sex);
printf ("请输入年龄");
scanf ("%s",stud[n].old);
printf ("请输入民族");
scanf ("%s",stud[n].nation);
printf ("是否继续输入数据(y/n):");
ch=getchar();
ch=getchar();
n++;
if (ch=='n'||ch=='N') break;
}
printf ("\n\t 数据输入完毕!\n");
}
void printstud (struct employee *stud)
{
int i,j;
struct employee b;
system ("cls");
for (j=0;j{
for (i=0;i{
if ( strcmp(stud[i].num,stud[i+1].num) > 0 )
{
b=stud[i];
stud[i]=stud[i+1];
stud[i+1]=b;
}
}
}
printf ("以下是所有职工的信息\n");
for (i=0;i{
printf ("%6s%6s%6s%6s%6s\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].old,stud[i].nation);
}
printf ("请按任意数字键返回主菜单");
getchar();
getchar();
}
void savestud (struct employee *stud)
{
int i;
FILE *fp;
fp=fopen ("d:\\employee.dat","w");
for (i=0;iif (fwrite (&stud[i],sizeof(struct employee),1,fp)!=1)
printf ("不能保存文件!\n");
fclose (fp);
printf ("文件保存完毕!\n");
printf ("请按任意数字键返回主菜单");
scanf ("%d",&i);
}
不用折半也行
最佳答案
2019-10-01 23:26
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void inputstud (struct employee *stud);
void printstud (struct employee *stud);
void savestud (struct employee *stud);
void SR(struct employee *stud);
struct employee
{
unsigned unm;
char sex[15];
char old[15];
char nation[15];
}
stud[100];
int n=0;
void main()
{
int x;
meun:while (1)
{
system ("cls");
printf ("\n");
printf ("\t\t\t\t 职工信息管理系统\n");
printf ("\n");
printf ("\t\t\t\t 1:职工信息录入\n");
printf ("\t\t\t\t 2:职工信息输出\n");
printf ("\t\t\t\t 3:职工信息保存\n");
printf ("\t\t\t\t 4:退出\n");
printf("\t\t\t\t\t5:查找并替换职工信息");
printf ("\n");
printf ("\t 请按序号(1~4)选择:");
scanf ("%d",&x);
switch (x)
{
case 1:inputstud (stud);break;
case 2:printstud (stud);break;
case 3:savestud (stud);break;
case 5:SR(stid);break;
default :exit (0);
}
}
}
void inputstud (struct employee *stud)
{
char ch1, ch;
system ("cls");
while (1)
{
printf ("请输入职工号:");
scanf ("%u",&stud[n].num);
printf ("请输入姓名:");
scanf ("%s",stud[n].name);
printf ("请输入性别:");
scanf ("%s",stud[n].sex);
printf ("请输入年龄");
scanf ("%s",stud[n].old);
printf ("请输入民族");
scanf ("%s",stud[n].nation);
printf ("是否继续输入数据(y/n):");
ch=getchar();
ch1=getchar();
n++;
if (ch=='n'||ch=='N') break;
}
printf ("\n\t 数据输入完毕!\n");
}
void printstud (struct employee *stud)
{
int i,j;
struct employee b;
system ("cls");
for (i=0;istud[i+1].unm)
{
b=stud[i];
stud[i]=stud[i+1];
stud[i+1]=b;
}
}
printf ("以下是所有职工的信息\n");
for (i=0;istud[i+1].unm)
{
b=stud[i];
stud[i]=stud[i+1];
stud[i+1]=b;
}
}
}}
全部回答
1楼
2019-10-01 23:40
//你好,专业问问团队为您解答!欢迎追问,满意请采纳!
#include
#include
#define n 10
void main()
{
void input(int[],char name[][8]);
void sort(int[],char name[][8]);
void search(int,int[],char name[][8]);
int num[n],number,flag=1,c;
char name[n][8];
input(num,name);
sort(num,name);
while(flag==1)
{ printf("\ninput number to look for:"); scanf("%d",&number);
search(number,num,name); printf("continue or not(y/n)?");
getchar();
c=getchar(); if(c=='n'||c=='n')
flag=0;
}
} void input(int num[],char name[n][8])
{
int i;
for(i=0;i
{ printf("\ninput no.:"); scanf("%d",&num[i]); printf("input name:");
getchar();
gets(name[i]);
}
} void sort(int num[],char name[n][8])
{
int i,j,min,temp1;
char temp2[8];
for(i=0;i
{
min=i;
for(j=i;j
if(num[min]>num[j])
min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);
} printf("\n result:\n");
for(i=0;i
} void search(int n,int num[],char name[n][8])
{
int top,bott,mid,loca,sign;
top=0;
bott=n-1;
loca=0;
sign=1;
if((nnum[n-1]))
loca=-1;
while((sign==1)&&(top<=bott))
{
mid=(bott+top)/2;
if(n==num[mid])
{
loca=mid; printf("no.%d,his name is %s.\n",n,name[loca]);
sign=-1;
}
else if(n
bott=mid-1;
else
top=mid+1;
}
if(sign==1||loca==-1) printf("can not find %d.\n",n);
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯