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 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了