程序设计
怎么设计一个学生成绩管理系统要求能输入20个学生姓名,学号,某门课程的学习成绩。
将分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数。
用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)
用二分法检索某个学生的成绩(输入学号,显示成绩) typedef structSTUDENT
{
char name;
int id;
float lesson;
}stdt,*pst;
void stsort(pst st,int n)
{
int *id=(int*)malloc(sizeof(int)*n);
for (int i = 0; i < n; i++)
{
id=i;
}
for(int i=0;i<n-1;i++)
{
for(int j=n-1;j>i;j--)
{
if(st].lesson<st].lesson)
{
int tmp=id;
id=id;
id=tmp;
}
}
printf("%s:%f\n",st].name,st].lesson);
}
printf("%s:%f\n",st].name,st].lesson);
free(id);
}
void orderfind(pst st,int n,char *name)
{
for(;n>=0;n--)
{
int j=0;
while(name&&(name==st.name));
if('\0'==name&&'\0'==st.name)
{
printf("%f\n",st.lesson);
break;
}
}
if(-1==n)printf("no body\n");
}
int halffind(pst st,int id,int l,int r)
{
/*if(st[(l+r)/2].id==id)return (l+r)/2;
if(l>=r)return -1;
int ret =-1;
if((ret=ishalffind(st,id,0,r/2)>-1))return ret;
if((ret=ishalffind(st,id,r/2+1,r)>-1))return ret;
return ret;*/
if (l>r)
{
return -1;
}
int half=(l+r)/2;
if(id==st.id)return half;
if(id>st.id)return halffind(st,id,half+1,r);
if (id<st.id)return halffind(st,id,0,half);
}
int insertstt(pst st,int *n)
{
if(*n>=20)return 0;
scanf("%s%d%f",st[*n].name,&st[*n].id,&st[*n].lesson);
for (int i = *n; i>0; i--)
{
if (st.id>st.id)
{
stdt tmp=st;
st=st;
st=tmp;
}
else
break;
}
(*n)++;
return 1;
}
int main()
{
stdt st={0};
int n=0,id=0;
for (int i = 0; i < 20; i++)
{
if (0==insertstt(st,&n))break;
}
stsort(st,20);
char nm={0};
scanf("%s",nm);
orderfind(st,20,nm);
scanf("%d",&id);
int ret=halffind(st,id,0,20-1);
if(ret>=0)printf("%f",st.lesson);
else
("no body\n");
return 0;
}aaa 102 1
bbb 111 2
ccc 342 3
ddd 210 4
eee 423 5
fff 649 6
ggg 666 7
hhh 555 8
iii 612 9
jjj 456 11
kkk 234 10
lll 98 12
mmm 674 13
nnn 416 14
ooo 222 15
ppp 555 16
qqq 999 17
rrr 877 18
sss 681 19
ttt 539 20
aaa:1.000000
bbb:2.000000
ccc:3.000000
ddd:4.000000
eee:5.000000
fff:6.000000
ggg:7.000000
hhh:8.000000
iii:9.000000
kkk:10.000000
jjj:11.000000
lll:12.000000
mmm:13.000000
nnn:14.000000
ooo:15.000000
ppp:16.000000
qqq:17.000000
rrr:18.000000
sss:19.000000
ttt:20.000000
ttt
20.000000
555
8.000000
页:
[1]