| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1095 人关注过本帖
标题:求调试这个正常运行。 语法没错,EXE停止运行
只看楼主 加入收藏
去12345632
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
求调试这个正常运行。 语法没错,EXE停止运行
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 3
int m=0,n;
void input();
void search1();
void sort();
void load();
void f();
void save();
void search2();
void search3();
struct worker
{
        char number[12];/*工号*/
        char name[30];/*名字*/
    int counts;/*数量*/
    int grade;/*名次*/
}w[10];
/*******************
定义***************/
void main()
{
    struct worker ;
    int select;
    while (1)
    {
    printf("\n职工工作量统计系统\n");
    printf("1.职工基本信息输入\n");
    printf("2.按职工工号查询\n");
    printf("3.按工作量排序\n");
    printf("4.按职工工号进行信息删除\n");
    printf("5.职工工作量的累加\n");
    printf("6.职工信息输出\n");
    printf("7.按职工姓名查询\n");
    printf("8.按职工工作量查询\n");
    printf("0.结束进程\n");
    printf("\n请输入选择的程序:\n");
    scanf("%d",&select);
     switch(select)
     {
case 1: input();break;
case 2: search1();break;
case 3: sort();break;
case 4: load();break;
case 5: f();break;
case 6: save();break;
case 7: search2();break;
case 8: search3();break;
}
    }
}

void input(    struct worker w[10])
{
    int i,n;
     printf("请输入要输入信息的数量: ");
     scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
printf("请输入工号: ");
scanf("%s",&w[i].number);
printf("请输入名字: ");
scanf("%s",&w[i].name);
printf("请输入工作量: ");
scanf("%d",&w[i].counts);
printf("保存成功!\n");
    }
}
void search1(struct worker w[N])
{
int i;
char a[20];
printf("请输入工号: ");
scanf("%s",&a);
for(i=0;i<N;i++)
if(strcmp(a,w[i].number)==0)
{
    printf("%s,%s,%d\n",w[i].number,w[i].name,w[i].counts);
break;
}
if(i>=N)
printf("not find\n");
}
void sort(struct worker w[10])
{
int i=0,j=0,k=0;
    struct worker s;
    for(i=0;i<N;i++)
    {      
        k=i;
        for(j=i+1;j<=N;j++)
        {
            if(w[j].counts>w[k].counts)
                k=j;
        /*  交换 w[i] and w[k] */
        }
   s = w[k];
        w[k] =w[i];
    w[i] = s;
    }
    if(N>0)
        w[0].grade =1;
    for(i=0;i<N;i++)
    {    w[i].grade=i+1;      
    printf("%d.%s,%s,%d\n",w[i].grade,w[i].number,w[i].name,w[i].counts);}

}
void load(struct worker w[10])
{
    char choice;
    int i,t;
        char a[20];
    printf("请输入要删除的工号:\n");
    scanf("%s",&a);
        for(i=0;i<N;i++)
        {
if(strcmp(a,w[i].number)==0)
{
    t=i;
    printf("是否要删除该信息?(Y/N)");
        scanf("%s",&choice);
            if(choice=='Y')
            {
    for(i=t;i<=N;i++)
{   
        w[i]=w[i+1];
}
    printf("删除成功!\n");
        }
    else
        printf("删除失败!");
}
        }
}
void f(struct worker w[10])
{
    int i,sum;
    char a[20];
    printf("请输入要累加工作量的工号: ");
        scanf("%s",a);
        for(i=0;i<N;i++)
if(strcmp(a,w[i].number)==0)
{
    printf("请输入要累加的工作量: ");
        scanf("%d",&sum);
   w[i].counts=sum+w[i].counts;
}
}
void save(struct worker w[10])
{
    int i;
    for(i=1;i<=N;i++)
    {
        printf("%s,%s,%d\n",w[i].number,w[i].name,w[i].counts);
    }
    printf("\n");
}
void search2(struct worker w[N])
{
int i;
char a[20];
printf("请输入姓名: ");
scanf("%s",&a);
for(i=0;i<N;i++)
if(strcmp(a,w[i].name)==0)
{
    printf("%s,%s,%d\n",w[i].number,w[i].name,w[i].counts);
break;
}
if(i>=N)
printf("not find\n");
}
void search3(struct worker w[N])
{
int i;
int a;
printf("请输入工作量: ");
scanf("%d",&a);
for(i=0;i<N;i++)
{
if(a==w[i].counts)
{
    printf("%s,%s,%d\n",w[i].number,w[i].name,w[i].counts);
}
if(i>=N)
printf("not find\n");
}
}
搜索更多相关主题的帖子: include 热卖 
2016-07-13 10:02
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
全局变量和形参冲突了。我只改了一个函数,其他函数你再看看

程序代码:
void input()
{
    int i, n;
    printf("请输入要输入信息的数量: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        printf("请输入工号: ");
        scanf("%s", w[i].number);        //这里也有问题
        printf("请输入名字: ");
        scanf("%s", w[i].name);
        printf("请输入工作量: ");
        scanf("%d", &w[i].counts);
        printf("保存成功!\n");
    }
}
2016-07-13 10:08
去12345632
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 2楼 grmmylbs
我去都去掉struct结构体以后 运行第二个函数是 no find
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-07-13 10:19
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
可以的啊,再把你修改后的代码贴一下。
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-07-13 10:23
去12345632
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 4楼 grmmylbs
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 3
int m=0,n;
void input();
void search1();
void sort();
void load();
void f();
void save();
void search2();
void search3();
struct worker
{
        char number[12];/*工号*/
        char name[30];/*名字*/
    int counts;/*数量*/
    int grade;/*名次*/
}w[10];
/*******************
定义***************/
void main()
{
    struct worker ;
    int select;
    while (1)
    {
    printf("\n职工工作量统计系统\n");
    printf("1.职工基本信息输入\n");
    printf("2.按职工工号查询\n");
    printf("3.按工作量排序\n");
    printf("4.按职工工号进行信息删除\n");
    printf("5.职工工作量的累加\n");
    printf("6.职工信息输出\n");
    printf("7.按职工姓名查询\n");
    printf("8.按职工工作量查询\n");
    printf("0.结束进程\n");
    printf("\n请输入选择的程序:\n");
    scanf("%d",&select);
     switch(select)
     {
case 1: input();break;
case 2: search1();break;
case 3: sort();break;
case 4: load();break;
case 5: f();break;
case 6: save();break;
case 7: search2();break;
case 8: search3();break;
}
    }
}

void input()
{
    int i,n;
     printf("请输入要输入信息的数量: ");
     scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
printf("请输入工号: ");
scanf("%s",&w[i].number);
printf("请输入名字: ");
scanf("%s",&w[i].name);
printf("请输入工作量: ");
scanf("%d",&w[i].counts);
printf("保存成功!\n");
    }
}
void search1()
{
int i;
char a[20];
printf("请输入工号: ");
scanf("%s",&a);
for(i=0;i<N;i++)
if(strcmp(a,w[i].number)==0)
{
    printf("%s,%s,%d\n",w[i].number,w[i].name,w[i].counts);
break;
}
if(i>=N)
printf("not find\n");
}
void sort()
{
int i=0,j=0,k=0;
    struct worker s;
    for(i=0;i<N;i++)
    {      
        k=i;
        for(j=i+1;j<=N;j++)
        {
            if(w[j].counts>w[k].counts)
                k=j;
        /*  交换 w[i] and w[k] */
        }
   s = w[k];
        w[k] =w[i];
    w[i] = s;
    }
    if(N>0)
        w[0].grade =1;
    for(i=0;i<N;i++)
    {    w[i].grade=i+1;      
    printf("%d.%s,%s,%d\n",w[i].grade,w[i].number,w[i].name,w[i].counts);}

}
void load()
{
    char choice;
    int i,t;
        char a[20];
    printf("请输入要删除的工号:\n");
    scanf("%s",&a);
        for(i=0;i<N;i++)
        {
if(strcmp(a,w[i].number)==0)
{
    t=i;
    printf("是否要删除该信息?(Y/N)");
        scanf("%s",&choice);
            if(choice=='Y')
            {
    for(i=t;i<=N;i++)
{   
        w[i]=w[i+1];
}
    printf("删除成功!\n");
        }
    else
        printf("删除失败!");
}
        }
}
能不能把你改完的发一下我瞅瞅

[此贴子已经被作者于2016-7-13 10:28编辑过]

2016-07-13 10:26
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
仔细看下二楼的帖子再试一次
2016-07-13 10:31
去12345632
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 6楼 grmmylbs
谢谢  
2016-07-13 10:36
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
input里的for循环最好写成for (i = 0; i < n; i++),否则w[0]里会一直没数据。
2016-07-13 10:40
去12345632
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 8楼 grmmylbs
哦,从0开始。。。
2016-07-13 10:51
快速回复:求调试这个正常运行。 语法没错,EXE停止运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054443 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved