weixin_39134212 2018-07-28 03:29 采纳率: 100%
浏览 1303
已采纳

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啊 是一个字符串该如何判断

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-07-28 04:31
    关注

    我输入 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这些变量都和上一次的没有任何关系了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样