标题:好急好急呀 又是null pointer assignment 的问题
只看楼主
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 

简单整理一下你的程序
你的程序写的太乱了
看了有点晕

#include "stdio.h"
#include "string.h"
main()
{
int n,m,i,j,k,p,q,s,k1,l,sig,num,r;
char a[200][200],b[200][200],ch;

scanf("%d",&num);//输入几组单词表/
ch=getchar();
ch=getchar();
s=0;

do
{
scanf("%d %d",&m,&n);//单词表的行数列数/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf(" %c",&a[i][j]);//输入单词表中字母/

scanf("%d",&k);//被寻找单词的个数/
k1=0;
do
{
scanf("%s",b[k1]);//输入被寻找的单词/
l=strlen(b[k1]);
for(i=0;i<m;i++)//一个个从首字母进行寻找判断/
for(j=0;j<n;j++)
{
if(a[i][j]==b[0][0])
{
sig=1;//标志变量/
{
if(l<=n-j) //当首字母相同的时候从八个方向进行寻找/
{
for(p=0,q=j;p<l;p++,q++)
if(a[i][q]!=b[k1][p]) //比较每个方向上的各个字符是否与单词相同,不同时跳出循环/
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1) //包含单词时时输出字母表中的对应的与被找单词相同的第一个字母的位置/
{
printf("%d %d\n",i+1,j+1);
goto t; //想跳出循环但是用break跳不出整个,就用了goto/
}
}
{
if(l<=j+1)
{
for(p=0,q=j;p<l;p++,q--)
if(a[i][q]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=i+1)
{
for(p=0,q=i;p<l;p++,q--)
if(a[q][j]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=m-i)
{
for(p=0,q=i;p<l;p++,q++)
if(a[q][j]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=n-j&&l<=m-i)
for(p=0,q=i,r=j;p<l;p++,q++,r++)
{
if(a[q][r]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=i+1&&l<=j+1)
{
for(p=0,r=j,q=i;p<l;p++,r--,q--)
if(a[q][r]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=m-i&&l<=j+1)
for(p=0,r=j,q=i;p<l;p++,r--,q++)
{
if(a[q][r]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
{
if(l<=i+1&&l<=n-j)
for(p=0,r=j,q=i;p<l;p++,r++,q--)
{
if(a[q][r]!=b[k1][p])
{
sig=0;
break;
}
}
else
sig=0;
if(sig==1)
{
printf("%d %d\n",i+1,j+1);
goto t;
}
}
}
}
t: ;
k1++;
}while(k1<k);
s++;
}while(s<num);
}

2007-04-25 12:43
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 

你的程序应该是下标越界问题
以前做过一个类似的程序
你参照一下吧:
/* HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"

char word[7][12]={"dogxbxxxnoon",
"bhellotherec",
"akciuqbrownm",
"xxxgexlahjij",
"xbzoxvuxxxox",
"xlxdzxexxxjx",
"xuxxblxnkgod" };

char find[14][18]={ "hello",
"dog",
"brown",
"join",
"row",
"quick",
"averyverylongword",
"noon",
"zo",
"blue",
"blunt",
"help",
"even",
"blink" };

int putf_x[26][30],putf_y[26][30];
int putf_n[26],outnum[14];

void unite();
void findnum();
void outresult();

main()
{
unite();
findnum();

getch();
}

void unite()
{
int i,j;
int wr;


for(i=0;i<26;i++)
putf_n[i]=0;

for(i=0;i<7;i++)
for(j=0;j<12;j++)
{
wr=word[i][j]-97;

putf_x[wr][putf_n[wr]]=j;
putf_y[wr][putf_n[wr]]=i;
putf_n[wr]++;
}

}

void findnum()
{
int i,j=0;
int f_x,f_y,x,y,l,w;
int wr;
char xj;

for(i=0;i<14;i++)
{
j=0;
wr=find[i][j]-97;
for(l=0;l<putf_n[wr];l++)
{
f_x=putf_x[wr][l];
f_y=putf_y[wr][l];
for(w=0;w<8;w++)
{
j=0;
x=f_x;
y=f_y;

while(find[i][j]!='\0'&&x<12)
{
switch(w)
{
case 0:x++; y--;break;
case 1:x--; y++;break;
case 2:x++; y++;break;
case 3:x--; y--;break;
case 4:y--;break;
case 5:y++;break;
case 6:x++;break;
case 7:x--;break;
default:;
}

if(x<12&&y<7&&x>=0&&y>=0)
{
j++;

if(find[i][j]=='\0') outnum[i]++;

if(word[x][y]!=find[i][j])
{
x=90;
}
}
else
{
x=90;
}
}

}
}
}
for(i=0;i<14;i++)
{
printf("%d\n",outnum[i]);
}
}

void outresult()
{
int i;

for(i=0;i<14;i++)
{
printf("the word %s was found %d time in the grid\n",find[i],outnum[i]);
}
}

2007-04-25 12:49
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
以下是引用cdmalcl在2007-4-25 12:41:18的发言:

服了老K了
竟然在技术区灌水
而且你对的也太差了

文盲


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-04-25 16:50
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 
以下是引用Knocker在2007-4-25 16:50:18的发言:

文盲

缺月挂疏桐,漏断人初静。谁见幽人独往来?飘
缈孤鸿影。 惊起却回头,有恨无人省。拣尽寒
枝不肯栖,寂寞沙洲冷。

放在诗里才有意境

2007-04-25 18:03
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
得分:0 
我最喜欢这首词了
苏轼写的真是太好了
意境凄美 让人心灵受到一种孤冷的洗礼........

程序我设了个标记变量跳出了
不过奇怪的是在tc上能够输出结果
不过换到了我们的gcc编译器上居然没有东西输出来
不知道是什么原因....http://bbs.bc-cn.net/Skins/Default/emot/em13.gif

2007-04-25 22:41
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
得分:0 
谁知道原因呢 我都被这程序折腾好久好久了
呜呜呜
救救我


2007-04-25 23:03
shenqi5150
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-4-17
得分:0 

哥,忘掉这段程序把,如果重写需要半个小时的话,改正你的程序至少需要1个小时。
这位大哥的问题是如何理清自己的思路,而不是程序。

2007-04-26 15:55
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
得分:0 
知道了 你才是大哥呢
程序思路还是很明了的
没什么了
已经出来了


2007-04-26 19:41
zm1573
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-6-19
得分:0 
    呵呵!学习学习...

2007-06-29 16:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-134586-1-1.html




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

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