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-04-01 12:31:40 浏览: 17
这是一个函数,名为choose,它的参数是指向book类型的指针h。该函数使用了一个while循环,只有在a大于0的情况下才会一直执行。在循环中,先调用了一个menu函数,然后提示用户选择操作。用户输入一个数字,根据这个数字调用不同的函数执行相应的操作,或者输出无效命令并跳出循环。当用户输入0时,退出程序并输出感谢信息。具体而言,1表示创建一个新的链表,2表示打印链表,3表示插入节点,4表示查找节点,5表示修改节点,6表示删除节点,0表示退出程序。
相关问题
#include<stdio.h> #include<stdlib.h> void main() { int *a, *b, *c; a=b=c=(int *)malloc(sizeof(int)); *a=1; *b=2; *c=3; a=b; printf("%d%d%d \n", *a, *b, *c); }
这段代码存在一些问题,我帮你进行修正:
```c
#include <.h>
#include <stdlib.h>
int main() {
int *a, *b, *c;
a = b = c = (int *)malloc(sizeof(int));
*a = 1;
*b = 2;
*c = 3;
b = a; // 修改为 b = a;
printf("%d %d %d\n", *a, *b, *c);
free(a); // 释放动态分配的内存
return 0;
}
```
修正后的代码输出为 "1 1 3"。
修正的问题:
1. 将 `void main()` 修改为 `int main()`,使得 `main` 函数返回一个整数类型的值。
2. 在 `printf` 函数中,修改为 `%d %d %d`,使得输出的整数之间有空格分隔开来。
3. 添加了 `free(a);` 语句,释放动态分配的内存,避免内存泄漏。
6、以下程序的输出结果为。 #include "stdio.h" int fun(char *p) { char *s=p; while (*s!= E' )s++; return s-p; } int main(void) { int i: char all=" ABCDEFG" ¡=fun(a); printf("%2d" i); return 0; A
这个程序存在一些语法错误,也无法通过编译。其中:
1. 变量 `i` 没有声明类型,应该改为 `int i;`。
2. 字符串 `a` 没有加上双引号,应该改为 `char a[] = "ABCDEFG";`。
3. 函数 `fun` 中的字符串结束符应该是单引号,而不是大写字母 E,应该改为 `'\0'`。
在修正这些错误之后,程序的输出结果应该是 7,表示字符串 "ABCDEFG" 的长度(不包括字符串结束符)。
正确的代码如下:
```c
#include <stdio.h>
int fun(char *p) {
char *s = p;
while (*s != '\0') s++;
return s - p;
}
int main(void) {
int i;
char a[] = "ABCDEFG";
i = fun(a);
printf("%2d", i);
return 0;
}
```