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 「かわいいプログラムの実行結果がでてきました。


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


scanf関数の第2引数には

配列変数

hairetubox[0]

hairetubox[1]

hairetubox[2]

のアドレス

&hairetubox[0]

&hairetubox[1]

&hairetubox[2]

がもちいられることになります


註)

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



第1引数は"%d"

第2引数は&hairetubox[0]

となっています


変数aのアドレスとは


aにアンパサンド&をつけた


&aでしたね







てん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(j=0;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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る