#include<string.h>
using
namespace
std
struct
student
{
char
name[50]
int
score
}
void
teacherC(student
*stu)//老师录入成绩
{
int
i,n
cin>>n
cout<<"请依次输入学生的姓名和成绩\n"
for(i=0i<ni++)
{
cin>>stu[i].name>>stu[i].score
}
stu[i].score=-1
}
void
show(student
*stu)
{
int
i=0
for(i<100i++)
{
if(stu[i].score==-1)
break
cout<<stu[i].name<<"
"<<stu[i].score<<endl
}
}
int
search(student
*stu,char
*name)
{
int
i=0,k=-1
for(i<100i++)
{
if(stu[i].score==-1)
break
if(strcmp(stu[i].name,name)==0)
{
k=i
break
}
}
return
k
}
void
edit(student
*stu)
{
int
i=0,j=0
char
name[30],an
while(1)
{
cout<<"请输入需要修改的学生名字\n"
cin>>name
i=search(stu,name)
if(i>=0)
{
cout<<"该学生的信息为:\n"
cout<<stu[i].name<<"
"<<stu[i].score<<endl
cout<<"确定要修改该学生的信息是的输入Y不是输入N:\n"
cin>>an
if(an=='Y'||an=='y')
{
cout<<"请输入修改后的姓名成绩:\n"
cin>>stu[i].name>>stu[i].score
cout<<"修改成功\n"
}
cout<<"继续修改请输入1退出输入0:\n"
cin>>j
if(j==0)
break
}
else
cout<<"没有该学生的信息\n"
}
}
void
dele(student
*stu)
{
int
i=0,j=0
char
name[30],an
while(1)
{
cout<<"请输入需要删除的学生名字\n"
cin>>name
i=search(stu,name)
if(i>0)
{
cout<<"该学生的信息为:\n"
cout<<stu[i].name<<"
"<<stu[i].score<<endl
cout<<"确定要删除该学生的信息是的输入Y不是输入N:\n"
cin>>an
if(an=='Y'||an=='y')
{
*stu[i].name=0
cout<<"删除成功\n"
}
cout<<"继续删除请输入1退出输入0:\n"
cin>>j
if(j==0)
break
}
else
cout<<"没有该学生的信息\n"
}
}
int
main()
{
int
i,n
char
name[30]
student
stu[100]//学生总数上限为100个
while(1)
{
cout<<"请做出以下的选择:"<<endl
cout<<"输入
0
退出系统\n"
cout<<"输入
1
教书录入成绩\n"
cout<<"输入
2
学生查询成绩\n"
cout<<"输入
3
修改学生成绩\n"
cout<<"输入
4
删除学生成绩\n"
cin>>i
switch(i)
{
case
1:
teacherC(stu)break
case
2:
cout<<"请输入查询的姓名\n"
cin>>namen=search(stu,name)cout<<"该学生成绩是:"<<stu[n].score<<endlbreak
case
3:
edit(stu)break
case
4:
dele(stu)break
default:if(i!=0)cout<<"请输入有效数字\n"
}
if(i==0)
break
}
return
0
}
程序如下: #include\x0d\x0avoid main()\x0d\x0a{\x0d\x0a float student[100][7]\x0d\x0a//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,\x0d\x0a//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名\x0d\x0a int n,i,j,k,p,t,count,flag\x0d\x0a int a[100],b[100],c[100]\x0d\x0a//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据\x0d\x0a printf("输入学生的个数:\n")\x0d\x0a scanf("%d",&n)\x0d\x0a for(i=0ib[i+1])\x0d\x0a{\x0d\x0a c[i]=count\x0d\x0a count++\x0d\x0a}\x0d\x0a }\x0d\x0a printf("\n以下是统计结果:\n")\x0d\x0a printf("学号 s[1]s[2]s[3]s[4] 总分 平均分排名\n")\x0d\x0a for(i=0i 回答于 2022-11-16#include "stdio.h"struct stu{
int sid,score
char g
}
void scorein(struct stu *p,int n){
int i,t
for(i=0i<ni++){
scanf("%d%d",&p[i].sid,&p[i].score)
p[i].g = (t=p[i].score)>89 && t<101 ? 'A' : t>79 && t<90 ? 'B' : t>69 && t<80 ? 'C' : t>59 && t<70 ? 'D' : 'E'
}
}
int sum(struct stu *p,int n){
int s=0
while(n--)
s+=p++->score
return s
}
void dssort(struct stu *p,int n){
int i,j,k
struct stu t
printf("\nSTUID\tSCORE\tCLASS\n=====================\n")
for(i=0i<ni++){
for(k=i,j=k+1j<nj++)
if(p[k].score<p[j].score)
k=j
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g)
}
}
void idsort(struct stu *p,int n){
int i,j,k
struct stu t
printf("\nSTUID\tSCORE\tCLASS\n=====================\n")
for(i=0i<ni++){
for(k=i,j=k+1j<nj++)
if(p[k].sid>p[j].sid)
k=j
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g)
}
}
void query(struct stu *p,int n){
int id
printf("\nPlease enter ID(int)...\n")
scanf("%d",&id)
while(id-p->sid && n)
p++,n--
if(n>=0){
printf("STUID\tSCORE\tCLASS\n=====================\n")
printf("%d\t%d\t%c\n\n",p->sid,p->score,p->g)
}
else
printf("No find!\n\n")
}
void level(struct stu *p,int n){
int d[5],i
char s[5][7]={"优秀","良好","中等","及格","不及格"}
printf("统计信息如下:\n")
for(i=0i<5d[i++]=0)
for(i=0i<ni++,d[p++->g-'A']++)
for(i=0i<5i++)
printf("%6s:\t%d\t%.2f%%\n",s[i],d[i],d[i]/(n+0.0)*100)
}
void outinfo(struct stu *p,int n){
int i
printf("\nSTUID\tSCORE\n=============\n")
for(i=0i<ni++)
printf("%d\t%d\n",p[i].sid,p[i].score)
}
int main(int argc,char *argv[]){
int n,s
struct stu a[30]
printf("Please enter n(int 0<n<31)...\n")
if(scanf("%d",&n)!=1 || n<1 || n>30){
printf("Input error, exit...\n")
return 0
}
scorein(a,n)//输入
dssort(a,n)//分数降序
idsort(a,n)//学号升序
query(a,n)//查询
level(a,n)//等级和百分比
outinfo(a,n)//输出各位学生信息
printf("总分: %d",s=sum(a,n))
printf(" 平均分: %.2f\n",s/(n+0.0))
return 0
}
运行样例: