7) void choose(book*h) { int i; int a = 1; while (a>0) { menu(); printf("请选择:"); scanf("%d",&i); switch (i) { case 1: h=GreatLink(); break; case 2: PrintLink(h); break; case 3: Insert(h); break; case 4: Search(h); break; case 5: revise(h); break; case 6: delete(h); break; case 0: printf("【退出】\n"); printf("退出成功!感谢您的使用!\n"); system("pause");//暂停,避免输出过快 exit(0); break; default: printf("无效的命令!\n"); a = -1;//跳出循环条件 break; } } }
时间: 2024-03-31 15:38:22 浏览: 12
这是一个图书管理系统的函数,具体实现了以下功能:
1. 创建一个书籍链表(GreatLink()函数);
2. 打印书籍链表(PrintLink()函数);
3. 在书籍链表中插入一本新书(Insert()函数);
4. 在书籍链表中查找一本书籍(Search()函数);
5. 修改一本书籍的信息(revise()函数);
6. 删除一本书籍(delete()函数);
7. 显示菜单,等待用户输入,根据用户输入执行相应的操作;
8. 当用户输入无效命令时,提示用户并要求重新输入。
该函数使用了switch-case语句来实现用户输入命令的判断,当用户输入无效命令时,会跳出while循环,等待用户输入有效命令。当用户输入0时,会退出程序并输出感谢信息。
相关问题
#include <stdio.h> #define N 8 void main() { int a(N)={1,5,8,7,6,3,2,4}; /*error1*/ int i,j,k,t; for(i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) if(a[k]<a[j]) /*error2*/ k=j; t=a[i],a[i]=a[j],a[j]=t; /*error3*/ } for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); }
这段代码有三处错误:
1. `int a(N)={1,5,8,7,6,3,2,4};` 这里的定义方式是错误的,应该是 `int a[N]={1,5,8,7,6,3,2,4};`。
2. `if(a[k]<a[j])` 应该是 `if(a[k]<a[j])`,这里应该比较 `a[k]` 和 `a[j]` 的大小。
3. `t=a[i],a[i]=a[j],a[j]=t;` 这行代码有误,正确的写法是 `t=a[i],a[i]=a[k],a[k]=t;`,交换 `a[i]` 和 `a[k]` 的值。
正确的代码如下:
```c
#include <stdio.h>
#define N 8
void main() {
int a[N]={1,5,8,7,6,3,2,4};
int i,j,k,t;
for(i=0;i<N-1;i++) {
k=i;
for(j=i+1;j<N;j++)
if(a[k]<a[j])
k=j;
t=a[i],a[i]=a[k],a[k]=t;
}
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
}
```
void fun_b(int *x, int *y) { int *p; *x=*y;*y=*x;
这是一个交换两个整数值的函数,函数名为fun_b,函数参数为两个指向整型变量的指针x和y。函数体内定义了一个指向整型变量的指针p,然后将y指向的值赋给x指向的值,将x指向的值赋给y指向的值,实现了两个整数值的交换。
```c
void fun_b(int *x, int *y) {
int *p;
int temp;
temp = *x;
*x = *y;
*y = temp;
}
```