PTA乙级 1003我要通过 数组存储问题

#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'
第二次整个是paat
if(a[j]='a')
不是,是 if(a[0]='a') 其中,j 是内侧的for循环的变量

简单来说,这里两个循环,每一个空格分隔的字符串被作为一个整体存入a,内侧循环对它进行统计,并且结果放在a1 p t里
每外侧心的循环开始,a a1 p t这些变量都和上一次的没有任何关系了。

你的问题是,你错误地认为,先把所有的输入都装入一个二维数组,实际上没有的事,只有一个数组,一套变量,每次计算,都把之前的丢掉了。