重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

【質問】
次の処理を行うプログラムを作成する。
(1)10個の要素を持つ一次配列dat[10]を宣言する
(2)dat[0]に0、dat[1]に1をセットする
(3)dat[2]以降の要素には、前の2つの要素の和を計算し入力する。
(4)配列の各要素の値を表示する

【プログラム作成例】
dat[ 0] = 0
dat[ 1] = 1
dat[ 2] = 1
dat[ 3] = 2
dat[ 4] = 3
dat[ 5] = 5
dat[ 6] = 8
dat[ 7] = 13
dat[ 8] = 21
dat[ 9] = 34

上記の解答は下記の通りなのですが、下記以外の解答方法を教えてはいただけないでしょうか?
C言語に詳しい方よろしくお願いいたします。


#include <stdio.h>
main()
{
int i, dat[10];
dat[0] = 0;
dat[1] = 1;

for (i=2; i<10; i++) {
dat[i] = dat[i-2] + dat[i-1];
}
for (i=0; i<10; i++) {
printf ("dat[%2d] = %2d\n", i, dat[i]);
}
return (0);
}

A 回答 (1件)

Cはもはや覚えていませんが・・・。



#include <stdio.h>
main()
{
int i, dat[10];
dat[0] = 0;
dat[1] = 1;

for (i=0; i<2; i++) {
printf ("dat[%2d] = %2d\n", i, dat[i]);
}
for (i=2; i<10; i++) {
dat[i] = dat[i-2] + dat[i-1];
printf ("dat[%2d] = %2d\n", i, dat[i]);
}
return (0);
}

上記のような方法でも可能だし、0~9まで一度のfor()でif()使っても出来ますね。
後は回したり比較したりの回数が多ければ速度が落ちる、くらいでしょうか。
(1)~(4)の手順を完全に守れ、というならば、質問にある方法
程度しかないでしょう。

自信はありませんのであしからず・・・。
    • good
    • 0
この回答へのお礼

いろんな方法があるんですね!勉強になりました!
naktakさん、わかりやすい解答ありがとうございました。

お礼日時:2007/06/25 23:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!