scanf関数をつかって配列へ数値を格納してみよう

てんC 「今度は配列にscanf関数をつかって数値をとりこんでみます。」


#pragma warning(disable: 4996)


#include <stdio.h>


int main(void)

{

int hairetubox [3];

scanf("%d",& hairetubox [0]);

scanf("%d",& hairetubox [1]);

scanf("%d",& hairetubox [2]);


/*コンパイル後、コマンドプロンプト画面から

数値1,2,3を

hairetubox [0]

hairetubox [1]

hairetubox [2]

にキーボードから順次打ち込んで格納することになります*/


printf("%dをとりだしました。\n",hairetubox [0]);

printf("%dをとりだしました。\n",hairetubox [1]);

printf("%dをとりだしました。\n",hairetubox [2]);

return 0;

}


てんC「コンパイルっと(^^)!」


コンパイル結果

1(を入力すると)

2(を入力すると)

3(を入力すると)

1をとりだしました。

2をとりだしました。

3をとりだしました。


と表示されます。


てんC 「かわいいコンパイル結果がでてきました。


配列に数値を取り込むのも簡単でしたね。」



てんC 「このプログラムをもう少し簡単に書き換えてみましょう。

#pragma warning(disable: 4996)

#include <stdio.h>


int main(void)

{

int hairetubox [3];


int i;

for(i=0;i<3;i++)

scanf("%d",& hairetubox [i]);


/*コンパイル後、

数値1,2,3を

hairetubox [0]

hairetubox [1]

hairetubox [2]

にキーボードから順次打ち込んで格納することになります*/

int j;

for(0=1;j<3;j++)

printf("%dをとりだしました。\n",hairetubox [j]);

return 0;

}


てんC「コンパイルっと(^^)!」


コンパイル結果

1(を入力すると)

2(を入力すると)

3(を入力すると)

1をとりだしました。

2をとりだしました。

3をとりだしました。


と表示されます。


てんC 「さらに1回数値を入力するごとに


その数値がコマンドプロンプト画面にprintf出力表示されるよう


このプログラムを変形してみましょう。」


#pragma warning(disable: 4996)


#include <stdio.h>


int main(void)

{

int hairetubox [3];


int i;

for(i=0;i<3;i++){

scanf("%d",& hairetubox [i]);

printf("%dをとりだしました。\n",hairetubox [i]);

}

/*ここで、数値1,2,3を順次打ち込んでいきます*/

return 0;

}

てんC「コンパイルっと(^^)!」


コンパイル結果

1(を入力すると)

1をとりだしました。

2(を入力すると)

2をとりだしました。

3(を入力すると)

3をとりだしました。


と表示されます。」


てんC 「こちらも綺麗にコンパイル結果がでてきました。


いろいろなプログラムの書き方がかんがえられますね。


さらにおしゃれに書き換えてみると


#pragma warning(disable: 4996)


#include <stdio.h>


int main(void)

{

int hairetubox [3];


int i;

for(i=0;i<3;i++){

printf("%d番目に入力する数値はいくらですか?\n",i+1);

scanf("%d",& hairetubox [i]);

printf("%dをとりだしました。\n",hairetubox [i]);

}

/*ここで、数値1,2,3を順次打ち込んでいきます*/

return 0;

}


コンパイル結果

1番目に入力する数値はいくらですか?

1(を入力すると)

1をとりだしました。

2番目に入力する数値はいくらですか?

2(を入力すると)

2をとりだしました。

3番目に入力する数値はいくらですか?

3(を入力すると)

3をとりだしました。


てんC「


数値を入力する前に


i+1番目に入力する数値はいくらですか?の文を表示してみました。


ここで


i+1番目に数値を入力するとき(iは0,1,2の値をとります)


それに対応して


scanf("%d",& hairetubox [i]);関数の中の


hairetubox [i]の[ ]の中の値がiになっているところが注目ポイントですね。


なぜi+1番目に数値を入力するとき


hairetubox [i]の[ ]の中の値が


i+1から1を引いたiになっているのか?


これは配列宣言int hairetubox [3];によって


配列変数が

hairetubox [0]

hairetubox [1]

hairetubox [2]


と生成されていることにより


1番目に数値を入力するときはhairetubox [0]

2番目に数値を入力するときはhairetubox [1]

3番目に数値を入力するときはhairetubox [2]


に対応させるためなのですね。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます