首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

菜鸟有关问题.帮忙啊

2012-02-15 
初学者问题..帮忙啊!~!#includestdio.h#includestdlib.h#defineinit_list_size100//初始分配的空间#d

初学者问题..帮忙啊!~!
#include   <stdio.h>
#include   <stdlib.h>
#define   init_list_size   100   ;                           //初始分配的空间
#define   listcrinement   10;

typedef   struct  
{
int   *elem   ;                                                           //存储基地址
int   length;                                                           //元素的个数
int   listsize   ;                                                     //初始化分配的空间

}   sqlist   ;

int   initlist(sqlist   *l)
{
l-> elem=(int   *)malloc(init_list_size*sizeof(int));  
if(l-> elem==NULL)
return   0;
l-> length=0;
l-> listsize=init_list_size;
return   1;

}
int   listinsert(sqlist   *l,int   i,int   e)
{
int   j;
if(l-> length> =l-> listsize)
{
l-> elem=(int   *)realloc(l-> elem,(listsize+listcrinement)*sizeof(int));
listsize+=listcrinement;
}
for(j=l-> length;j> =i;j--)
{
l-> elem[j]=l-> elem[j-1];

}
l-> elem[i]=e;
l-> length++;
return   1;


}

main()
{
sqlist   a;
int   j,e,k;
initlist(&a);
for(j=0;j <10;j++)
{
scanf( "%d ",a.elem+j);
a.length++;
}
scanf( "%d ",&e);
listinsert(&a,4,e);
for(k=0;k <=a.length-1;k++)
printf( "%5d ",a.elem[k]);
return   1;


}


    有错误..但我不知道为什么错了。..谁能帮个忙...谢谢了//

[解决办法]
#define init_list_size 100 //初始分配的空间
#define listcrinement 10
=============================
#define init_list_size 100 ; //初始分配的空间
#define listcrinement 10;
[解决办法]
有许多程序员不知道在宏定义时是否要加分号,有时,他们以为宏是一条语句,应该要加分号,这就错了。当你知道了宏的原理,你会赞同我为会么不要为宏定义加分号的。看一个例子:

#define MAXNUM 1024;

这是一个有分号的宏,如果我们这样使用:

half = MAXNUM/2;

if ( num < MAXNUM )

等等,都会造成程序的编译错误,因为,当宏展开后,分号也被展进去了,所以造成了程序的错误。
#include <stdio.h>
#include <stdlib.h>
#define init_list_size 100 //初始分配的空间
#define listcrinement 10

typedef struct
{
int *elem ; //存储基地址
int length; //元素的个数
int listsize ; //初始化分配的空间

} sqlist ;

int initlist(sqlist *l)
{
l-> elem=(int *)malloc(init_list_size*sizeof(int));
if(l-> elem==NULL)
return 0;
l-> length=0;
l-> listsize=init_list_size;
return 1;

}
int listinsert(sqlist *l,int i,int e)
{
int j;
if(l-> length> =l-> listsize)
{
l-> elem=(int *)realloc(l-> elem,(l-> listsize+listcrinement)*sizeof(int));


l-> listsize+=listcrinement;
}
for(j=l-> length;j> =i;j--)
{
l-> elem[j]=l-> elem[j-1];

}
l-> elem[i]=e;
l-> length++;
return 1;


}

int main()
{
sqlist a;
int j,e,k;
initlist(&a);
for(j=0;j <10;j++)
{
scanf( "%d ",a.elem+j);
a.length++;
}
scanf( "%d ",&e);
listinsert(&a,4,e);
for(k=0;k <=a.length-1;k++)
printf( "%5d ",a.elem[k]);
return 1;


}
[解决办法]
两个错误
第一
define语句后不能用分号结尾
第二
listsize+=listcrinement;
应该是
l-> listsize+=listcrinement;

热点排行
Bad Request.