當前位置:首頁 » 編程語言 » 數據查詢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;
//未完待續