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

请各位指教:为什么L->r[i].key访问不到key

2012-03-19 
请各位大虾指教:为什么L-r[i].key访问不到key?#include stdio.h#include stdio.h#include string.h

请各位大虾指教:为什么L->r[i].key访问不到key?
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

#define MAXSIZE 20
typedef int ElemType;
typedef int InfoType;
#define EQ(a,b) ((a) == (b))
#define LT(a,b) ((a) < (b))
#define LQ(a,b) ((a) <= (b))

typedef struct
{
ElemType key;
InfoType otherinfo;
}ReadType;

typedef struct
{
ReadType r[MAXSIZE+1];
int length;
}SortList;

void InitSortList(SortList *L);
void PrintSortList(SortList L);
int InsertSort(SortList *L);

void InitSortList(SortList *L)
{
int i = 0;

srand((unsigned)time(NULL));
for(i = 1;i <= 20; i++);
{
L->r[i].key = rand()%100;
printf("~~~~~~~~~~%d\n", L->r[i].key);
}

L->length = 20;
return;
}

void PrintSortList(SortList L)
{
int i = 0;

for(i = 1;i <= 20; i++);
{
printf("-----%d\n",L.r[i].key);
}
return;
}

int InsertSort(SortList *L)
{
int i = 0;
int j = 0;

if(L == NULL)
{
perror("L is NULL!\n");
return -1;
}

for(i = 2; i<=L->length; i++)
{
if(LT(L->r[i].key, L->r[i-1].key))
{
L->r[0] = L->r[i];
L->r[i] = L->r[i-1];
for(j=i-2; LT(L->r[0].key, L->r[j].key); j--)
{
L->r[j+1] = L->r[j];
}
L->r[j+1] = L->r[0];
}
}
return 0;
}

int main(int argc, char *argv[])
{
//排序操作
SortList SL;
InitSortList(&SL);
PrintSortList(SL);
InsertSort(&SL);
PrintSortList(SL);
return 0;
}


[解决办法]

C/C++ code
    for(i = 1;i <= 20; i++);    {        L->r[i].key = rand()%100;        printf("~~~~~~~~~~%d\n", L->r[i].key);    }
[解决办法]
void InitSortList(SortList *L)
{
int i = 0;

srand((unsigned)time(NULL));
for(i = 1;i <= 20; i++);这儿
{
L->r[i].key = rand()%100;
printf("~~~~~~~~~~%d\n", L->r[i].key);
}

L->length = 20;
return;
}
[解决办法]
C/C++ code
void PrintSortList(SortList L){    int i = 0;    for(i = 1;i <= 20; i++);    {        printf("-----%d\n",L.r[i].key);    }    return;}
[解决办法]
学会单步调试,这种多了个分号的问题立马就能发现
[解决办法]
你完全可以在for循环语句中加个断点,调试一下,一看只进去一次,就有问题。。。
[解决办法]
探讨

C/C++ code
for(i = 1;i <= 20; i++);
{
L->r[i].key = rand()%100;
printf("~~~~~~~~~~%d\n", L->r[i].key);
}

你这个for语句后边多加了个";"分号,去掉就好了

[解决办法]
细节决定成败。
[解决办法]
你完全可以在for循环语句中加个断点,调试一下,一看只进去一次,就有问题。

热点排行