void xiugai(node *h){ int ch; system("cls"); system("color 6B"); printf("\n\n\n\t~~~~~~~修改订单~~~~~~~~~\n\n"); printf("\t输入1修改订单\t输入0返回上一级:"); scanf("%d",&ch); while(1){ switch(ch){ case 1:printf(h);break; case 0:printf("0");break; default:online();//退出 } printf("\t输入1修改订单\t输入0返回上一级:"); scanf("%d",&ch); } }这个代码错误存在在哪里
时间: 2024-03-27 12:39:48 浏览: 76
这段代码存在以下错误:
1. `printf(h)`应该改为`printf("%p", h)`,因为`printf`函数的第一个参数是格式化字符串,`%p`表示输出指针类型的地址值,而`h`是一个指向节点的指针变量,需要使用`%p`输出它的地址。
2. `case 1:`后面应该跟着一个语句块或者一条语句,而不是直接跟着`printf(h);`,因为`printf`函数并不是修改订单的操作。
3. `case 0:`后面应该跟着一个`return`语句,因为这个分支是返回上一级的操作,需要结束`xiugai`函数的执行。
4. `default:`后面应该跟着一个`return`语句,因为这个分支是退出程序的操作,需要结束整个程序的执行。
5. 在`while(1)`循环中,缺少一个`break`语句,用于在用户输入0时退出循环。
下面是修改后的代码:
```c
void xiugai(node *h) {
int ch;
system("cls");
system("color 6B");
printf("\n\n\n\t~~~~~~~修改订单~~~~~~~~~\n\n");
printf("\t输入1修改订单\t输入0返回上一级:");
scanf("%d", &ch);
while (1) {
switch (ch) {
case 1:
// TODO: 编写修改订单的代码
break;
case 0:
printf("返回上一级\n");
return;
default:
printf("退出程序\n");
return;
}
printf("\t输入1修改订单\t输入0返回上一级:");
scanf("%d", &ch);
if (ch == 0) {
printf("返回上一级\n");
break;
}
}
}
```
阅读全文