我想说,你写的程序各个函数之间的参数传递问题没有弄懂

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void display(int allmoney, int number);
void xuanze(int allmoney, int number);
void sys(int a, int allmoney, int number);
void data();
void password(int allmoney, int number);
void qk(int allmoney, int number);
void ye(int allmoney, int number);
void number_func(int allmoney, int numbe);
void display(int allmoney, int number)
{
    system("cls");
    printf("=================================\n");
    printf("=========取款机==================\n");
    printf("=================================\n");
    printf("       1:取款\n");
    printf("\n");
    printf("       2:查询余额\n");
    printf("\n");
    printf("       3:修改密码\n");
    printf("\n");
    printf("       4:退卡\n");
    printf("=================================\n");
    xuanze(allmoney, number);
}
void xuanze(int allmoney, int number)
{
    int a = 0;//init a = 0
    printf("请输入选择的操作数\n");
    scanf("%d",&a);//添加
    if (a == 1 || a == 2 || a == 3 || a == 4)
    {
        sys(a, allmoney, number);
    }
    else
    {
        printf("错误的操作数,请按任意键继续'''\n");
        getchar();
        getchar();
        display(allmoney, number);
    }
}
void sys(int a, int allmoney, int number)
{
    switch (a)
    {
    case 1:qk(allmoney, number);break;
    case 2:ye(allmoney, number);break;
    case 3:number_func(allmoney, number);break;
    case 4:exit(0);break;
    }
}
void qk(int allmoney, int number)
{
    int money;
    printf("请输入你的取款数(只能是100的整数倍):\n");//记得提示只能是100的整数倍
A:scanf("%d", &money);
  if ((money < 0) || (money > 3000) || (money%100 != 0))
  {
      printf("错误\n");
      goto A;//goto 由于程序的局部性原理,使用goto会使程序运行出现错误。
  }
  else
  {
      printf("请稍等\n");
      if (allmoney < money)
      {
          printf("你的余额不足\n");
          getchar();//等待用户确认
      }
      else
      {
          printf("你已取出%d元\n", money);
          getchar();//等待用户确认
      }
      allmoney = allmoney - money;
      getchar();
      display(allmoney, number);
  }
}
void ye(int allmoney, int number)
{
    fflush(stdin);//将标准输入缓冲区清空,避免getchar读到旧数据使得程序一跳而过
    printf("你的账户余额是%d元\n", allmoney);
    getchar();
    display(allmoney, number);
}
void number_func(int allmoney, int numbe)
{
    int d, j;
    printf("请输入新的密码\n");
B:scanf("%d", &d);
  system("cls");
  printf("确认密码\n");
  scanf("%d", &j);
  system("cls");// "
  if (d != j)
  {
      printf("错误\n");
      goto B;
  }
  else
  {
      numbe = j;
  }
  display(allmoney, numbe);
}
void data()
{
    int number, allmoney;
    printf("请设置初始密码:\n");
    scanf("%d", &number);
    system("cls");
    printf("请设置初始金额:\n");
    scanf("%d", &allmoney);
    system("cls");
    printf("请输入任意键继续\n");
    getchar();
    getchar();
    display(allmoney, number);
}
void password(int number, int allmoney)
{
    int i, m = 0;
    printf("请输入密码\n");//\n
    scanf("%d", &i);
    system("cls");
    if (i != number)
        do
        {
            printf("你输入的密码错误\n");
            m++;
            scanf("%d", &i);
        }
        while (i != number && m < 2);
        if (m > 1)
        {
            display(allmoney, number);
        }
}
void main()
{
    data();//datd 改为data
}已帮你改好,还有模块间耦合度太高了,