思路:
写一个方法 从[]中提取符号。
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; }