問題はこちら
No.163 cAPSlOCK - yukicoder
'A'+32で'a'になることを使えば、32を加減することで求める結果を得ることができる
int main(){ char s[110]; int i; gets(s); for(i=0;s[i];i++)s[i]+=s[i]<'a'?32:-32; puts(s); return 0; }
前から読み込んでいけばいいので配列はいらない
'A' bitxor 32 で'a'になることを使えば大文字か小文字かの条件分岐がいらない
main(a){ for(;read(0,&a,1);putchar(a-10?a^32:a)); }
改行以外の文字は64以上の値であることに注意すると
main(a){for(;read(0,&a,1);putchar(a^a/2&32));}
とまとめられる(除算→bitand→bitxorの優先順位)
46B