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

给位帮个忙吧!看看c代码好吗

2012-11-09 
给位大虾帮个忙吧!看看c代码好吗?执行下面程序会出现:“0x004011c6指令引用的0xcccccccc内存该内存不能为re

给位大虾帮个忙吧!看看c代码好吗?
执行下面程序会出现:“0x004011c6指令引用的0xcccccccc内存该内存不能为read”。这句话,是什么意思啊?程序检查没错哦!

程序如下:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>/*包含 getch()*/
#include<stdlib.h>
struct linklist 
{char *name;
int day[7];
 struct linklist *next; 
};
struct linklist *creat(int m)/*建表函数*/ 

{char*n[7]={"赵","钱","孙","李","周","吴","陈"};
int d[7]={0};
 int i; 
 struct linklist *head, *q, *p; 

 head=(struct linklist *)malloc(sizeof(struct linklist)); 
 q = head;//头指针赋给指针q
 for(i=0;i<m;i++) 
 {
  p=(struct linklist *)malloc(sizeof(struct linklist));//创建新结点 
  p->name=n[i];p->day[i]=0;
  q->next=p; 
  q=p; 
 } 
 p->next=NULL; 
 return head; 
}
void myinput(struct linklist *q1)
{struct linklist*p1;
int i,r[8]={0};
printf("=======================排班系统=======================\n");
for(i=0;i<7;i++)
{q1->next=p1;
q1=p1;
printf("%s-----请输入你想要的休息日(1-7):",p1->name);
i=0;
do
{
scanf("%d",&p1->day[i]);
if(p1->day[i]>0) r[p1->day[i]]++; /*"r[p->day[i]]++"用来统计一个星期的每一天,有多少保安选择该天作为休息日*/
i++;
}while(p1->day[i-1]>=0&&i<7); /*当想要的休息日数小于七天时,以负数结束输入,如当想要的休息日是:星期一,星期三,星期日时,输入:1 3 7 -1<出车>*/
printf("------------------------------------------------------\n");
}
if(r[1]==0||r[2]==0||r[3]==0||r[4]==0||r[5]==0||r[6]==0||r[7]==0) /*若一星期内存在某一天或以上完全没人选做休息日,则重新输入*/
{
printf("输入的数据不能满足每天都有人值班!请重新输入!\n");
printf("按任意键继续...");
getch();
system("cls");
   
}
}

void myfuny(struct linklist *t)
{
  char xingqi[8][7]={"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; 
int y[7],j1=0,j2=0,j3=0,j4=0,j5=0,j6=0,j7=0,n=1,b; /*定义数组y[7],y[1]储存分配给第一个保安的休息日,y[2]储存分配给第二个保安的休息日……*/
struct linklist *p2,*s[7];
t->next=p2;
t=p2;
for(b=0;b<7;b++)
{s[b]=p2;
p2->next=p2;
}
for(j1=0;s[0]->day[j1]>0&&j1<7;j1++) /*当t[0].day[j1]为负数或j1>=7时结束循环,下同*/
{
y[0]=s[0]->day[j1];
for(j2=0;s[1]->day[j2]>0&&j2<7;j2++)
{
y[1]=s[1]->day[j2]; 
for(j3=0;s[2]->day[j3]>0&&j3<7;j3++)
{
y[2]=s[2]->day[j3];
for(j4=0;s[3]->day[j4]>0&&j4<7;j4++)
{
y[3]=s[3]->day[j4];
for(j5=0;s[4]->day[j5]>0&&j5<7;j5++)
{
  y[4]=s[4]->day[j5];
for(j6=0;s[5]->day[j6]>0&&j6<7;j6++)
{
y[5]=s[5]->day[j6];
for(j7=0;s[6]->day[j7]>0&&j7<7;j7++)
{
y[6]=s[6]->day[j7];
if(y[0]!=y[1]&&y[0]!=y[2]&&y[0]!=y[3]&&y[0]!=y[4]&&y[0]!=y[5]&&y[0]!=y[6]&&y[1]!=y[2]&&y[1]!=y[3]&&y[1]!=y[4]&&y[1]!=y[5]&&y[1]!=y[6]&&y[2]!=y[3]&&y[2]!=y[4]&&y[2]!=y[5]&&y[2]!=y[6]&&y[3]!=y[4]&&y[3]!=y[5]&&y[3]!=y[6]&&y[4]!=y[5]&&y[4]!=y[6]&&y[5]!=y[6])
{
  printf("Solution: %d\n赵 钱 孙 李 周 吴 陈\n",n);


printf("=======================================================================\n");
printf("%s %s %s %s %s %s %s\n\n\n",xingqi[y[0]],xingqi[y[1]],xingqi[y[2]],xingqi[y[3]],xingqi[y[4]],xingqi[y[5]],xingqi[y[6]]);
n++;
} /*如果分配给这7名保安的休息日互不相等,则该分配方式满足要求,并输出在屏幕上*/  
  }
  }  
  }  
}  
  }
  }
  }
}
void main() 
{ struct linklist *a;
a=creat(7); 
myinput(a);
system("cls");  
myfuny(a);
getch();  
}


[解决办法]
指针p1 p2 没初始化~~ 野指针~~ 很危险~~

热点排行