C程序在scanf上崩溃

C程序在scanf上崩溃,c,C,我在大学里做了一个简单的项目,是关于超市计费系统的。所以我开始工作,但每次我作为用户输入时,程序都会崩溃 #include<stdio.h> #include<conio.h> void welcome(); void list(); int main() { welcome(); } void welcome() { int ch; printf("\t\t\tSuper Market\n"); printf("Make Your choice\

我在大学里做了一个简单的项目,是关于超市计费系统的。所以我开始工作,但每次我作为用户输入时,程序都会崩溃

#include<stdio.h>
#include<conio.h>
void welcome();
void list();
int main()
{
welcome();
}
void welcome()
{
    int ch;
    printf("\t\t\tSuper Market\n");
    printf("Make Your choice\n");
    printf("1.Go Shopping\n2.Check Bill\n3.Check Offers");
    scanf("%d",ch);
    switch (ch)
    {
        case 1: list();
        default : printf("wrong choice");
    }
}
void list()
{
    system("cls");
    printf("1.Item First");
    getch();
}
#包括
#包括
无效欢迎();
作废清单();
int main()
{
欢迎();
}
欢迎光临
{
int-ch;
printf(“\t\t\t每个市场\n”);
printf(“做出您的选择”\n);
printf(“1.购物\n2.核对账单\n3.核对报价”);
scanf(“%d”,ch);
开关(ch)
{
案例1:list();
默认值:printf(“错误选择”);
}
}
作废清单()
{
系统(“cls”);
printf(“1.项目优先”);
getch();
}

我做错了什么?

你忘了给
&

转换这个

scanf("%d",ch);
对此

scanf("%d",&ch);
建议

您需要在
案例中使用
break
。否则,控制流将“通过”进入后续的
案例
s

case 1: 
   list();
   break;

将整数指针传递给scanf

scanf("%d", &ch);

这需要完成,因为C中的函数调用是“按值传递”,但您希望通过用户的输入更改变量
ch
的值。因此,您可以通过引用scanf来传递它,从而允许它更改值。

scanf(“%d”,ch)-->
scanf(“%d”&ch)也需要
中断最后一个案例部分。我现在觉得自己很愚蠢。感谢您的快速响应。您还需要
休息开关中的code>s
。a
返回0main
末尾的code>将被视为良好做法。@arun483我已回滚您的
[Resolved]
编辑。相反,将对你帮助最大的答案标记为“接受”。请解释为什么它被否决。