求各位大牛解答
#include
#include
bool find(char a[2000], char b[2000])
{
int i,j,k;
bool found=false;
for(i=0; a[i]!=0; i++)
{
for(j=i, k=0; a[j]==b[k] && a[j]!=0; j++, k++);
if(b[k]==0)
{
found=true;
break;
}
}
return found;
}
int main()
{
char a[2000];
char b[2000];
int n,m;
while(scanf("%d",&n)!=EOF)
{
int i,j;
for(i=0;i
{
scanf("%s",a[i]);
}
scanf("%d",&m);
for(i=0;i
{
scanf("%s",b[i]);
}
for(j=0;j
{
int sum=0;
for(i=0;i
{
if(find(a[i],b[j]))sum++;
}
printf("%d\n",sum);
}
}
return 0;
}
我要打的是这样一道题 首先输入一个正整数P(1 ≤ P ≤10000),代表了所有产品的总数,接下来是P行字符串(军事小写,长度不超过20个字符)。然后输入一个正整数Q(1 ≤ Q ≤100000),Q代表了记得的关键字符串的个数,接下来是Q行关键字字符串。
给出这样的错误
cannot convert parameter 1 from 'char' to 'char []'
表示刚好没学指针那节
------解决思路----------------------
//首先输入一个正整数P(1 ≤ P ≤10000),代表了所有产品的总数,接下来是P行字符串(均是小写,长度不超过20个字符)。
//然后输入一个正整数Q(1 ≤ Q ≤100000),Q代表了记得的关键字符串的个数,接下来是Q行关键字字符串。
//输出Q行,每行对应第Q个关键字字符串在所有产品中出现的次数。
#include
bool find(char *a, char *b) {
int i,j,k;
bool found=false;
for (i=0; a[i]!=0; i++) {
for (j=i, k=0; a[j]==b[k] && a[j]!=0; j++, k++);
if (b[k]==0) {
found=true;
break;
}
}
return found;
}
int main() {
static char a[10000][21];
static char b[100000][21];
int P,Q;
int i,j;
int sum;
scanf("%d",&P);
for (i=0;i
scanf("%20s",a[i]);
}
scanf("%d",&Q);
for (j=0;j
scanf("%20s",b[j]);
}
for (j=0;j
sum=0;
for (i=0;i
if (find(a[i],b[j])) sum++;
}
printf("%d\n",sum);
}
return 0;
}
//输入:
//3
//abc
//abcdef
//xyz
//4
//abc
//xyz
//def
//lmn
//输出:
//2
//1
//1
//0
//
------解决思路----------------------
引用:Quote: 引用:scanf("%s",a[i]); 改为: scanf("%s",a);
scanf("%s",b[i]); 改为: scanf("%s",b);
仅修改了一部分。这样改了以后能运行,但是没有达到题目效果啊
楼上 赵4老师 已给出代码。