大一课设题不知道哪错了?

代码能运行 但是在输入部门时就出bug

运行截图

准确来说是编号输入1时输入到部门时会出bug,有时候输入部门时也会bug


struct stu
{
    char name[10];
    char bumen[20];
    long int yfgongzi;
    long int baoxian;
    long int shuijin;
    long int sfgongzi;
}str[];

int n[];
int i=0;
void iscanf();
void iprintf();
void ifind();

int main()
{
    printf("------------------\n");
    printf("输入编号进行操作\n");
    printf("1.输入职工数据\n");
    printf("2.显示全体职工数据\n");
    printf("3.查找\n");
    printf("0.退出\n");
    while(1)
    {
        int num;
        scanf("%d",&num);
        switch(num)
        {
        case 1:
            iscanf();
            break;
        case 2:
            iprintf();
            break;
        case 3:
            ifind();
            break;
        case 0:
            return 0;
            default:
            printf("请在0~3内选择\n");
        }
    }
}

void iscanf()
{
    printf("请输入编号\t");
        scanf("%d",&n[i]);
    printf("请输入姓名\t");
        scanf("%s",&str[n[i]].name);
    printf("请输入部门\t");
        scanf("%s",&str[n[i]].bumen);
    printf("请输入应付工资\t");
        scanf("%d",&str[n[i]].yfgongzi);
    printf("请输入保险\t");
        scanf("%d",&str[n[i]].baoxian);
    printf("税金\t");
        scanf("%d",&str[n[i]].shuijin);
    printf("输入完毕\n");
    i++;
}

void iprintf()
{
    int j;
    for(j=0;j<=i;j++)
    {
        printf("编号:    %d\n",n[j]);
        printf("姓名:    %s\n",str[n[j]].name);
        printf("部门:    %s\n",str[n[j]].bumen);
        printf("应付工资:%d\n",str[n[j]].yfgongzi);
        printf("保险:    %d\n",str[n[j]].baoxian);
        printf("税金:    %d\n",str[n[j]].shuijin);
        printf("实付工资: %d\n",(str[n[j]].yfgongzi-str[n[j]].baoxian-str[n[j]].shuijin));
    }
}

void ifind()
{
    printf("输入部门值\n");
    char arr[20];
    int j;
    scanf("%s",&arr);
    for(j=0;j<=i;j++)
    {
        if(strcmp(arr,str[n[j]].bumen)==0)
        {
        printf("编号:    %d\n",n[j]);
        printf("姓名:    %s\n",str[n[j]].name);
        printf("部门:    %s\n",str[n[j]].bumen);
        printf("应付工资:%d\n",str[n[j]].yfgongzi);
        printf("保险:    %d\n",str[n[j]].baoxian);
        printf("税金:    %d\n",str[n[j]].shuijin);
        printf("实付工资: %d\n",(str[n[j]].yfgongzi-str[n[j]].baoxian-str[n[j]].shuijin));
        }
    }
}
阅读 905
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进