#include
#include
#include
int main(void)
{
int n;
char a[150];
char p1,*p2;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",a);
int len=strlen(a);
int a1=0,p=0,t=0,flag=0;
for(int j=0;j<len;j++){
if(a[j]=='A')
a1++;
else if(a[j]=='P')
p++;
else if(a[j]=='T')
t++;
else
break;
if(p==1&&t==1&&a1!=0){
p1=strchr(a,'P');
p2=strchr(a,'T');
if((p1-a)(p2-p1-1)==strlen(p2)-1)
flag=1;
}
}
if(flag==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
代码中定义了一个数组 char a[150]
如果我输入 PAT PAAT 是不是就储存在了 a[0],a[1]中 多个字符串存储在数组中为什么不定义一个二元数组也可以?
问题2:
a[0]=pat
那么后面if else语句统计p,a,t 的个数是什么样的过程
if(a[j]='a') 那a[0]也不等于a啊 是一个字符串该如何判断
我输入 PAT PAAT 是不是就储存在了 a[0],a[1]中
不是的,而是分为2次输入,for循环第一次的时候a整个是pat,也就是a[0] = 'P' a[1] = 'A' a[2] = 'T' a[3] = '\0'
第二次整个是paatif(a[j]='a')
不是,是 if(a[0]='a') 其中,j 是内侧的for循环的变量
简单来说,这里两个循环,每一个空格分隔的字符串被作为一个整体存入a,内侧循环对它进行统计,并且结果放在a1 p t里
每外侧心的循环开始,a a1 p t这些变量都和上一次的没有任何关系了。
你的问题是,你错误地认为,先把所有的输入都装入一个二维数组,实际上没有的事,只有一个数组,一套变量,每次计算,都把之前的丢掉了。