#include<stdio.h>
#include<stdlib.h>
#define NUM 30 //数组个数最大 30
typedef struct
{
int no;
int score;
}Student;
//被调用函数的声明区
void create();
void display();
void findchj();
void findsxh();
void sort_big();
void sort_small( );
void insert();
void yidong();
void replace();
void main()
{
Student stu[NUM];
int n=0; //记录元素的实际个数
int flag=0; //记录是否已经建立过成绩数组,flag=0 为未建立
//若已建立,则不能重复建立
int choice;
int chj,sxh;
system("cls");
system("color f0");
do
{
printf("\t\t\t 1. 建立成绩数组 \n");
printf("\t\t\t 2. 显示成绩数组 \n");
printf("\t\t\t 3. 按给定成绩查找 \n");
printf("\t\t\t 4. 按顺序号查询 \n");
printf("\t\t\t 5. 从高到低排序输出 \n");
printf("\t\t\t 6. 从低到高排序输出 \n");
printf("\t\t\t 7. 按给定顺序号插入成绩 \n");
printf("\t\t\t 8. 按给定顺序号删除成绩 \n");
printf("\t\t\t 9. 按给定顺序号修改成绩 \n");
printf("\t\t\t 0. 结束程序 \n");
printf("\t\t\t 请输入您的选择:");
scanf("%d",&choice);
fflush(stdin);
switch(choice)
{
case 1:
if(flag==0)
{
printf("\t\t\t请输入建立成绩数组元素个数:\n");
scanf("%d",&n);
display();
break;
}
else
break;
case 2:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
display();
break;
}
case 3:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
printf("\t\t\t请输入要查询的成绩:\n");
scanf("%d",&chj);
findchj();
break;
}
case 4:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
printf("\t\t\t请输入要查询的序号:\n");
scanf("%d",&sxh);
if(sxh<=NUM)
findsxh();
else
printf("顺序号超出范围,不能操作\n");
break;
}
case 5:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
sort_big();
break;
}
case 6:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
sort_small(
);
break;
}
case 7:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
printf("\t\t\t请输入要查询的序号:\n");
scanf("%d",&n);
if(n<=NUM)
insert();
else
printf("顺序号超出范围,不能操作\n");
break;
}
case 8:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
printf("\t\t\t请输入要查询的序号:\n");
scanf("%d",&n);
if(n<=NUM)
yidong();
else
printf("顺序号超出范围,不能操作\n");
break;
}
case 9:
if(flag==0)
{
printf("数据库为空\n");
break;
}
else
{
printf("\t\t\t请输入要查询的序号:\n");
scanf("%d",&n);
if(n<=NUM)
replace();
else
printf("顺序号超出范围,不能操作\n");
break;
}
case 0: printf("\n\t\t\t 欢迎你再次使用,再见!\n");
exit(0);
default :printf("\n \t\t\t 对不起,您的选择有误,请重新输入!!\n");
}//switch
system("pause");
system("cls");
}while(1);
}
void create(Student s[],int n)
{
int
i,flag=0;
printf("请输入元素实际个数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入学生序号\n");
scanf("%d",&s[i].no);
printf("请输入成绩\n");
scanf("%d",&s[i].score);
}
flag+=1;
//建立成绩数组
}
void display(Student s[],int n)
{
int
i;
printf("|
序 号 | 成 绩 |\n");
for(i=0;i<n;i++)
{
printf("|%5d|%5d|\n",s[i].no,s[i].score);
}
//显示成绩数组
}
void findchj(int chj,Student s[],int n)
{
int
i,j=0;
printf("输入你想要查询的成绩:\n");
scanf("%f",&chj);
for(i=0;i<n;i++)
{
if(chj!=s[i].score)
j+=1;
}
if(j!=4)
{
for(i=0;i<n;i++)
{
if(chj==s[i].score)
{
printf("|
序 号 | 成 绩 |\n");
printf("|%5d|%5d|\n",s[i].no,s[i].score);
}
}
}
else
printf("数据库中无此成绩\n");
//按给定成绩查找,无此成绩则显示数据库中无此成绩,有则把顺序号输出,并输出对应成绩;
}
void findsxh(int sxh,Student s[],int n)
{
int
i,j=0;
for(i=0;i<n;i++)
{
if(sxh!=s[i].no)
j+=1;
}
if(j!=4)
{
for(i=0;i<n;i++)
{
if(sxh==s[i].no)
{
printf("|
序 号 | 成 绩 |\n");
printf("|%5d|%5d|\n",s[i].no,s[i].score);
}
}
}
else
printf("超出范围\n");
//按给定顺序号查找,顺序号超出范围则显示超出范围,否则把顺序号输出,并输出对应成绩;
}
void sort_big(Student s[],int n)
{
int
i,j,t;
for(i=0;i<n-1;i++)
{
if(s[i].score<s[i+1].score)
{
t=s[i].score;
s[i].score=s[i+1].score;
s[i+1].score=t;
j=s[i].no;
s[i].no=s[i+1].no;
s[i+1].no=j;
}
}
printf("|
序 号 | 成 绩 |\n");
for(i=0;i<n;i++)
{
printf("|%5d|%5d|\n",s[i].no,s[i].score);
}
//按从高到低顺序排序并输出
}
void sort_small(Student s[],int n )
{
int i,j,t;
for(i=0;i<n-1;i++)
{
if(s[i].score>s[i+1].score)
{
t=s[i].score;
s[i].score=s[i+1].score;
s[i+1].score=t;
j=s[i].no;
s[i].no=s[i+1].no;
s[i+1].no=j;
}
}
printf("|
序 号 | 成 绩 |\n");
for(i=0;i<n;i++)
{
printf("|%5d|%5d|\n",s[i].no,s[i].score);
} //按从低到高顺序排序并输出
}
void insert(int sxh,int chj,Student s[],int
n)
{
int
i,c;
int
a[2];
printf("请输入插入的序号\n");
scanf("%d",&a[0]);
for(i=0;i<n;i++)
{
c=strcmp(s[i].no,a[0]);
if(c==0)
{
printf("学号重复!!请重新输入:");
scanf("%d",&a[0]);
}
}
printf("请输入这名同学的成绩\n");
scanf("%d",&a[1]);
if(a[1]<0||a[1]>100)
{
printf("输入成绩错误,请重新输入\n");
printf("请输入这名同学的成绩\n");
scanf("%d",&a[1]);
}
n=n+1;
//按给定顺序号插入成绩
}
void yidong(int sxh,Student s[],int n)
{
int i,c,j,b=0;
int a[2];
printf("请输入你想要删除的学号\n");
scanf("%d",&a[0]);
for(i=0;i<n;i++)
{
c=strcmp(s[i].no,a[0]);
if(c==0)
b++;
}
if(b!=0)
{
for(i=0;i<n;i++)
{
if(strcmp(s[i].no,a[0])==0)
{
for(j=i;j<n;j++)
{
s[j].score=s[j+1].score;
s[j].no=s[j].no-1;
}
}
}
}
else
printf("学号不存在\n");
n=n-1; //按给定顺序号删除成绩
}
void replace(int sxh,Student s[],int n)
{
int
i,c,b=0;
int
a[2];
printf("请输入想要修改成绩的序号\n");
scanf("%d",&a[0]);
for(i=0;i<n;i++)
{
c=strcmp(s[i].no,a[0]);
if(c==0)
b++;
}
if(b!=0)
{
printf("请输入要修改的成绩\n");
scanf("%d",&a[1]);
for(i=0;i<n;i++)
{
if(strcmp(s[i].no,a[0])==0)
s[i].score=a[1];
}
}
else
printf("该序号不存在\n");
//按给定顺序号修改成绩
}
06-28
2482
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)