69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
struct stu
{ int num;
char name[20];
char sex;
float score;
}boy[6]={{101,"li ping",'m',45},
{102,"zhang ping",'m',62.5},
{103,"he fang",'m',92.5},
{104,"cheng ling",'f',87},
{106,"wang ming",'m',58},};
int sea(char name[])
{
int i;
for(i=0;i<6;i++)
{
if(0==strcmp(name,boy[i].name))
{
return i;
}
}
return -1;
}
void del(char name[])
{
int i,j;
i=sea(name);
if(i!=-1)
{
for(j=i;j<5;j++)
{
strcpy(boy[j].name,boy[j+1].name);
boy[j].num=boy[j+1].num;
boy[j].sex=boy[j+1].sex;
boy[j].score=boy[j+1].score;
}
strcpy(boy[5].name,"0");
boy[5].num=0;
boy[5].sex='d';
boy[5].score=0;
printf("操作成功!\n");
}
else
{
printf("操作失败!\n");
}
}
void ins(int i,struct stu s)
{
int j;
for(j=5;j>i;j--)
{
strcpy(boy[j].name,boy[j-1].name);
boy[j].num=boy[j-1].num;
boy[j].sex=boy[j-1].sex;
boy[j].score=boy[j-1].score;
}
strcpy(boy[j].name,s.name);
boy[j].num=s.num;
boy[j].sex=s.sex;
boy[j].score=s.score;
printf("操作成功!\n");
}
void main(void)
{
int i,menu;
bool flag=true;
char name[20]={'\0'};
while(flag)
{
printf("请输入正确的功能号(0:退出 1:添加 2:删除)");
scanf("%d",&menu);
switch(menu)
{
case 0:
flag=false;
break;
case 1:
printf("输入要插入在那个学生之前:");
getchar();
scanf("%[a-z ]",name);
if(sea(name)!=-1)
{
struct stu s;
printf("请输入要插入的学生信息");
scanf("%d%[^,]%*[,]%f%c",&s.num,s.name,&s.score,&s.sex);
ins(sea(name),s);
}
else
{
printf("操作失败!\n");
}
for(i=0;i<6;i++)
{
printf("name:%s,sex:%c,num:%d,score:%f\n",boy[i].name,boy[i].sex,boy[i].num,boy[i].score);
}
break;
case 2:
printf("输入要删除的学生姓名:");
getchar();
scanf("%[a-z ]",name);
del(name);
for(i=0;i<6;i++)
{
printf("name:%s,sex:%c,num:%d,score:%f\n",boy[i].name,boy[i].sex,boy[i].num,boy[i].score);
}
break;
default :
printf("功能号为(0:退出 1:添加 2:删除)\n");
}
}
}
楼上为测试时输入方法。