运行c++程序时出现.exe已停止工作

这是我的源代码,请求高手指点
//建立动态单链表 用cin,cout程序没法运行
#include<stdlib.h>//利用malloc函数
#include<stdio.h>
#define len sizeof(struct student)
struct student
{
float score;
int num;
struct student *next;
};
void main ()
{
void print(struct student *head);
struct student *creat(void);//声明返回指针值的函数, 说明creat()函数是一指针型函数,即函数返回值是一指针

struct student *pt,*head;
pt=creat();
print(head);
// printf("\nnum:%ld\nscore:%5.lf\n",pt->num,pt->score);//输出第一个节点的成员值,有返回值决定
}
int n;//节点个数
struct student *creat(void)
{
struct student *p1, *p2,*head;
n=0;

p1=p2=(struct student*)malloc(len);//(struct student *)使malloc返回的指针是struct student类型的,
//*不能少,否则返回的就不是指针了。系统能够实现隐式的转换所以,
//可写成p1=p2=malloc(len)
scanf("%ld,%f",&p1->num,&p1->score );//输入第一个学生的信息
head=NULL;
while(p2->num!=0)//最后节点信息输入完毕后输入0,0以表示信息输入完毕
{
n=n+1;
if (n==1) head=p1;
else p2->next =p1;
p2=p1;

p1=(struct student *)malloc(len);
scanf("%ld,%f",&p1->num,&p1->score );//输入其他学生的信息
}
p2->next =NULL;
return head ;//返回头结点,也可返回其他节点head->next即返回第二节点
}
void print(struct student *head)
{
struct student *p=NULL;
printf("%nNow,these%d records are:\n",n);
p=head;
if (head!=NULL)
do
{
printf("%ld %5.lf\n",p->num,p->score);
p=p->next;
}
while(p!=NULL);
}

发现你程序中最致命的错误有2个地方:
1.main函数中
---------------------------
struct student *pt,*head;
pt=creat();
print(head);
-------------------------
你creat函数返回的头指针应该赋值给head吧,,然后才能print(head)

2.print函数中
--------------------------
printf("%nNow,these%d records are:\n",n);
--------------------------
%n 导致了程序的运行崩溃,,你应该是想写\n吧。。。下次认真点。。。

还有几个可以改进的地方,比如creat函数中完全不需要定义n来判断是否是第一个结点,可以在第一个结点申请后,直接赋值head = p1 = p2。还有你的判断条件while(p2->num!=0)应该改为p1->num!=0,你认真看看是不是?

好的兴趣是成功的一半。。加油。。。

当程序出现问题时,可以用VC的断点Debug功能来观察变量的值,很好用而且是必须要学会用的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-07-28
某个软件卸载的时候没卸载干净导致的,或者是驱动没卸载干净。解决办法:
开始-运行-MSCONFIG-在启动项中找到NTVDM.EXE并将其前面的勾勾除,重启之后再弹出的对话框中把不在提示的哪个框勾上,确定就好了本回答被网友采纳
第2个回答  2011-04-01
f("%f",&f);

少了一个 '&'
另外,虚机团上产品团购,超级便宜

DEV C++里面一编译就出现g++.exe已经停止工作,怎么办?
EV C++里面一编译就出现g++.exe已经停止工作的解决方法如下:第一步也是最重要的一步,当然是打开Dev c++ 第二步也是必不可少的,编写一个c代码。我这里就以一个求阶乘的代码来演示。其实想要关闭Dev后还能运行代码很简单,只需要在主函数最后一行加上一个getch();命令就ok啦 这就是关闭Dev后运行...

c++在执行文件的时候提示.exe已停止工作(这个程序有时候是可以执行的...
} 编译时没有错误只说明你的程序语法正确,未必逻辑正确,还可能发生运行时错误。运行时错误是一个错误的类型,在程序的执行发生。运行时错误表明该方案的设计者或有错误的预期的问题,但改变不了。如果该方案未能要求在执行过程中的有关职能,将有运行时错误弹出您的计算机上。

在用c++时,出现".exe"意外停止情况,是什么情况,请高手教我!_百度知 ...
一般出现exe停止工作,是因为非法访问内存导致

运行c++程序时出现.exe已停止工作
n 导致了程序的运行崩溃,,你应该是想写\\n吧。。。下次认真点。。。还有几个可以改进的地方,比如creat函数中完全不需要定义n来判断是否是第一个结点,可以在第一个结点申请后,直接赋值head = p1 = p2。还有你的判断条件while(p2->num!=0)应该改为p1->num!=0,你认真看看是不是?好的兴趣...

c++新手问题,为什么我在运行一个程序的时候,电脑会显示该程序已停止工...
1.通常的原因是,你试用了系统未分配给你的内存,例如:int * a;printf(“%d\\n”, *a);出现你说的那种情况,你虽定义了a变量但是a是个指针变量所以*a是a变量内存放地址的内容,但是你并未对编译器声明对该内存的使用所以系统会把它当作类似于黑客的程序将其中止;2.这种情况通常都是因为内存...

为什么C++调试每个程序都会出现g++.exe停止工作
有的时候是内存不足,如果你是WIN7系统并且用的是VC++6.0,也可能是兼容性问题。

C++编译运行时显示“以停止工作”是什么意思啊
这个可能是代码里存在严重错误,导致内存泄漏时发生的。请你重点检查所有的数组操作、指针操作和内存申请释放操作。这些地方是最容易发生这类情况的。

visual c++6.0打开源文件时说已停止工作,如何解决
1.报错原因 出现这个错误是因为Microsoft Visual C++ 6.0版本较老,和系统安装的Microsoft Office有所不兼容导致的。2.重点注意事项 解决此问题必须先卸载电脑已经安装的Microsoft Office(包括WPS),然后安装Microsoft Visual C++ 6.0,之后按照以下步骤操作,最后安装微软办公软件就可以兼容了!解决方法 步...

C++ 没有语法错误但是不能运行exe文件,显示停止工作(由于太长只写了mai...
1、C++编写程序,并不是说,能通过编译就一定能正常运行。2、不能正常运行的原因多种多样,碰得最多的就是指针指向的地址出错,或数据越界(实际上也是指针问题),或找不到相应的资源(比如找不到需要读取的文件)等等。3、最常规的调试方法无外乎两种,第一种是传统的使用编译环境进行逐步跟踪,设定...

为什么编译正确的c++程序在运行时会停止工作
编译只是保证没有语法错误,但是不能保证你的程序的算法没有错误,如果你的程序中有比较严重的Bug,如果说访问了系统保护的内存,出于保护,windows会中止你的程序,或是抛出一个异常,如果异常没有被捕获并加以处理,程序也会中止,当然,这时你也有机会用调试工具去debug。这种运行期的错误是需要程序员去...

相似回答