mysql学员编号长整型_[1]输入5名选手的编号(定义为长整型)[2]将选手名单按编号从高到低降序方式进行排序。...

展开全部

这是我以前写的学生成绩管理系统,你要的要求上面都有,自己看吧

#include

#include

#include

int login(char p[16])//登录,密码判62616964757a686964616fe4b893e5b19e31333264653364断,

{

int w;

char login[16];

printf("请输入密码\n");

gets(login);//输入字符串作为密码

w=strcmp(p,login);//判断两字符串是否相同,若相同则返回0

return w;//返回密码判断的值

}

void display()//菜单

{

printf("*——————————————————————————————————————*\n");

printf("|请选择您所需的操作: |\n");

printf("|——————————————————————————————————————|\n");

printf("|1.输入成绩 2.顺序输出成绩 3.查找最高分 4.查找最低分|\n");

printf("|5.查找特定成绩 6.降序排序成绩 7.求总成绩和平均成绩 |\n");

printf("|8.查找低于特定分数的成绩 9.分段成绩人数及位置 10.增加成绩 |\n");

printf("|11.更改成绩 12.删除单个成绩 13.删除全部成绩 14.修改密码 |\n");

printf("|0.退出 |\n");

printf("*——————————————————————————————————————*\n");

}

int input(double score[200])//输入数据

{

int p,q,i=1;

printf("请输入学生人数\n");

scanf("%d",&p);

for(q=0;q

{

printf("请输入第%d个人成绩\n",i);

scanf("%lf",&score[q]);

i++;

}

printf("输入完毕\n");

return p;//返回总人数

}

void output(double score[200],int x)//顺序输出学生成绩

{

int i=0;

if(x!=0)

while(i!=x)

{

printf("第%d个人的成绩为%lf\n",i+1,score[i]);

i++;

}

else

printf("数据为空,请先输入数据\n");//容错,当数组中没有数据时提示用户先输入数据

}

void max(double score[200],int x)//查询最大成绩

{

int m,n;

double max;

if(x!=0)

{

max=score[0];n=1;

for(m=1;m

{

if(max

{

max=score[m];

n=m+1;

}

}

printf("最高成绩为%lf,是第%d个\n",max,n);

}

else printf("数据为空,请先输入数据\n");//容错

}

void min(double score[200],int x)//查询最低成绩

{

int m,n;

double min;

if(x!=0)

{

min=score[0];n=1;

for(m=1;m

{

if(min>score[m])

{

min=score[m];

n=m+1;

}

}

printf("最低成绩为%lf,是第%d个\n",min,n);

}

else printf("数据为空,请先输入数据\n");//容错

}

void spe(double score[200],double m,int n)//查询特定成绩

{

int i,x=0;

int location[200];

for(i=0;i

if(score[i]==m)//判断是否为所查询的成绩

{

location[x]=i+1;

x++;

}

if(x!=0)

{

printf("您所查询的成绩为%lf,在以下位置出现\n",m);//输出所查询的成绩

for(i=0;i

printf("%d ",location[i]);//输出所查询成绩的所在位置,此位置为下标加1

printf("\n");

}

else

printf("此成绩不存在\n");//容错,当所查询的成绩不存在是输出

}

void down(double score[200],int x)//降序排列

{

int m,n;

double temp;

if(x!=0)

{

for(m=0;m

for(n=m+1;n

if(score[m]

{

temp=score[m];

score[m]=score[n];

score[n]=temp;

}

printf("降序排列为\n");

n=1;

for(m=0;m

{

printf("%lf ",score[m]);

n++;

if(n==5)//输出控制,用于判断回车符的输出

{

n=1;

printf("\n");

}

}

}

else printf("数据为空,请先输入数据\n");//容错

}

double ave(double score[200],int x)//输出总分与平均分

{

double sum=0,ave0;

int i;

if(x!=0)

{

for(i=0;i

sum=sum+score[i];

ave0=sum/x;//求出平均分

printf("总成绩为%lf\n",sum);

return ave0;

}

else

{

printf("数据为空,请先输入数据\n");//容错

return 0;

}

}

void fil(double score[200],double w,int x)//输出小于特定分数的成绩所在位置,位置为下标加1

{

int i,m;

int location[200];

for(i=0;i

if(score[i]

{

location[m]=i+1;

m++;

}

if(m!=0)

{

printf("所查询的成绩在以下位置出现\n");

for(i=0;i

printf("%d ",location[i]);

}

else

printf("此成绩不存在\n");

}

void sec(double score[200],int x)//成绩分段并输出各段人数与位置,位置为下标加1

{

int s,i=0,m=0,n=0,s80[200],s60[200],s0[200],f=1;

if(x!=0)

{

for(s=0;s

{

if(score[s]>=80)

{

s80[i]=s+1;

i++;

}

else

if(score[s]>=60)

{

s60[m]=s+1;

m++;

}

if(score[s]<60)

{

s0[n]=s+1;

n++;

}

}

printf("80分至100分的人数为%d,在以下位置出现\n",i);//输出各段的人数

for(s=0;s

{

printf("%d ",s80[s]);

if(f==10)

{

printf("\n");

f=1;

}

}

printf("\n60分至80分的人数为%d,在以下位置出现\n",m);

f=1;

for(s=0;s

{

printf("%d ",s60[s]);

if(f==10)

{

printf("\n");

f=1;

}

}

printf("\n60分以下的人数为%d,在以下位置出现\n",n);

f=1;

for(s=0;s

{

printf("%d ",s0[s]);

if(f==10)

{

printf("\n");

f=1;

}

}

}

else

printf("数据为空,请先输入数据\n");//容错

}

int add(double score[200],int x,double y,int z)

{

int i;

for(i=z;i>=x;i--)

score[i]=score[i-1];

score[x-1]=y;

printf("增加成功\n");

return 1;

}

void rejigger(double score[200],int x,double y)

{

score[x-1]=y;

printf("更改成功\n");

}

void del(double score[200],int x,int y)

{

int i;

for(i=x;i

score[i-1]=score[i];

score[y]=0;

}

int format(double score[200])

{

int i;

char validate;

printf("是否确认删除所有数据Y/N\n");

scanf("%c",&validate);

scanf("%c",&validate);

if(validate=='Y'||validate=='y')

{

for(i=0;i<200;i++)

score[i]=0;

printf("删除成功\n");

return 1;

}

else

{

printf("取消删除\n");

return 0;

}

}

void main()

{

char password[16]="123456";//定义默认密码

double score[200],m,n,w,z;

int choose,x=3,i,f,b=0,change=1,y;

char *p,validate;

double *a;

int flag = 0;

p = password;

a=score;

f=3;i=0;

while(f)//密码错误次数控制,当错误时重新输入,若连续错误3次则直接退出程序

{

i=login(password);

if(i)

{

x--;

if(x>0)

printf("密码错误,请重新输入,您还有%d次机会\n",x);

else

{

printf("密码错误,程序自动退出\n");

exit(1);

}

f--;//次数控制

continue;

}

else//当密码输入正确时进入下一步

{

flag = 1;

break;

}

}

while(flag)//主循环,控制菜单的循环输出与程序的循环使用

{

display();//输出菜单

scanf("%d",&choose);//功能选择

switch(choose)//功能判断

{

case 1:b=input(score);break;//输入成绩

case 2://顺序输出成绩

output(score,b);

break;

case 3:max(score,b);break;//输出最大值

case 4:min(score,b);break;//输出最小值

case 5://查询特定成绩

if(b!=0)

{

printf("请输入要查询的成绩\n");

scanf("%lf",&m);

spe(score,m,b);

}

else

printf("数据为空,请先输入数据\n");

break;

case 6:down(score,b);break;//降序排列

case 7:n=ave(score,b);printf("平均成绩为%lf\n",n);break;//输出总成绩与平均成绩

case 8://查询低于特定分数的成绩

if(b!=0)

{

printf("请输入分数\n");

scanf("%lf",&w);

fil(score,w,b);

}

else

printf("数据为空,请先输入数据\n");

break;

case 9:sec(score,b);break;//成绩分段

case 10:

if(b!=0)

{

printf("请输入要增加的成绩和所在位置\n");

scanf("%lf%d",&z,&y);

add(score,y,z,b);

b=b+1;

}

else

printf("数据为空,请先输入数据\n");

break;

case 11:

if(b!=0)

{

printf("请输入要修改的位置和修改后的成绩\n");

scanf("%d%lf",&y,&z);

rejigger(score,y,z);

}

else

printf("数据为空,请先输入数据\n");

break;

case 12:

if(b!=0)

{

printf("请输入要删除的位置\n");

scanf("%d",&y);

del(score,y,b);

b=b-1;

}

else

printf("数据为空,请先输入数字\n");

break;

case 13:

y=format(score);

if(y==1) b=0;

break;

case 0:

printf("程序退出后所有数据将消失,确定退出程序?Y/N\n");

scanf("%c",&validate);

scanf("%c",&validate);

if(validate=='Y'||validate=='y') flag=0;//退出

}

}

printf("谢谢使用\n");

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值