プログラミングⅠ・講義メモ 後半

p.16 scanf関数:キーボードからの読み込みを行う関数

・書式: scanf("書式文字列", &変数名); //「&」を忘れずに
・これを実行するとプログラムは「入力待ち」になり、値をキーボード入力してEnterキーを押すまで先に進まないので注意
※ VS(VC++)では、この関数は危険だとみなしてエラーにされてしまうが、下記の手順でエラーを回避できる
 ①「プロジェクト」「Project1のプロパティ」
 ②「C/C++」(左側)をクリック
 ③「SDLチェック」(右側)の「はい(/sdl)」をクリックし[V]をクリック
 ④「いいえ(/sdl-)」をクリックし「OK」

p.16 list0111.cpp

/*
    p.16 list0111.cpp
*/
#include <stdio.h>
int main(void)
{
    int no; //int型の変数を宣言
    printf("整数を入力してください:"); //文字列を表示(改行しない)
    scanf("%d", &no); //キーボードから整数値を入力し変数noに格納
    printf("あなたは%dと入力しましたね。\n", no); //変数noの値を埋め込んで表示(改行)
    return 0;
}

p.16 scanf関数:キーボードからの読み込みを行う関数(つづき)

・整数値の読み込みには書式文字列に(printfと同様に)"%d"を指定する
 ※"%d"はint型を示すので、int型の範囲(約±21億)を超えると正しくならない
・scanf関数は格納先を変数名ではなく、その意味する領域の場所(番地、アドレス)で用いるので「&変数名」とする。

p.17 乗算を行う

・「+」の代わりに「*」を用いると乗算(掛け算)になる
 ※ 数学と同様で「+」よりも「*」が優先されるので注意

p.17 list0112.cpp

/*
    p.17 list0112.cpp
*/
#include <stdio.h>
int main(void)
{
    int no; //int型の変数を宣言
    printf("整数を入力してください:"); //文字列を表示(改行しない)
    scanf("%d", &no); //キーボードから整数値を入力し変数noに格納
    printf("その数の5倍は%dです。\n", 5 * no); //式「5 * no」の結果を埋め込んで表示(改行)
    return 0;
}

p.17 演習1-5 ex0105.cpp

・List1-11または1-12をもとにすると早い
・書式文字列に複数の「%d」を指定でき、その数だけ、引数を増やすと良い
例:
  printf("%dの倍は%dです\n", 2, 4); //「2の倍は4です」と表示される

作成例

/*
    p.17 演習1-5 ex0105.cpp
*/
#include <stdio.h>
int main(void)
{
    int no; //int型の変数を宣言
    printf("整数を入力してください:"); //文字列を表示(改行しない)
    scanf("%d", &no); //キーボードから整数値を入力し変数noに格納
    printf("%dに13を加えると%dです。\n", no, no + 13); //変数値と計算値を埋め込んで表示(改行)
    return 0;
}

p.17 演習1-6 ex0106.cpp

・p.17 演習1-5をもとにすると早い
・負の数も表示できることを確認しよう

作成例

/*
    p.17 演習1-6 ex0106.cpp
*/
#include <stdio.h>
int main(void)
{
    int no; //int型の変数を宣言
    printf("整数を入力してください:"); //文字列を表示(改行しない)
    scanf("%d", &no); //キーボードから整数値を入力し変数noに格納
    printf("%dから7を減じると%dです。\n", no, no - 7); //変数値と計算値を埋め込んで表示(改行)
    return 0;
}

自由参加課題 free17.cpp

・p.17 演習1-6で、減じる値も入力するようにしよう
実行例:
整数を入力してください:58
減じる値を入力してください:9
58から9を減じると49です。

p.18 puts関数:表示を行う関数

・文字列の表示に特化した関数で自動的に改行する
・書式: puts("文字列");
・「printf("文字列\n");」と同じ動作になる
・値の埋め込みや改行の省略はできない

p.18 list0113.cpp

/*
    p.18 list0113.cpp
*/
#include <stdio.h>
int main(void)
{
    int n1, n2; //int型の2変数を宣言
    puts("二つの整数を入力してください。"); //文字列を表示(自動改行)
    printf("整数n1:"); scanf("%d", &n1); //入力案内を表示しキーボードから整数値を入力
    printf("整数n2:"); scanf("%d", &n2); //入力案内を表示しキーボードから整数値を入力
    printf("それらの和は%dです。\n", n1 + n2); //計算値を埋め込んで表示(改行)
    return 0;
}

p.19 list0114.cpp

/*
    p.19 list0114.cpp
*/
#include <stdio.h>
int main(void)
{
    int n1, n2; //int型の2変数を宣言
    puts("二つの整数を入力してください。"); //文字列を表示(自動改行)
    printf("整数n1:"); scanf("%d", &n1); //入力案内を表示しキーボードから整数値を入力
    printf("整数n2:"); scanf("%d", &n2); //入力案内を表示しキーボードから整数値を入力
    int wa = n1 + n2; //int型の変数を計算値で初期化
    printf("それらの和は%dです。\n", wa); //変数の値を埋め込んで表示(改行)
    printf("つまりn1 + n2 = %dです。\n", wa); //変数の値を再利用して埋め込んで表示(改行)
    return 0;
}

p.19 List1-14 解説

・同じ計算を複数回行うことは無駄なので、計算結果を変数に格納して再利用しよう
・これに用いる変数は、利用直前に宣言するか初期化すれば良い
※ 旧式のCコンパイラではエラーになる場合がある(この場合は先頭で宣言すると良い)

p.19 演習1-7 ex0107.cpp

・p.11 演習1-2をもとにすると早い

作成例

/*
    p.19 演習1-7
*/
#include <stdio.h>
int main(void)
{
    puts("守\n破\n離"); //1文字ごとに改行(最後の改行は不要)
    return 0;
}

p.19 演習1-8 ex0108.cpp

・p.18 List 1-13をもとにすると早い

作成例

/*
    p.19 演習1-8 ex0108.cpp
*/
#include <stdio.h>
int main(void)
{
    int n1, n2; //int型の2変数を宣言
    puts("二つの整数を入力してください。"); //文字列を表示(自動改行)
    printf("整数n1:"); scanf("%d", &n1); //入力案内を表示しキーボードから整数値を入力
    printf("整数n2:"); scanf("%d", &n2); //入力案内を表示しキーボードから整数値を入力
    printf("それらの積は%dです。\n", n1 * n2); //計算値を埋め込んで表示(改行)
    return 0;
}

提出:p.19 演習1-9 ex0109.cpp

・p.18 List 1-13 または、演習1-8をもとにすると早い
・宣言する変数にn3を加える
・putsする文字列を「三つの整数」に変更
・変数n3用のprintfとscanfを追加
・n1 + n2 + n3を表示するように変更

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です