思路:
写一个方法 从[]中提取符号。
getchar() 返回值为int型 ASCII码或eof
注意:
边界判断 选择的序号超出上下界。
超时问题
scanf写在这就超时。
#include<cstdio>
#define maxn 12
char hand [maxn][30];
char eye [maxn][30];
char mouth [maxn][30];
int get(char a[][30]);
int main(){
int lenh,lene,lenm;
lenh = get(hand);
lene = get(eye);
lenm = get(mouth);
int n;
int lh,le,m,re,rh;
scanf("%d",&n);
int i =0;
for( i=0;i<n;i++){
scanf("%d%d%d%d%d",&lh,&le,&m,&re,&rh);
if((lh>lenh)||(le>lene)||(m>lenm)||(re>lene)||(rh>lenh))
printf("Are you kidding me? @\\/@");
else if((lh<1)||(le<1)||(m<1)||(re<1)||(rh<1))
printf("Are you kidding me? @\\/@");
else
printf("%s(%s%s%s)%s",hand[lh],eye[le],mouth[m],eye[re],hand[rh]);
putchar('\n');
}
return 0;
}
int get(char a[][30]){
int i=0,j=0,c;
int count = 0;
int flag = 0;
while((c=getchar())!='\n'){//按下回车即退出循环。
if(c=='['){
flag = 1;
i++;
j=0;
count++;
}else if(c==']'){
flag = 0;
a[i][j]=0;
}
else{
if(flag == 1)
a[i][j++]=c;
}
}
return count;
}