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]
に対応させるためなのですね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます