| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1025 人关注过本帖
标题:[求助] C语言,为什么一运行程序就自动关闭
只看楼主 加入收藏
mkowenhuang
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-18
收藏
 问题点数:0 回复次数:6 
[求助] C语言,为什么一运行程序就自动关闭

我是编的解决约瑟夫问题的 程序,现在要上课去了 ,没时间详细注释,源程序如下:

#include <stdio.h>
#include <malloc.h>
#define N 10
#define S 3
#define M 4
typedef struct node
{
int data;
struct node *next;
}round;

round *h;

round *creat()
{
round *p,*t;
int i;
h=(round*)malloc(sizeof(round));
h->next=NULL;
t=h;
for(i=1;i<=N;i++)
{
p=(round*)malloc(sizeof(round));
p->data=i;
p->next=NULL;
t->next=p;
t=p;
}
p->next=h->next;
p=h->next;
for(i=0;i<N;i++)
{
printf(" %d",p->data);
p=p->next;
}
printf("\n");
return(h);
}
round *new()
{
round *p,*q;
int i,n=0,a[N];
p=(round*)malloc(sizeof(round));
p->next=NULL;
p=h->next;
for(i=1;i<S;i++) p=p->next;
while(h->next!=NULL)
{
q=(round*)malloc(sizeof(round));
q->next=NULL;
for(i=1;i<M-1;i++) p=p->next;
q=p->next;
a[n]=q->data;
n++;
p->next=q->next;
free(q);
}
for(i=0;i<N;i++)
printf("%d",a[i]);
printf("\n");
}
void main()
{
creat();
new();
}

编译没错,但是 一运行就自动关闭C程序,不知道是 什么原因!
谢谢指点,我等会儿在详细注释,请大家先帮忙找找原因!!!
谢谢

搜索更多相关主题的帖子: C语言 自动 运行 
2007-03-22 19:09
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

在结尾加getch();


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-22 19:16
mkowenhuang
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-18
收藏
得分:0 
我按照你说的做了,在main中加了个getchar(),但是问题又来了,一运行出现一下错误:
TC
NTVDM CPU 遇到无效指令;
CS:6426 IP:bbe8 OP:ff ff 72 08 00 选择“关闭”终止应用程序。
关闭(c) 忽略(I)
而且只能关闭!

不知道是我的程序哪里有问题,与计算机有冲突!
哪位遇到过这种情况,请指教啊……
2007-03-22 19:47
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
我怀疑是你的结构体定义的问题,主函数里的两个函数注释掉1个可以运行,同时运行就出现你说的问题
有可能是堆栈溢出!

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-22 21:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

重新写了个,看看可以不.

/* 设有n个人围坐在圆桌旁,现从第s各人开始报数,
数到第m个人出列,然后从出列的下一个人重新开始报数,
数到第m个人又出列……如此重复直到所有人都出列。
例如当n=8,m=4,s=1,得到的 新序列为:48521376 */
#include <stdio.h>
#include <malloc.h>
#define N 10 /* 定义N个人 */
#define S 3 /* 从第S各人开始报数 */
#define M 4 /* 数到第M个人出列 */
typedef struct node
{
int data;
struct node *next;
}round;

round *creat() /* 初始化链表 */
{
round *p,*t,*head;
int i;
head=(round*)malloc(sizeof(round));
head->next=NULL;
t=head;
for(i=1;i<=N;i++) /* 从表头向表尾建立单链表,也就是从1-N*/
{
p=(round*)malloc(sizeof(round));
p->data=i;
p->next=NULL;
t->next=p;
t=p;
}
p->next=head;
return(head);
}
void new_round(round *head) /* 从新排列 */
{
round *pre=head,*p=head->next;
int i=1,j=1;
while(i<N)
{
while(p!=head)
{
if(j==M)
{
pre->next=p->next;
p->next=NULL;
free(p);
p=pre->next;
j=1;
i++;
}
else
{
pre=p;
p=p->next;
j++;
}
}
pre=head;
p=head->next;
}
}

void Print(round *head)
{
round *p=head->next;
while(p!=head)
{
printf("%3d-->",p->data);
p=p->next;
}
printf("\n\n\n");
}

int main()
{
node *head;
head=creat();
Print(head);
new_round(head);
Print(head);
return 0;
}


倚天照海花无数,流水高山心自知。
2007-03-22 22:45
mkowenhuang
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-18
收藏
得分:0 

谢谢你的回答
经别人指点,我知道是我定义了个new函数,这个函数系统已经有了,所以出错了
不过现在改了还是有问题!!!

2007-03-22 22:46
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
我刚才在试你的程序的时候已经把new改为别的名称了,的确还是不行

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-22 23:09
快速回复:[求助] C语言,为什么一运行程序就自动关闭
数据加载中...
 
   



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

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