ページ 11

初心者です

Posted: 2014年8月19日(火) 19:49
by ボンバー晴子
for文の多重ループで用いて1行目(abcde)から二行目(abcd)三行目(abc)のようなプログラムのコードを教えてください

Re: 初心者です

Posted: 2014年8月19日(火) 20:23
by みけCAT
言語は何でしょうか?
とりあえずC言語で書いてみました。

コード:

a;main(b){for(b=3;b--;putchar(10))for(a=!printf("abc");a++-b;)putchar(a+99);}
ちなみに、課題の丸投げは禁止です。

Re: 初心者です

Posted: 2014年8月20日(水) 07:28
by かずま
「C言語何でも質問掲示板」なんだから、
言語のデフォルトは C でしょう。

C の規格では、
可変引数の関数をプロトタイプ宣言なしで呼び出すと、動作は未定義です。
すなわち、#include <stdio.h> なしに、printf を使ってはいけません。
実際、LSI-C 86 コンパイラでは動きません。

そこで、printf を使わないと、

コード:

a;main(b){for(b=3;b--;putchar(10))for(a=~2;a++-b;)putchar(a+99);}
次に、文字コードが ASCII なら 'c' == 99 (0x63) ですが、
文字コードが EBCDIC なら 'c' == 131 (0x83) です。
改行コードも異なります。
文字コードに依存しないようにするなら、

コード:

a;main(b){for(b=3;b--;puts(""))for(a=~2;a++-b;)putchar(a+'c');}
もっと短くしたいなら、

コード:

main(){for(;;)for(;;)return!puts("abcde\nabcd\nabc");}