当前位置:首页 » 编程语言 » 数据查询c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据查询c语言代码

发布时间: 2022-08-22 04:39:09

⑴ 万年历查询程序. c语言代码

除了天数差计算,基本上是完成了你所提出的功能(天数差计算其实已经提供了年内序数计算方方法,可以在此基础上完善即可)。包含星期计算、公历转农历、农历转公历、节气查询。数据与算法均为原创,绝非网上复制而来。附件中有源代码,同时附带农历数据提取工具,可提取1600到7000年之间的任意年份区间,提取后的数据为压缩数据,占用空间小,同时数据包含数九、三伏、入梅和出梅,非常适合写一份完整的万年历。

吧。提取码:ooj7

⑵ 数据结构关于数据查找的代码(用C语言)

(1)创建图的邻接矩阵和邻接表
(2)验证图的深度优先、广度优先遍历算法
(3)验证最短路径问题
问题太多了,每个小问题,都可以写不少代码
下面是问题1的代码,其他的问题,网上也很容易找到

// 邻接矩阵表示 :

#include <iostream.h>
#include <stdlib.h>

#define INFINITY 0

#define MAX_VERTEX_NUM 10 //最大顶点数

#define MAX_EDGE_NUM 40 //最大边数

typedef enum Graphkind;

typedef char VertexType; //顶点数据类型

typedef struct ArcCell
{
int adj; //无权图,1或0表示相邻否;带权图则是权值。
//int *info;
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct
{
VertexType vexs[MAX_VERTEX_NUM]; //顶点向量
AdjMatrix arcs; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数。
Graphkind kind;
}MGraph;

int LocateVex(MGraph G,VertexType v1)
{
int i;
for(i=0;i<G.vexnum;i++)
if(G.vexs[i]==v1)
return i;
return -1;
}

int CreatUDN(MGraph &G)
// 采用数组表示法,构造无向网 G
{
VertexType v1,v2;
int w,j;
cout<<"输入图的顶点数"<<endl;
cin>>G.vexnum;
cout<<"输入图的弧数"<<endl;
cin>>G.arcnum;
for(int i=0;i<G.vexnum;i++)
{
cout<<"输入顶点向量"<<endl;
cin>>G.vexs[i];
}
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
{
G.arcs[i][j].adj=INFINITY;
}
for(int k=0;k<G.arcnum;++k) //构造邻接矩阵
{
cout<<"输入边依附的两个顶点"<<endl;
cin>>v1>>v2;
cout<<"输入此边的权值"<<endl;
cin>>w;
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j].adj=w;
G.arcs[j][i].adj=G.arcs[i][j].adj;
}
return 1;
}

void dispMGraph(MGraph G)
{
cout<<"图的邻接矩阵图是:"<<endl;
for(int i=0;i<G.vexnum;i++)
{
for(int j=0;j<G.vexnum;j++)
cout<<" "<<G.arcs[i][j].adj;
cout<<endl;
}
}

void main()
{
MGraph G;
CreatUDN(G);
dispMGraph(G);
}

// 邻接表 表示:

#include <iostream.h>
#include <stdlib.h>

#define MAX_VERTEX_NUM 20 //最大顶点数

#define MAX_EDGE_NUM 40 //最大边数

int visited[ MAX_VERTEX_NUM];

typedef int VertexType ; //顶点数据类型

typedef struct ArcNode
{
int adjvex;
int weight;
struct ArcNode *nextarc;
}ArcNode;

typedef struct VNode
{
VertexType data;
ArcNode *firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct
{
AdjList vertices;
int vexnum,arcnum;
int kind;
}ALGraph;

void CreateDG(ALGraph &G)
{
int i,j,k;
ArcNode *p;
cout<<"创建一个图:"<<endl;
cout<<"顶点数:"; cin>>G.vexnum;cout<<endl;
cout<<"边数:"; cin>>G.arcnum; cout<<endl;
for(i=0;i<G.vexnum;i++)
{
G.vertices[i].data=i;
G.vertices[i].firstarc=NULL;
}
for(k=0;k<G.arcnum;k++)
{
cout<<"请输入第"<<k+1<<"条边:";
cin>>i>>j;
p=(ArcNode*)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=G.vertices[i].firstarc;
G.vertices[i].firstarc=p;
}
}

void Disp(ALGraph G)
{
int i,j;
ArcNode *p;
cout<<"输出图为:"<<endl;
for(i=0;i<G.vexnum;i++)
{
p=G.vertices[i].firstarc;
j=0;
while(p!=NULL)
{
cout<<"("<<i<<","<<p->adjvex<<")";
p=p->nextarc;
j=1;
}
if(j==1)
cout<<endl;
}
}

void dfs(ALGraph G,int v) //深度优先遍历
{
ArcNode *p;
cout<<v<<" ";
visited[v]=1;
p=G.vertices[v].firstarc;
while(p!=NULL)
{ if(!visited[p->adjvex])
dfs(G,p->adjvex);
p=p->nextarc;
}
return ;
}

void dfs1(ALGraph G)
{
int i;
for(i=0;i<G.vexnum;i++)
if(visited[i]==0)
dfs(G,i);
}

void main()
{
ALGraph G;
CreateDG(G);
int v;
Disp(G);
cout<<"输入顶点:";
cin>>v;
cout<<"深度优先序列:";
dfs1(G);
cout<<endl;
}

补充:
c和c++本来就差不了多少
只需要把#include <iostream.h>换成#include <stdio.h>
把cout换成printf,把cin换成scanf
就能把上述c++的代码变化成c的啊

⑶ 在一个数组中查找一个数,用C语言怎么写代码

#include<stdio.h>

intmain(void)

{

inti,j,k=0,sz[10]={5,75,89,428,576,5986,7543,8524,9805,1057};

printf("请输入要查找的数:");

scanf("%d",&j);

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

if(sz[i]==j)

{

printf("sz[%d]=%d ",i,sz[i]);

k++;

}

if(!k)

printf("数组中没有您要查找的数。 ");

return0;

}

⑷ 求C语言链表的 添加查找删除插入输出 等操作的代码范例

代码:
#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 80 /*线性表存储空间的初始分配量*/
#define LISTINCREMENT 10 /* 线性表存储空间的分配增量*/
#define ElemType int
#define OVERFLOW -2
typedef struct{ //链表类型
//Link head, tail; //分别指向线性表中的头结点和最后一个结点
int length,listsize;
ElemType *elem;//指示线性链表中数据元素的个数
}LinkList;
enum status {OK=1,ERROR};
typedef int Status;
void insertruction (void);
Status InitList_L(LinkList &L); //构造一个空的线性链表
Status ListInsert_L(LinkList &L,int i,ElemType);//在带头结点的单链线性表L的第i个元素插入元素e
Status ListDelete_L(LinkList &L,int i,ElemType &e);//在带头结点的单链线线性表L中,删除第i个元素,并由其他值返回其值
int LocateElem_L(LinkList,ElemType);
Status (*compare)(ElemType,ElemType);//在静态单链线性表L中查找元素
void printList(LinkList &L);//
void DestroyList_Link(LinkList);//销毁线性链表L,L不再存在
main ()
{
LinkList myLinkList;
int choice;
int item;
ElemType deleted_value;
int loc;
if (InitList_L(myLinkList)!=1) return 0;
insertruction ();/*显示菜单*/
printf ("?");
scanf ("%d",&choice);
while (choice!=4){
switch(choice){
case 1:
printf("Enter tow integer:");
scanf("/n%d%d",&loc,&item);
if (ListInsert_L(myLinkList,loc,item)==1)
printf("ListInsert ok/n");
else
printf("ListInsert error/n");
printList(myLinkList);
break;
case 2:
printf("Enter an integer(location):");
scanf("/n%d",&loc);
if (ListDelete_L(myLinkList,loc,deleted_value)==1)
printf("ListDelete is %d/n",deleted_value);
else
printf("ListDelete error/n");
printList(myLinkList);
break;
case 3:
printf("Enter a value to be finded:");
scanf("/n%d",&item);
if (LocateElem_L(myLinkList,item)==0)
printf("not find %d./n",item);
else
printf("%d is locate %d./n",item,LocateElem_L(myLinkList,item));
break;
default:
printf("Invalid choice./n/n");
insertruction ();
break;
}
printf("?");
scanf("%d",&choice);
}
DestroyList_Link(myLinkList);
printf("End of run./n");
return 0;
}
void insertruction (void)
{
printf("Enter your choice: /n"
"1 to insert an element into the LinkList. /n"
"2 to delete an element into the LinkList. /n"
"3 to find an element in the LinkList. /n"
"4 to end./n");
}
Status InitList_L(LinkList &L) {
// 构造一个空的线性表
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem){
printf("Linklist not Init. No memory available./n");
exit(OVERFLOW);
}
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
} // InitList_Link
int LocateElem_L(LinkList L, ElemType e){
// 在顺序表中查询第一个满足判定条件的数据元素,
// 若存在,则返回它的位序,否则返回 0
ElemType i,*p;
i=1; // i 的初值为第 1 元素的位序
p=L.elem; // p 的初值为第 1 元素的存储位置
//i=S[0].cur;
while(i<=L.length && !(*compare)(*p++,e)) ++i;
if(i<=L.length)
return i;
else return 0;
} // LocateElem_Link
Status ListInsert_L(LinkList &L, int i, ElemType e) {
/* 在顺序表L的第 i 个元素之前插入新的元素e,*/
/* i 的合法范围为 1≤i≤L.length+1*/
ElemType *newbase, *q,*p;
if (i<1||i>L.length+1) return ERROR;/* 插入位置不合法*/
if (L.length>=L.listsize) {// 当前存储空间已满,增加分配
newbase= (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if (!newbase) exit(OVERFLOW);// 存储分配失败
L.elem=newbase;// 新基址
L.listsize += LISTINCREMENT; // 增加存储容量
}
q=&(L.elem[i-1]); // q 指示插入位置
for(p= &(L.elem[L.length-1]); p>=q;--p)*(p+1)=*p; // 插入位置及之后的元素右移
*q=e; // 插入e
++L.length; // 表长增1
return OK;
}// ListInsert_Link
Status ListDelete_L(LinkList &L, int i, ElemType &e) {
ElemType *p, *q;
if ((i<1)||(i>L.length)) return ERROR; // 删除位置不合法
p=&(L.elem[i-1]); // p 为被删除元素的位置
e=*p; // 被删除元素的值赋给 e
q=L.elem+L.length-1; // 表尾元素的位置
for (++p;p<=q;++p)*(p-1)=*p;// 被删除元素之后的元素左移
--L.length; // 表长减1
return OK;
} // ListDelete-Sq
/*打印线性顺序表*/
void printList(LinkList &L) {
ElemType *q;/*int k;*/
if (L.length>0){
printf ("LinkList is: ");
/*for (k=0;k<L->length;k++){
q=&(L->elem[k]);
printf("%d,",*q);}
printf("/n");*/
for (q=L.elem;q<L.elem+L.length;q++){
printf("%d,",*q);
}
printf("/n");
}
else
printf ("List is empty./n/n");
}
void DestroyList_Link(LinkList L)
{
//free(L.elem);
L.listsize=0;
L.length=0;
free(L.elem);
}//DestroyList_Link

⑸ C语言编写数据结构查找算法

实验五 查找的实现
一、 实验目的
1.通过实验掌握查找的基本概念;
2.掌握顺序查找算法与实现;
3.掌握折半查找算法与实现。
二、 实验要求
1. 认真阅读和掌握本实验的参考程序。
2. 保存程序的运行结果,并结合程序进行分析。
三、 实验内容
1、建立一个线性表,对表中数据元素存放的先后次序没有任何要求。输入待查数据元素的关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素的其余数据部分忽略不考虑。建议采用前哨的作用,以提高查找效率。
2、查找表的存储结构为有序表,输入待查数据元素的关键字利用折半查找方法进行查找。此程序中要求对整型量关键字数据的输入按从小到大排序输入。
一、顺序查找
顺序查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请输入您想输入的%d个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
inti=0;
s->r[s->length].key=k;
while(s->r[i].key!=k)
{

i++;
}
if(i==s->length)
{
printf("该表中没有您要查找的数据!\n");
return-1;
}
else
returni+1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
顺序查找的运行结果:
二、折半查找
折半查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请由大到小输入%d个您想输入的个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
intlow,mid,high;
low=0;
high=s->length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s->r[mid].key==k)
returnmid+1;
elseif(s->r[mid].key>k)
high=mid-1;
else
low=mid+1;
}
printf("该表中没有您要查找的数据!\n");
return-1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
折半查找运行结果:
三、实验总结:
该实验使用了两种查找数据的方法(顺序查找和折半查找),这两种方法的不同之处在于查找方式和过程不同,线性表的创建完全相同,程序较短,结果也一目了然。

⑹ 求C语言代码

#include
<STDIO.H>
#include
<STDLIB.H>
#include
<TIME.H>
void
fun(int
age[],int
d[]);
int
number;
void
main()
{
srand(time(0));
printf("请输入你要多少个年龄:");
scanf("%d",&number);
int
*age=new
int[number];
for(int
i=0;i<number;i++)
{

age[i]=rand()%150;
}
for(int
k=0;k<number;k++)
{
printf("%d
",age[k]);
}
printf("\n");
int
d[11]={0};

fun(age,d);
printf("年龄分段统计如下:\n");
for(int
j=0;j<11;j++)
{
printf("%-3d",d[j]);
}
printf("\n");
}
void
fun(int
age[],int
d[])
{
int
n=number;
for(int
i=0;i<n;i++)
{

switch(age[i]/10)

{

case
0:d[0]++;break;

case
1:d[1]++;break;

case
2:d[2]++;break;

case
3:d[3]++;break;

case
4:d[4]++;break;

case
5:d[5]++;break;

case
6:d[6]++;break;

case
7:d[7]++;break;

case
8:d[8]++;break;

case
9:d[9]++;break;

default:d[10]++;break;

}
}
}

⑺ 给定一个数组,数组内容随机,键盘输入一个数据(数字和单字符),查询是否存在此数据 c语言代码怎么写



#include <stdio.h>

#include <stdlib.h>

#include <time.h>


#define N 50


int inarr(int a[],int n,int num) {

int i;

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

if(a[i] == num) return 1;

return 0;

}


void show(int a[],int n) {

int i;

for(i = 0; i < n; ++i) {

if(i && i % 10 == 0) printf(" ");

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

}

if(i % 10) printf(" ");

printf(" ");

}


int main() {

int a[N],num,i,n;

printf("n = ");

scanf("%d",&n);

if(n < 1) n = N/5;

if(n > N) n = N;

printf("请输入%d个整数(空格隔开):",n);

for(i = 0; i < n; ++i) scanf("%d",&a[i]);

printf("数组清单: ");

show(a,n);

printf("请输入要查找的数:");

scanf("%d",&num);

if(inarr(a,n,num)) printf("找到了! ");

else printf("对不起,数组a[]中没找到%d ",num);

return 0;

}

⑻ 数据结构关于数据查找的代码(一定要用C语言)

说些我的见解:
1)首先明确数据结构研究的对象:研究的是如何存储、操作数据,楼主应该关心每种数据结构的数学模型,可以用在什么场合,各种性能怎么样:例如增加数据,查找数据,删除数据都要花多少时间与内存。
学完之后要知道每个实际情况该用什么数据结构。如果能自己设计出来更适合实际需求的数据结构,那就强了。
2)C语言只是表现形式,不是核心:像着名的《算法导论》描述数据结构用的都是伪代码。真正学好C语言,只要理解数据结构的数学模型,就可以轻松写出代码。所以像这本书C语言代码实现的部分,应该能翻译成数学模型来看。熟练掌握一门语言是和计算机沟通的基础。
3)本书使用了面向对象,即C++的一些思想,目的是以后可以直接用数据结构,而不必重写代码。Destory只是一些快捷方式,在具体环境中实现,这些结构是没必要记的,应该根据需求楼主可以自己写出来。其实很多语言都提供了这些数据结构的实现,C++里的叫STL。
总之:核心是数学模型,顺便熟悉一下C语言,写些比较大的程序时,可以把数据结构包装成书上那样一个大的结构,方便使用。最后,多写程序是很有好处的,可以锻炼上面所有的技能。
另外,虚机团上产品团购,超级便宜

⑼ 用C语言写一个成绩查询系统。

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10
/*****定义结构体*****/
typedef struct students /*标记为students*/
{
char num[10]; /*学生学号*/
char name[10]; /*学生姓名*/
int age; /*年龄*/
char sex[10]; /*性别*/
float cyy; /*C语言成绩*/
float computer; /*计算机成绩*/
float english; /*英语成绩*/
float pj; /*平均成绩*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//导出
int Locate(STU students[],int n);//查询
/*--------------显示菜单--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 学生成绩管理 \n");
printf("-----------------------------------应用菜单-------------------------------------\n");
printf(" 1 输入学生成绩\n\n");
printf(" 2 输出学生成绩\n\n");
printf(" 3 查询学生成绩\n\n");
printf(" 4 修改学生成绩\n\n");
printf(" 5 查看成绩排序\n\n");
printf(" 6 查看成绩统计\n\n");
printf(" 7 保存数据\n\n");
printf(" 8 读取数据\n\n");
printf(" 9 退出系统\n\n");
printf(" 请选择你想进行的操作:");

k=getchar();

return k;

}
/*****定义输出函数*****/

void printheader() /*格式化输出表头*/
{
printf("\n\n************************学生成绩管理系统****************************\n\n\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");
}
void printdata(STU pp) /*格式化输出表中数据*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/*****添加学生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 请输入学生信息 \n");
printf(" 退出请在学生号处输入:0 \n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//当输入的学号为0时结束输入
{
printf("请输入学生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("请输入学生年龄:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("请输入学生性别:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("请输入C语言成绩:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("请输入计算机成绩:\n ");
scanf("%f",&students[i].computer);
printf("****************\n\n\n");
printf("请输入英语成绩:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
printf("学生平均成绩: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查询学生信息函数*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出请输入:0 \n");
printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 \n");
scanf("%d",&k);
if(k==1)
{
printf("请输入你要查询的学生学号:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i].num,num)==0) /*若找到学号*/
{
printf(">>学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n>C语言成绩:%-8.0f\n>计算机成绩:%-8.0f\n>>英语成绩:%-8.0f\n>>平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
getchar();
}
else if(k==2)
{
printf("请输入你要查询的学生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n计算机成绩:%-8.0f\n英语成绩:%-8.0f\n平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
}
return m;/*返回一个根m便于修改学生信息*/
getchar();
}
/*****显示函数*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示没有学生信息记录*/
{
printf("\n没有学生记录!\n");
}
printf("\n\n");
printheader(); /*输出表格头部*/
i=0;
while(i<n) /*逐条输出数组中存储的学生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出请输入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改学生信息");
input(students,n);
i=Locate(students,n); /*查询到该数组元素,并返回下标值*/
if(i!=-1) /*若i!=-1,表明已经找到该数组元素*/
{
printf("请输入新的学生信息: \n");
printf(" 学号: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年龄: ");
scanf("%d",&students[i].age);
printf(" 性别: ");
scanf("%s",students[i].sex);
printf(" C语言: ");
scanf("%f",&students[i].cyy);
printf(" 英语: ");
scanf("%f",&students[i].english);
printf(" 计算机: ");
scanf("%f",&students[i].computer);
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
printf("平均成绩: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");

}
else
printf("not found!\n");
getchar();
}
/*****学生成绩排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出请输入:0 \n");
printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 \n ");
scanf("%d",&k);

if(k==1) /*用选择法对C语言排序*/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{

if(students[i].english<students[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}

}

}
else if(k==2)/*英语用冒泡法*/
{
for(a=0; a<n-1; a++)
{
c=a;
//未完待续