c语言二维字符数组寻找字符串
一个二维数组中寻找字符串出现的次数,例如Mtauy
Eedio
Adada
Gbdac
Crawm 其中ada出现了三次,
从左往右,从右往左,从上往下,从下往上读
可以部分重叠,但不可以全部重叠
如何编程
2015-02-08 16:00
程序代码:#include <stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,count=0,k,d;
char a[20][20],b[20];
printf("请输入维数\n");
scanf("%d",&n);
printf("请输入n*n个字符\n");
for(i=0;i<n;i++)
//for(j=0;j<n;j++)
scanf("%s",a[i]);
printf("输入要找的字符串\n");
scanf("%s",b);
m=strlen(b);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i][j]==b[0])
{
if(n-i-1>=m) //从左到右
{
for(k=i;k<=i+m;k++)
{
if(a[k][j]==b[k])
d++;
}
if(d==m)
count++;
d=0;
}
if(i+1>=m) //从右到左
{
for(k=i;k>=i-m;k--)
{
if(a[k][j]==b[m-(i-k)])
d++;
}
if(d==m)
count++;
d=0;
}
if(n-j-1>=m) //从上到下
{
for(k=j;k<=j+m;k++)
{
if(a[i][k]==b[k])
d++;
}
if(d==m)
count++;
d=0;
}
if(j+1>=m) //从下到上
{
for(k=j;k>=j-m;k--)
{
if(a[i][k]==b[m-(j-k)])
d++;
}
if(d==m)
count++;
d=0;
}
}
}
printf("%d",count);
return 0;
}

2015-02-08 17:40
程序代码:#include <stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,count=0,k,d;
char a[20][20],b[20];
printf("请输入维数\n");
scanf("%d",&n);
printf("请输入n*n个字符\n");
for(i=0;i<n;i++)
//for(j=0;j<n;j++)
scanf("%s",a[i]);
printf("输入要找的字符串\n");
scanf("%s",b);
m=strlen(b);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i][j]==b[0])
{
if(n-i-1>=m) //从左到右
{
for(k=i;k<=i+m;k++)
{
if(a[k][j]==b[k])
d++;
}
if(d==m)
count++;
d=0;
}
if(i+1>=m) //从右到左
{
for(k=i;k>=i-m;k--)
{
if(a[k][j]==b[m-(i-k)])
d++;
}
if(d==m)
count++;
d=0;
}
if(n-j-1>=m) //从上到下
{
for(k=j;k<=j+m;k++)
{
if(a[i][k]==b[k])
d++;
}
if(d==m)
count++;
d=0;
}
if(j+1>=m) //从下到上
{
for(k=j;k>=j-m;k--)
{
if(a[i][k]==b[m-(j-k)])
d++;
}
if(d==m)
count++;
d=0;
}
}
}
printf("%d",count);
return 0;
}

2015-02-08 17:40
2015-02-08 18:03
2015-02-08 18:04
2016-12-18 22:28