| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:程序怎么老是运行自动终止,求解
只看楼主 加入收藏
s18270722463
Rank: 2
等 级:论坛游民
帖 子:53
专家分:28
注 册:2012-6-11
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:2 
程序怎么老是运行自动终止,求解
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1  
#define OVERFLOW -1  
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10   
typedef struct Stu  
{
char name[20];//姓名
char stuno[10];//学号
int age;//年龄
int score1;//语文成绩
int score2;//数学成绩
int score3;//英语成绩
}ElemType;
typedef struct LIST  
{  
ElemType *elem;
int length;//顺序表长度
int listsize;//链表最大值
}List;
int init(List *L)//构造一个空的线性表L
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}
int ListLength(List *L)
{
return L->length;  
}
int Insert_SqList(List *La,int i,ElemType x)
{
ElemType *p,*q,*newbase;
if(i<1||i>La->length+1)return ERROR;  
if(La->length>=La->listsize)
{
newbase=(ElemType*)realloc(La->elem,(La->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
La->elem=newbase;
La->listsize+=LISTINCREMENT;
}
q=&(La->elem[i-1]);
for(p=&(La->elem[La->length-1]);p>=q;--p)
*(p+1)=*p;
*q=x;
++La->length;
return OK;  
}
void printList(List *L)
{
int i;
for(i=0;i<L->length;i++)  
{
printf("第%d个学生的信息:\n",i+1);
printf("%s,%s,%d,%d,%d,%d",L->elem[i].name,L->elem[i].stuno,L->elem[i].age,L->elem[i].score1,L->elem[i].score2,L->elem[i].score3);
printf("\n");  
}
}
int Delete_SqList(List *La,int i,ElemType *x)
{
ElemType *p,*q;
if(i<1||i>La->length)
return ERROR;
p=&(La->elem[i-1]);
x=p;
q=La->elem+La->length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--La->length;
return OK;
}
void input_message(List *list)
{int i,n;
printf("请输入要建立学生信息的长度:\n",n);
scanf("%d",&n);
for(i=1;i<=n;i++)  
{
printf("请输入第%d个学生的信息\n",i);
printf("输入第%d个学生的姓名\n",i);
scanf("%s",list->elem[i-1].name);  
printf("请输入第%d个学生的学号:\n",i);
scanf("%s",list->elem[i-1].stuno);  
printf("请输入第%d个学生的年龄:\n",i);
scanf("%d",&list->elem[i-1].age);  
printf("请输入第%d个学生的语文成绩:\n",i);
scanf("%d",&list->elem[i-1].score1);  
printf("请输入第%d个学生的数学成绩:\n",i);
scanf("%d",&list->elem[i-1].score2);  
printf("请输入第%d个学生的英语成绩:\n",i);
scanf("%d",&list->elem[i-1].score3);  
(list->length)++;  
}}
void main()  
{   
List list;  
ElemType stuck;
input_message(&list);
init(&list);  
printList(&list);
}
这个怎么运行不了,求改,谢谢。
搜索更多相关主题的帖子: 英语成绩 include 线性表 
2013-05-15 14:30
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:20 
你的数组没开辟大小,所以会失败,加上list->elem=(ElemType *)malloc(sizeof(ElemType));
即可:
 void input_message(List *list)
 {int i,n;
list->elem=(ElemType *)malloc(sizeof(ElemType));
 printf("请输入要建立学生信息的长度:\n",n);
 scanf("%d",&n);
 for(i=1;i<=n;i++)  
 {
 printf("请输入第%d个学生的信息\n",i);
 printf("输入第%d个学生的姓名\n",i);
 scanf("%s",list->elem[i-1].name);  
 printf("请输入第%d个学生的学号:\n",i);
 scanf("%s",list->elem[i-1].stuno);  
 printf("请输入第%d个学生的年龄:\n",i);
 scanf("%d",&list->elem[i-1].age);  
 printf("请输入第%d个学生的语文成绩:\n",i);
 scanf("%d",&list->elem[i-1].score1);  
 printf("请输入第%d个学生的数学成绩:\n",i);
 scanf("%d",&list->elem[i-1].score2);  
 printf("请输入第%d个学生的英语成绩:\n",i);
 scanf("%d",&list->elem[i-1].score3);  
 (list->length)++;  
 }}

Maybe
2013-05-15 18:34
s18270722463
Rank: 2
等 级:论坛游民
帖 子:53
专家分:28
注 册:2012-6-11
收藏
得分:0 
主函数中实现各部分职能的函数是不是出问题了,怎么显示不出,就像打印函数,怎么打印不出来
2013-05-15 21:51
快速回复:程序怎么老是运行自动终止,求解
数据加载中...
 
   



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

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