ページ 1 / 1
初心者です
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");}