首页 > 学院 > 开发设计 > 正文

PAT甲级C语言.1003. 我要通过!

2019-11-08 01:14:59
字体:
来源:转载
供稿:网友
#include<stdio.h>#include <string.h>int main(){	int locate(char a[],char);	int n,i,j;	scanf("%d",&n);	getchar();/*, 你输入数字123, 按回车,输入缓冲区的内容是"123/n". 这时数字被scanf读入, 	              但是输入缓冲区里还有一个'/n'. getchar()把'/n'取出,以免影响gets. 	              而gets在遇到'/n'时会停止读数据,所以如果不用getchar取出'/n', gets遇到'/n'立即停止,只能读到一个空串, '/0'. */	char str[10][4],str2[]="YES",str3[]="NO";	for(i=0;i<n;++i)	{		strcpy(str[i],str2);	}	for(i=0;i<n;++i)	{		char a[100];		PRintf("input a string:");	gets(a); puts(a);	int kp,kt,kp_t,kend,k=0;	kp=locate(a,'P');	kt=locate(a,'T');	kp_t=kt-kp-1;	kend=locate(a,'/0');	printf("%d %d %d %d/n",kp,kt,kp_t,kend);	while(a[k]!='P')		if(a[k++]!='A') 		{			strcpy(str[i],str3);break;		}		k++;		while(a[k]!='T')			if(a[k++]!='A')			{				strcpy(str[i],str3);break;			}			k++;			while(a[k]!='/0')				if(a[k++]!='A')				{					strcpy(str[i],str3);break;				}				if((kp_t*kp!=(kend-kt-1))||(kp_t<1))				{					strcpy(str[i],str3);				}				}	for(j=0;j<n;++j)	{		puts(str[j]);	}				return 0;}int locate(char a[],char b){	int i=0;	while(a[i]!='/0')	{		if(a[i]==b)//用''对包含的代表字符常量,其值为字符a的ascii码,故此处不用'b'!			break;		++i;	}	return i;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表