在之前的1024. 科学计数法 (20)(C语言实现)中,我使用了格式化字符串"%[…]",这种字符串的作用类似于"%s",但是后者会读取字符串到空白字符(空格、换行、制表符等等),前者使scanf读到后面的字符,相当于用户可以自定义scanf的行为。
#includeint cnt(char arr[][5]) { char c; int i = 0; while((c = getchar())!='n') { if(c == '[') { scanf("%[^]]",arr[i++]); } } return i; } int main() { char hand[10][5],eye[10][5],month[10][5]; int cnt_hand = cnt(hand); int cnt_eye = cnt(eye); int cnt_month = cnt(month); int num; scanf("%d",&num); while(num--) { int lhand,leye,mmonth,reye,rhand; scanf("%d%d%d%d%d",&lhand,&leye,&mmonth,&reye,&rhand); getchar(); if(lhand > cnt_hand || lhand < 1 || leye > cnt_eye || leye < 1 || mmonth > cnt_month || mmonth < 1 || rhand > cnt_hand || rhand < 1 || reye > cnt_eye || reye < 1) { printf("Are you kidding me? @\/@n"); } else { printf("%s(%s%s%s)%sn",hand[lhand-1],eye[leye-1],month[mmonth-1],eye[reye-1],hand[rhand-1]); } } return 0; }



