c语言按图书编号排序(c语言按图书编号排序怎么排)

今天给各位分享c语言图书编号排序的知识,其中也会对c语言按图书编号排序怎么排进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、用c语言实现对给定一组学生的借书证信息进行排序和查找2、C语言对书价格排序的一些问题3、C语言的一个问题!高手求做~详解!给满分!4、C语言图书管理系统5、c语言编程题;从键盘输入N本图书的书名(书名长度不超过10个汉字)和单价,按单价从高到低顺序排序后输出图书

用c语言实现对给定一组学生的借书证信息进行排序和查找

#includebits/stdc++.h

using namespace std;

struct bintree

{

char data;

bool flag;//判断这个节点的右子树的值是不是输出了

bintree *lchild,*rchild;

};

//7.13

//采用递归和非递归两种方法求二叉树的节点的个数

//都用前序遍历吧;

int ans;

bintree* creat()

{

char ch;

bintree* t;

if((ch = getchar()) == ‘#’)

{

t = NULL;

}

else

{

t = new bintree;

t – data = ch;

t – lchild = creat();

t – rchild = creat();

}

return t;

}

void pre_orders(bintree* root)//递归遍历前序

{

if(root == NULL)

return ;

else

{

ans ++;

cout  root – data ;

pre_orders(root – lchild);

pre_orders(root – rchild);

}

}

void pre_orderss(bintree* root)//非递归遍历前序

{

stackbintree*s;

while( root || s.size() )

{

if(root)

{

ans ++;

cout  root – data;

s.push(root);

root = root – lchild;

}

else

{

root = s.top();

s.pop();

root = root – rchild;

}

}

}

void in_orders(bintree* root)

{

if(root == NULL)

return ;

in_orders(root – lchild);

cout  root – data;

in_orders(root – rchild);

}

void in_orderss(bintree* root)

{

stackbintree*s;

while(root || s.size() )

{

if(root)

{

s.push(root);

root = root – lchild;

}

else

{

root = s.top();

s.pop();

cout  root – data ;

root = root – rchild;

}

}

}

void post_orders(bintree* root)

{

if(root == NULL)

return ;

post_orders(root – lchild);

post_orders(root – rchild);

cout  root – data;

}

void post_orderss(bintree* root)

{

stackbintree*s;

while(root || s.size())

{

if(root)

{

root – flag = false;

s.push(root);

root = root – lchild;

}

else

{

bintree* temp = s.top();

if(temp – flag)

{

root = temp;

s.pop();

cout  root – data;

root = NULL;

}

else

{

root = temp;

root – flag = true;

root = root – rchild;

}

}

}

}

void Travel(bintree* root)

{

queuebintree*q;

q.push(root);

while( ! q.empty() )

{

bintree* temp = q.front();

q.pop();

cout  temp – data ;

if(temp – lchild)

q.push(temp – lchild);

if(temp – rchild)

q.push(temp – rchild);

}

}

int main()

{

bintree* root;

cout  “要求构建一棵深度为3的满二叉树  完成习题7.13求出数的节点个数”  endl;

cout  “用前序创建二叉树”  endl;

root = creat();

cout  “用递归进行前序遍历并计算节点的个数:”  endl;

ans = 0;

pre_orders(root);

cout  endl;

cout “节点个数为”  ans  endl;

ans = 0;

cout  “用非递归进行前序遍历并计算节点个数:” endl;

pre_orderss(root);

cout  endl;

cout  “非递归的节点个数为:”  ans  endl;

cout  “用递归进行中序遍历和后序遍历”endl;

in_orders(root);

cout  endl;

post_orders(root);

cout  endl;

cout  “非递归实现中序和后序遍历” endl;

in_orderss(root);

cout  endl;

post_orderss(root);

cout  endl;

cout   “用层次遍历玩玩:应该就是ABCDEFG哈” endl;

Travel(root);

cout  endl;

return 0;

}

//运行结果

//要求构建一棵深度为3的满二叉树  完成习题7.13求出数的节点个数

//用前序创建二叉树

//ABD##E##CF##G##

//用递归进行前序遍历并计算节点的个数:

//ABDECFG

//节点个数为7

//用非递归进行前序遍历并计算节点个数:

//ABDECFG

//非递归的节点个数为:7

//用递归进行中序遍历和后序遍历

//DBEAFCG

//DEBFGCA

//非递归实现中序和后序遍历

//DBEAFCG

//DEBFGCA

//用层次遍历玩玩:应该就是ABCDEFG哈

//ABCDEFG

//

//Process returned 0 (0x0)   execution time : 35.166 s

//Press any key to continue.

图的应用(2学时)

1、实验目的

通过本实验掌握图的存储结构与基本运算以及图的深度优先遍历和 图的广度优先遍历算法在实际问题中的应用。

2、实验内容

按照邻接表对图进行创建,并运用图的深度优先遍历和 图的广度优先遍历算法对所创建的无向图进行遍历。

3、实验要求

(1)按照邻接表创建图的结构体;

(2)创建一个无向图;

(3)对创建好的图进行深度优先或广度优先遍历。

收获:对邻接表的创建,遍历

[cpp] view plain copy

#includebits/stdc++.h

using namespace std;

const int maxn = 1000 + 10;

bool vis[maxn];

struct edgeNode

{

int adjvex;

edgeNode *next;

};

struct vertexNode

{

int vertex;

edgeNode *firstedge;

};

struct linkgraph

{

vertexNode adjlist[maxn];

int n,e;//顶点数和边数

};

linkgraph* Creat(linkgraph *g)//创建无向图的邻接表

{

scanf(“%d%d”,g – n,g – e);

for(int i = 0 ; i  g – n ; ++ i)

{

g – adjlist[i].vertex = i;

g – adjlist[i].firstedge = NULL;

}

for(int i = 1; i = g – e; ++ i)

{

int a,b;

scanf(“%d%d”,a,b);

edgeNode *t = new edgeNode;//前插

t – adjvex = b;

t – next = g – adjlist[a].firstedge;

(g – adjlist[a] ).firstedge = t;

edgeNode *temp = new edgeNode;

temp – adjvex  = a;

temp – next = g – adjlist[b].firstedge;

g – adjlist[b].firstedge = temp;

}

return g;

}

void dfs(linkgraph *g ,int i)//i代表头节点

{

printf(“%d “,g – adjlist[i].vertex);

vis[i] = true;

edgeNode* p = g – adjlist[i].firstedge;

while(p)

{

if(!vis[p – adjvex])

{

dfs(g,p – adjvex);

}

p = p – next;

}

}

void dfstraverse(linkgraph *g)//dfs调用

{

memset(vis,false,sizeof(vis));

printf(“深度优先:\n”);

for(int i = 0 ; i  g – n ; ++ i)

{

if(!vis[i])

dfs(g,i);

}

printf(“\n”);

}

void bfs(linkgraph *g,int i)

{

printf(“%d “,g – adjlist[i].vertex);

queueintq;

q.push(i);

vis[i] = true;

while(!q.empty())

{

int t = q.front();

q.pop();

edgeNode *p = g – adjlist[t].firstedge;

while(p)

{

if(!vis[p – adjvex])

{

q.push(p – adjvex);

printf(“%d “,p – adjvex);

vis[p – adjvex] = true;

}

p = p – next;

}

}

}

void bfstraverse(linkgraph *g)//输出分块

{

int cnt = 1;//记录联通块的个数

memset(vis,false,sizeof(vis));

for(int i = 0 ; i  g – n ; ++ i)

{

if(!vis[i])

{

bfs(g,i);

printf(“\n”);

}

}

printf(“联通块的个数是:%d\n”,cnt);

}

int main()

{

linkgraph *g;

g = new linkgraph;

g = Creat(g);

dfstraverse(g);//深度优先

bfstraverse(g);

return 0;

}

//运行结果:

//4 3

//0 1

//1 2

//2 3

//深度优先:

//0 1 2 3

//0 1 2 3

//联通块的个数是:1

实验四  排序方法实践(2学时)

1、实验目的

通过本实验掌握排序的基本算法和过程以及查找的基本方法和过程。

2、实验内容

设计一个排序和查找系统。能够实现对给定的一组学生的借书证信息(如:卡号、姓名、系别、班号等)进行排序和查找。

1)按照卡号顺序进行排序;

2)能够实现查找某个系的所有的借书卡号并输出。

3、实验要求

(1)建立关于借书证信息结点的结构体;

收获:用C语言写了一下快排;

[cpp] view plain copy

#includebits/stdc++.h

using namespace std;

const int maxn = 10000 + 10;

struct Node

{

int department;//系名

int number;//借书证卡号

char name[maxn];//姓名

char student_id[maxn];//学号

};

Node a[maxn];

void quicksort(Node a[],int left,int right)//按照系名进行排名

{

int i , j;

if(left = right)

return ;

i = left , j = right;

a[0] = a[i];

while(i != j)

{

while(a[j].department  a[0].department  i  j)

— j;

if(i  j)

{

a[i] = a[j];

i ++;

}

while(a[i].department  a[0].department  i  j)

++ i;

if(i  j)

{

a[j] = a[i];

j –;

}

}

a[i] = a[0];

quicksort(a,left,i – 1);

quicksort(a,i + 1,right);

}

void bin_search(Node a[],int n,int x)

{

int left = 1 ,right = n;

int ans = 0;

while(left = right)

{

int mid = (left + right )/2;

if(a[mid].department == x)

{

ans = mid;

break;

}

else if(a[mid].department  x)

{

left = mid + 1;

}

else

{

right = mid – 1;

}

}

if(!ans)

{

printf(“没找到\n”);

}

else

{

int start = ans,ends = ans;

while(a

今天给各位分享c语言按图书编号排序的知识,其中也会对c语言按图书编号排序怎么排进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

.department== x)

start –;

while(a[ends].department == x)

ends ++;

printf(“%d系的信息为:\n”,x);

for(int i = start + 1; i  ends ; i ++)

{

printf(“%d %d %s %s\n”,a[i].department,a[i].number,a[i].name,a[i].student_id);

}

}

}

int main()

{

int n;

printf(“输入图书管理系统存有学生信息的个数:\n”);

scanf(“%d”,n);

printf(“输入这%d个同学的各项信息\n”,n);

for(int i = 1; i = n ; i ++)

{

scanf(“%d%d%s%s”,(a[i].department),a[i].number,a[i].name,a[i].student_id);

}//输入一个大小为n的图书信息

quicksort(a,1,n);

printf(“输出的是按系名排序后的信息是:\n”);

for(int i = 1; i = n ; i ++)

{

printf(“%d %d %s %s\n”,a[i].department,a[i].number,a[i].name,a[i].student_id);

}//

//按照系名进行二分索引并输出这个

int x;

printf(“输入要输出的系名的信息:\n”);

scanf(“%d”,x);

//输入需要查找的系名

bin_search(a,n,x);

return 0;

}

//运行结果为:

//输入图书管理系统存有学生信息的个数:

//5

//输入这5个同学的各项信息

//1 12 123 1234

//1 21 321 4321

//4 12 345 5664

//3 45 676 8900

//3 56 789 7897

//输出的是按系名排序后的信息是:

//1 21 321 4321

//1 12 123 1234

//3 45 676 8900

//3 56 789 7897

//4 12 345 5664

//输入要输出的系名的信息:

//3

//3系的信息为:

//3 45 676 8900

//3 56 789 7897

//

//Process returned 0 (0x0)   execution time : 5.468 s

//Press any key to continue.

c语言按图书编号排序(c语言按图书编号排序怎么排)

C语言对书价格排序的一些问题

美元符号你在printf函数中自己打,其他数据自己输入就可以了

将printf函数改为

printf(“排序后顺序为(从小到大):\n”);

for(i=0;i10;i++)

{

printf(“书名:%s\n”,str[i].name);

printf(“价格:%$%f\n”,str[i].price);

}

C语言的一个问题!高手求做~详解!给满分!

c语言都可以实现,可以通过链表的来存放你的图书数据.如果你没有学过数据结构,那就不是很容易写了。

C语言图书管理系统

#include stdio.h

#include string.h

#include stdlib.h

//

#define MAXSIZE 100 //最大值定义为100

#define LIST_INIT_SIZE 100//图书证使用者最大值定义为100

//借书人的结构体

typedef struct Boro//借书行为

{

char BNum[20];//借书的书号

char RetDate[8];//归还日期

struct Boro *next;

}Bor;

typedef struct LinkBook

{

Bor *next;//该图书证的借书行为

char CNum[20];//证号

int Total;//借书的数量

}lend[LIST_INIT_SIZE];//借书人数组

//图书的结构体信息

typedef struct LNode

{

char CardNum[20];//图书证号

struct LNode *next;

}LinkList; //借书人

typedef struct book

{//每种图书需要登记的内容包括书号ISBN、书名、作者、出版社、总库存量和现库存量。

char num[20];//书号

char name[20];//书名

char auth[20];//作者

char pub[20];//出版社

int TotNum;//总库存

int NowNum;//现库存

LinkList *next;//借了该书的人

}ook[MAXSIZE];

//

int Retotal;//读者数量

int total; //定义外部变量.书的种类数

//

//结构体初始化

void InitBo(ook boo) //初始化图书信息

{

for(int i=0;iMAXSIZE;i++)

{

boo[i].NowNum=0;

boo[i].TotNum=0;

boo[i].next=NULL;

}

}

void InitRe(lend Lin) //初始化借阅者信息

{

for(int i=0;iLIST_INIT_SIZE;i++)

Lin[i].next=NULL;

}

//

int mid=0;//外部函数mid,用来返回查找到的位置

bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比较书号

{ //用bool函数,但由于函数不能有两个返回值,所以设置一个外部变量mid,用来返回查找到的位置

int low=0,high=total-1;

int found=0;

while(low=high)

{

mid=(low+high)/2; //中间点

if(strcmp(boo[mid].num,SearchNum)==0) //书号相同

{

found=1;

return true;

}//查找成功

if(strcmp(boo[mid].num,SearchNum)!=0)//书号不同

high=mid-1;

else low=mid+1;

}

if(found==0)

return false; //查找失败

}

void Buy(ook boo, char BuyNum[])

{//1、 采编入库:新购入一种书,如果该书在图书账目中已经存在,则将其库存量增加(包

//括总库存量和现库存量),如果该书不存在,则在图书账目中增加一种书,总库存量和现库存量均为1。

if(BinarySearch(boo,BuyNum)) //如果书库中有此书

{

boo[mid].TotNum++; //总库存加1

boo[mid].NowNum++; //现库存加1

printf(“入库成功.\n”);

printf(“已更改书库中该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。\n”,boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);

}

if(!BinarySearch(boo,BuyNum))

{

int i;

for(i=total;imidtotal;i–) //插在适合位置 保持有序

boo[i]=boo[i-1]; //空出插入位置

printf(“该书在书库中不存在。设立新书目,请补全书的详细信息。\n”);

strcpy(boo[i].num,BuyNum);

printf(“该书购入的数量是:”);

scanf(” %d”,boo[i].NowNum);

boo[i].TotNum=boo[i].NowNum;

printf(“该书的名字是:”);

scanf(” %s”,boo[i].name);

printf(“该书的作者是:”);

scanf(” %s”,boo[i].auth);

printf(“该书的出版社是:”);

scanf(” %s”,boo[i].pub);//补全信息

boo[i].next=NULL;

total++;//总量+1

printf(“已增加该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。\n”,boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);

printf(“入库成功.\n”);

}

}

void Delete(ook boo,char DeleteNum[])

{//2、 清空库存:某一种书已无保留价值,将它从图书账目中注销。

if(BinarySearch(boo,DeleteNum)==false||total==0) //如果无此书

printf(“书库中没有该书.\n”);

if(BinarySearch(boo,DeleteNum))//若有

{

if(!boo[mid].next)

{

int j;

for( j=mid;jtotal;j++)

boo[j]=boo[j+1];

strcpy(boo[j].num,boo[j+1].num);

strcpy(boo[j].name,boo[j+1].name);

strcpy(boo[j].auth,boo[j+1].auth);

strcpy(boo[j].pub,boo[j+1].pub);

boo[j].TotNum=boo[j+1].TotNum;

boo[j].NowNum=boo[j+1].NowNum;

printf(“已成功删除该书.\n”);

}

else printf(“该书有借阅者,无法删除。\n”);

}

}

void Borrow(ook boo,lend Lin,char BorrowNum[],char CaNum[])

{//3、 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1,

//并登记借阅者的图书证号和归还期限。

Bor *p,*q;

LinkList *m,*n;

if(!BinarySearch(boo,BorrowNum)||total==0) //如果没有找到此书

printf(“书库里没这书。\n”);//如果有这书

if(BinarySearch(boo,BorrowNum)) //书库里有

{

if(boo[mid].NowNum0) //看现库存是否大于0

{

boo[mid].NowNum–;//借出一本,少1

if(boo[mid].next==NULL) //若该书信息下显示该种书还没被人借过

{

m=(LinkList *)malloc(sizeof(LNode));//分配

boo[mid].next=m;//该图书信息中的链表的第一个结点

strcpy(m-CardNum,CaNum);

m-next=NULL;//后一个结点为空

}

else //如果已经有人在借这书了

{

m=boo[mid].next;

while(m-next) //遍历到最后一个结点

m=m-next;

n=(LinkList *)malloc(sizeof(LNode));//分配空间,增加1个结点

m-next=n;

strcpy(n-CardNum,CaNum);//记录证号

n-next=NULL;

}

int i=0;

for(i=0;iRetotal;i++)//

{

if(!strcmp(Lin[i].CNum,CaNum))//如果已经有该图书证的信息

{

p=Lin[i].next;

while(p-next)p=p-next;//遍历到最后一个结点

q=(Bor *)malloc(sizeof(Boro));//分配空间

p-next=q;

strcpy(q-BNum,BorrowNum); //记录书号

printf(“输入归还日期:”);

scanf(“%s”,q-RetDate);

q-next=NULL;

printf(“借阅成功.\n”);

break; //找到证了就跳出循环

}

}

if(i==Retotal)//如果没有这张证的信息

{

strcpy(Lin[i].CNum,CaNum); //记录证号

p=(Bor *)malloc(sizeof(Boro)); //分配空间

Lin[i].next=p;

strcpy(p-BNum,BorrowNum);

printf(“输入归还日期:”);

scanf(” %s”,p-RetDate);

p-next=NULL;

Retotal++; //借阅证号信息总数加1

printf(“借阅成功.\n”);

}

}

else printf(“借阅失败.该书现在库存为0.\n”);

}

}

void Return(ook boo,lend Lin,char ReturnNum[],char BorrowerNum[])

{//4、 归还:注销对借阅者的登记,改变该书的现存量。

Bor *p,*q;

LinkList *m,*n;

int flag=0;//设置一个参数

if(!BinarySearch(boo,ReturnNum)||!total) //没书

printf(“书库中无此书.\n”);

if(BinarySearch(boo,ReturnNum)) //有书

{

m=boo[mid].next;

if(!strcmp(m-CardNum,BorrowerNum)) //如果是第一个借的人还的

{

boo[mid].NowNum++; //现库存加1

boo[mid].next=m-next; //删除结点

free(m); //释放该结点的空间空间

}

else

{

while(m-next) //查找归还者的借阅者结点

{

if(!strcmp(m-next-CardNum,BorrowerNum)) //如果找到

{

n=m-next; //n为归还者的借阅结点

m-next=n-next; //m指向归还者的借阅结点的下一结点

free(n); //释放空间

boo[mid].NowNum++; //现库存加1

break;

}

m=m-next;

}

}

}

//在借阅者表里查找借阅者信息

for(int i=0;iRetotal;i++)

{

if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借阅者

{

p=Lin[i].next;

if(!strcmp(p-BNum,ReturnNum)) //如果是归还的是借的第一本书

{

Lin[i].next=p-next; //指向下一借书结点

free(p); //释放结点空间

printf(“成功归还该书.\n”);

flag=1;

break;

}

else //找不到

{

while(p-next) //找到归还书的借书结点

{

if(!strcmp(p-next-BNum,ReturnNum)) //如果找到

{

q=p-next; //q为归还书的借书结点

p-next=q-next; //p指向下一借书结点

free(q); //释放空间

printf(“成功归还该书.\n”);

flag=1;

break;

}

p=p-next;

}

}

}

}

for(int k=0;kRetotal;k++)

if(!Lin[k].next)

{

int j;

for(j=k;jRetotal;j++)

Lin[j]=Lin[j+1]; //其后都往前移一位,覆盖掉当前信息

strcpy(Lin[j].CNum,” “); //删除图书证号

Retotal–; //图书证数减1

} //删除当前状态下没借书的图书证的信息,节省空间

if(flag==0) printf(“无该证信息.\n”);

}

//5、 查找:实现按三种查询条件之一查找:按书号查找、

//按书名查找、按作者查找。注:可不实现组合查找,即几个条件组合查找。

void SearchByNum(ook boo,char SeaNum[])

{//BY NUM 根据书号查找

LinkList *p;

p=boo[mid].next;

if(BinarySearch(boo,SeaNum)==false)printf(“对不起,未找到您想查找的书。\n”);//二分查找 没找到

else//找到了的话

{

{

printf(“┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓\n”);

printf(“┃ 书号 ┃ 书名 ┃ 作者 ┃ 出版社 ┃ 现库存 ┃ 总库存 ┃\n”);

printf(“┣━━━━━━━╋━━━━━━━╋━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━┫\n”);

printf(“┃%14s┃%14s┃%16s┃%16s┃%10d┃%10d┃\n”,boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);

printf(“┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━┛\n”);

if(boo[mid].next!=NULL)

{

printf(“┏━━━━━━━┓\n”);

printf(“┃ 已借该书的 ┃\n”);

printf(“┃ 图书证号 ┃\n”);

while(p)

{

printf(“┣━━━━━━━┫\n”);

printf(“┃%14s┃\n”,p-CardNum);

p=p-next;

}

printf(“┗━━━━━━━┛\n”);

}

}

while(p)

{

printf(” %s “,p-CardNum);//在按书号查找的函数里也显示借了这本书的借阅者的证号

p=p-next;

}

printf(” \n”);

}//显示查找的书籍的信息

}

void SearchByName(ook boo)

{//BY NAME 根据书名查找

char SeaName[20];

printf(“输入想查找的书的书名:\n”);

scanf(” %s”,SeaName);

printf(“找到符合该书名的书的详细信息如下:\n”);

for(int i=0;itotal;i++)

{

if(strcmp(SeaName,boo[i].name)==0)//如果书名一样

{

printf(“书号:%s\n书名:%s\n作者:%s\n出版社:%s\n总库存量:%d\n现库存量:%d\n\n”,boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);

}//显示符合信息的所有书籍的信息

}

}

void SearchByAuth(ook boo)

{// BY AUTH 根据作者查找

char SeaAuth[20];

printf(“输入想查找的书的作者:\n”);

scanf(” %s”,SeaAuth);

printf(“找到符合该作者的书的详细信息如下:\n”);

for(int i=0;itotal;i++)

{

if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一样

{

printf(“书号:%s\n书名:%s\n作者:%s\n出版社:%s\n总库存量:%d\n现库存量:%d\n\n”,boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);

}//显示符合信息的所有书籍的信息

}

}

//6、 查看:可查看某图书证号的借阅者借阅的全部图书,可查看全部超期未还的图书。

void ViewCard(ook boo,lend Lin)

{//查看某图书证号的借阅者借阅的全部图书

char Num[20];

printf(“请输入您所想要查看的图书证号:\n”);

scanf(” %s”,Num);

Bor *p;

int qqq=0;

for(int i=0;iRetotal;i++)

{

if(strcmp(Lin[i].CNum,Num)==0) //找到该证

{

printf(“这个证借的书有:\n”);

p=Lin[i].next;

while(p)

{

printf(” %s “,p-BNum); //书号

p=p-next;

}

printf(“\n”);

qqq=1;

break;

}

}

if(qqq==0)

printf(“该证不存在.\n”);

}

void ViewBook(ook boo,lend Lin)

{//查看全部超期未还的图书

char date[8];

Bor *p;

printf(“请输入日期(请按格式20060605输入):\n”);

scanf(” %s”,date);

printf(“所有超期未还的书有:\n”);

for(int i=0;iRetotal;i++)

{

p=Lin[i].next;

while(p)//当p不空时

{

if(strcmp(p-RetDate,date)0) //超过日期

{

printf(“书号为 %s 证号为 %s 应归还日期为 %s \n”,p-BNum,Lin[i].CNum,p-RetDate);

}//显示所有超期未还的书的信息

p=p-next;

}

}

}

void Menu() //菜单

{

printf(“┏—————————————————M E N U————————————————┓\n”);

printf(“│ │\n”);

printf(“│ 1. 采编入库:新购入一种书,如果该书在图书账目中已经存在, │\n”);

printf(“│ 则将其库存量增加(包括总库存量和现库存量)。 │\n”);

printf(“│ 如果该书不存在,则在图书账目中增加一种书, │\n”);

printf(“│ 总库存量和现库存量均为输入的数字。 │\n”);

printf(“│ 2. 清空库存:某一种书已无保留价值,将它从图书账目中注销。 │\n”);

printf(“│ 3. 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1, │\n”);

printf(“│ 并登记借阅者的图书证号和归还期限。 │\n”);

printf(“│ 4. 归还:注销对借阅者的登记,改变该书的现存量。 │\n”);

printf(“│ 5. 按书号查找。 │\n”);

printf(“│ 6. 按书名查找。 │\n”);

printf(“│ 7. 按作者查找。 │\n”);

printf(“│ 8. 查看某图书证号的借阅者借阅的全部图书。 │\n”);

printf(“│ 9. 查看全部超期未还的图书。 │\n”);

printf(“│ 0. 退出图书管理系统。 │\n”);

printf(“│ │\n”);

printf(“┗—————————————请 选 择 你 需 要 的 操 作————————————┛\n”);

}

int main()

{

ook Bo;

lend Lin;

char BNum[20];

char CNum[20];

printf(“———————–欢 迎 进 入 图 书 管 理 系 统!—————————\n\n”);

int choice=10;

int SearchCho=10,ViewCho=10;

while(choice!=0)

{

Menu();//显示菜单

scanf(” %d”,choice);

switch(choice)

{

case 1://采编入库

printf(“请输入入库的书的书号:”);

scanf(” %s”,BNum);

Buy(Bo,BNum);

case 2://清空库存

printf(“请输入想要清除的书的书号:”);

scanf(” %s”,BNum);

Delete(Bo,BNum);

break;

case 3://借阅

printf(“请输入想要借阅的书的书号:\n”);

scanf(” %s”,BNum);

printf(“请输入图书证号:”);

scanf(” %s”,CNum);

Borrow(Bo,Lin,BNum,CNum);

break;

case 4://归还

printf(“请输入想要归还的书的书号:\n”);

scanf(” %s”,BNum);

printf(“请输入图书证号:”);

scanf(” %s”,CNum);

Return(Bo,Lin,BNum,CNum);

break;

case 5://查找//根据书号查找

printf(“请输入书号:”);//输入书号查找

scanf(” %s”,BNum);

SearchByNum(Bo,BNum);

break;

case 6://根据书名查找

SearchByName(Bo);

break;

case 7://根据作者查找

SearchByAuth(Bo);

break;

case 8://查看某图书证所借的所有书

ViewCard(Bo,Lin);

break;

case 9: //查看全部超期未还的书

ViewBook(Bo,Lin);

break;

case 0://退出系统

exit(0);break;

default:printf(“输入错误!\n”);exit(0);break;

}

}

}

c语言编程题;从键盘输入N本图书的书名(书名长度不超过10个汉字)和单价,按单价从高到低顺序排序后输出图书

#include stdio.h

#include stdlib.h

#define max_N 10000

/*定义书的结构体

*name,书的名字

*price,书的单价

*/

struct Book {

  char name[21];

  double price;

} book[max_N];

//定义快速排序的比较函数

int cmp(const void *a, const void *b) {

   return (*(struct Book *)b).price  (*(struct Book *)a).price ? 1 : -1;

}

int main()

{

  int N, i;

 

  printf(“\n请输入书的数量:”);

  scanf(“%d”, N);

 

  printf(“\n请依次输入%d本书的书名、价格:\n\n”, N);

  for (i = 0; i  N; ++i) {

      scanf(“%s %lf”, book[i].name, book[i].price);

  }

 

  //快速排序

  qsort(book, N, sizeof(struct Book), cmp);

 

  printf(“\n%d本书按单价从高到低排序如下:\n\n”, N);

  for (i = 0; i  N; ++i) {

      printf(“%s\n”, book[i].name);

  }

 

  return 0;

}

关于c语言按图书编号排序和c语言按图书编号排序怎么排的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 04:51:51
下一篇 2024年4月3日 04:58:09

相关推荐

  • 大学计算机c语言,大学计算机C语言二级考试内容

    大学生来看C语言学习方法总结 1、有明确的目标 要学习程序的语言,您需要设定目标。每月或每日目标。只有这样,你才能恢复活力,激发你的情绪。一旦你开始学习,很容易挖一个角落,尤其是你会死的地方。那么你就无法释放自己。 2、可以先从C语言的基础开始学习,包括变量和基本数据类型、类型转换等内容。接着可以学习C语言的输入输出函数,例如printf和scanf等。然后…

    2024年5月20日
    4000
  • c语言显示bmp位图,c语言bmp文件大小

    C语言读取1位的BMP图 在VC++环境下BMP图像文件与GIF图像文件的转换。 没有标准函数读。需要根据BMP文件的结构定义,读出头部和每个颜色值。 bmp是无损压缩图片的一种算法,一般是由图片头部,文件头部,颜色表等组成,要改变颜色,就需要改变颜色表中的内容,当然由于BMP算法在不断改进,其过程和组成部分可能有变化,上面的仅是一般情况。 用c语言读取24…

    2024年5月20日
    3800
  • c语言编程输出k形图案,用c语言输出图案

    c语言输出平行四边形斜星图案k啥子意思 1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 2、处理框(矩形框),表示一般的处理功能。判断框(菱形框),表示对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。它有一个入口,二个出口…

    2024年5月20日
    3400
  • c语言取余运算程序,c语言取余的用法

    c语言中怎样取余数 很简单,只需要一步,也就是只需要一张图:C语言提供了一个取余数的运算符%,称之为“模”运算符。只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数。 【1】首先请打开Visual C++ 0,(本文使用Visual C++ 0软件操作,也可使用Visual Studio或其他C/C++编程软件。),打开成功后…

    2024年5月20日
    3300
  • c语言代码测时间,c语言给出时间计时器

    C语言计算时间 printf(%f, clock()-t);clock()记录的是当前时间,利用两次调用clock();计算时差,从而获得程序运行的时间,将你写的代码写在省略号的那个地方。 需要利用C语言的时间函数time和localtime,具体说明如下:函数接口介绍:time函数。形式为time_t time (time_t *__timer);其中ti…

    2024年5月20日
    3700
  • c语言跳出循坏,c语言跳出循环的三种方式

    c语言如何跳出循环? 1、用语句exit for来跳出for循环,这里跳出循环指的是跳出最里面一层的循环结构。 2、break:一般用于跳出本循环,即跳出break所在的循环,哪个循环调用了break,就跳出哪个循环;return:一般都用在被调用的对象里面,调用以后返回到调用对象。 3、控制台程序中的死循环程序,一般按CTRL+C直接中断程序即可。比如下面…

    2024年5月20日
    3700
  • c语言必须知道的495,’5’c语言

    谁有《你必须知道的495个C语言问题》电子书百度网盘资源下载 1、至于你选的其他的书都可以先不看,其中《21天学通c(第三版)》《C语言编程宝典》《你必须知道的495个C语言问题 》基本是用来诓骗新手的商业书,噱头比较重,有用的不多,重复性很高。 2、有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题的答案。《你必须知道的495个C语言问题》的出版填补了…

    2024年5月20日
    4700
  • c语言打印农历,c语言打印闰年

    万年历的C语言编法 1、核心算法:星期(0~6)=(年份系数+月份系数+日期)%7;其中,年份系数我以2007年做参照,已知2007年,年份系数是0,往前往后分别是递减和递增。增减规律:非闰年为±1,闰年1~2月-2或+1,闰年3~12月+2或者-1。 2、首先下载安装Notepad++,这是一款免费的且能够编辑C语言的软件。然后下载安装tdm-gcc,这是…

    2024年5月20日
    4200
  • c语言画图函数,c语言 画图

    c语言的图形函数库有哪些? C语言编程比较好的图形库有以下几种:ege(EasyGraphicsEngine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向C/C++语言新手的图形库,它的目标也是为了替代TC的BGI库而存在。 最简单的EGE图形库。很简单,安装使用也很方便。最适合初学者简单绘图,了解这些。 C++标准库,包…

    2024年5月20日
    4100
  • c语言定义变量加数字吗,c语言定义变量的格式有哪几种

    C语言里面,定义int型的变量后面打个小括号(不是中括号!),里面写个… int a = 1;(2)定义标准的结构体变量时不能这样用(但如果你在结构体中加了结构函数那就可以了),只有在定义标准类型的变量或类对象变量时才能这样用。 如果有一个语句 int x = IN_OUT_PUT_M1 ,预处理后的结果就是 int x = (uint) 0x0…

    2024年5月20日
    4100

发表回复

登录后才能评论



关注微信