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を表示するように変更