c语言问题,友友们看一下吧,实在整不会了

  1. #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct staff
    {
    char number[100];
    char name[100];
    char sex[100];
    int jbgz;
    int jj;
    int gwjt;
    int gjj;
    int yfgz;
    };
    double jbgz,jj,gwjt,gjj;
    struct staff sta[100];
    int num=0;
    void menu();
    void input();
    void modify();
    void list();
    void search();
    void del();
    int main()
    {
    printf(" ************* 职工工资管理系统 **************\n");
    printf(" * 1-----输入/添加职工信息 *\n");
    printf(" * 2-----查询职工信息 *\n");
    printf(" * 3-----修改员工信息 *\n");
    printf(" * 4-----删除员工信息 *\n");
    printf(" * 5-----排序职工工资 *\n");
    printf(" * 6-----退出程序 *\n");
    printf(" *********************************************\n");
    while(1)
    {
    menu();
    }
    }
    void menu()
    { int n;
    printf("请输入您的选择:");
    scanf("%d",&n);
    switch(n)
    { case 1:input(); break;
    case 2:search(); break;
    case 3:modify(); break;
    case 4:del(); break;
    case 5:list(); break;
    case 6:exit(0);
    }
    }
    void input()
    {
    int i,n;
    printf("请输入(要添加)职工人数:");
    scanf("%d",&n);
    for(i=1+num;i<=n+num;i++)
    {
    printf("请输入第%d位职工的工号,姓名,性别,基本工资,奖金,岗位津贴,公积金(中间以空格分隔):\n",i);
    scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj); //输入第i位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金
    sta[i].yfgz=sta[i].jbgz+sta[i].jj+sta[i].gwjt-sta[i].gjj;
    printf("输入成功\n");
    }
    num+=n;
    }
    void modify()
    {
    int i;
    char num[100];
    printf("请输入您想要修改职工的数据的工号:");
    scanf("%s",&num);
    for(i=0;i<100;i++)
    {
    if(strcmp(num,sta[i].number)==0)
    {
    printf("请输入新工号,姓名,性别,基本工资,奖金,岗位津贴,公积金(中间以空格分隔):\n");
    scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);
    sta[i].yfgz=sta[i].jbgz+sta[i].jj+sta[i].gwjt-sta[i].gjj;
    break;
    }
    }
    printf("修改成功!\n");
    printf("修改后的数据为:\n");
    printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
    printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",
    sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
    }
    void list()
    {
    int i,j,k;
    char n[100];
    int nn;
    for(i=0;i<=100;i++)
    {
    for(j=0;j<=100;j++)
    {
    if(strcmp(sta[i].number,sta[j].number)<0&&sta[i].number!=""&&sta[j].number!="")
    {
    strcpy(n,sta[j].number);
    strcpy(sta[j].number,sta[i].number);
    strcpy(sta[i].number,n);
    //
    strcpy(n,sta[j].name);
    strcpy(sta[j].name,sta[i].name);
    strcpy(sta[i].name,n);
    //
    strcpy(n,sta[j].sex);
    strcpy(sta[j].sex,sta[i].sex);
    strcpy(sta[i].sex,n);
    //
    nn=sta[i].jbgz;
    sta[i].jbgz=sta[j].jbgz;
    sta[j].jbgz=nn;
    //
    nn=sta[i].jj;
    sta[i].jj=sta[j].jj;
    sta[j].jj=nn;
    //
    nn=sta[i].gwjt;
    sta[i].gwjt=sta[j].gwjt;
    sta[j].gwjt=nn;
    //
    nn=sta[i].gjj;
    sta[i].gjj=sta[j].gjj;
    sta[j].gjj=nn;
    //
    nn=sta[i].yfgz;
    sta[i].yfgz=sta[j].yfgz;
    sta[j].yfgz=nn;
    }

}

}
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
for(k=0;k<=100;k++)
{
if(strlen(sta[k].number)!=0)
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[k].number,sta[k].name,sta[k].sex,sta[k].jbgz,sta[k].jj,sta[k].gwjt,sta[k].gjj,sta[k].yfgz);
}
}
void search()
{
int i,d=0;
char num[100];
printf("请输入您想要查询的职工工号:");
scanf("%s",&num);
for(i=0;i<100;i++)
{
if(strcmp(num,sta[i].number)==0)
{
d=1;
printf("该职工的数据为:\n");
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
break;
}
}
if(d==0)
printf("查无此人!\n");

}
void del()
{
int i,j,m;
char delnum[100];
printf("请输入您想要删除职工数据的工号:");
scanf("%s",&delnum);
for(i=0;i<100;i++)
{
if(strcmp(delnum,sta[i].number)==0)
{
printf("该职工的数据为:\n");
printf("工号\t姓名\t性别\t基本工资\t奖金\t岗位津贴\t公积金\t应发工资\n");
printf("%s\t%s\t%s\t%d\t\t%d\t%d\t\t%d\t%d\n",sta[i].number,sta[i].name,sta[i].sex,sta[i].jbgz,sta[i].jj,sta[i].gwjt,sta[i].gjj,sta[i].yfgz);
printf("确认删除该名职工的数据吗?(1.确认 2.取消)\n");
scanf("%d",&m);
if(m==1)
{
strcpy(sta[i].number,"");
printf("删除成功!!\n");
}
else break;
}
}
list();
}

img
运行后出现了这样的问题

img

img
这个是正常的,要你从键盘输入对应的内容来完成职工添加操作。
你根据提示依次输入就好了,最后回车就行了。

如有帮助,请采纳。点击我回答右上角【采纳】按钮。

你的scanf语句都有问题,记住,字符串是不需要加&符号的
scanf("%s %s %s %d %d %d %d",&sta[i].number,&sta[i].name,&sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);
改为
scanf("%s %s %s %d %d %d %d",sta[i].number,sta[i].name,sta[i].sex,&sta[i].jbgz,&sta[i].jj,&sta[i].gwjt,&sta[i].gjj);