2017年09月22日
《その41》 記憶域期間(p.229演習6-16,演習6-17,演習6-18)
新版明解C++入門編 p.229 演習6-16
静的記憶域期間をもつ配列の全要素が 0で初期化されることを確認するプログラムを作成せよ。
// p229_演習6-16
#include <iostream>
using namespace std;
int f[2][5]; // 静的記憶域期間 + ファイル有効範囲
int main()
{
static int s[4][5]; // 静的記憶域期間 + ブロック有効範囲
int a[2][2]; // 自動記憶域期間 + ブロック有効範囲
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++)
cout << "f[" << i << "][" << j << "] = " << f[i][j] << " ";
cout << '\n';
}
cout << '\n';
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++)
cout << "s[" << i << "][" << j << "] = " << s[i][j] << " ";
cout << '\n';
}
cout << '\n';
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++)
cout << "a[" << i << "][" << j << "] = " << a[i][j] << " ";
cout << '\n';
}
}
新版明解C++入門編 p.229 演習6-17
呼び出された回数を表示する関数 put_count を作成せよ。
void put_count();
// p229_演習6-17
#include <iostream>
using namespace std;
void put_count()
{
static int n;
cout << "put_count : " << ++n << "回目\n";
}
int main()
{
for (int i = 0; i < 5; i++)
put_count();
}
新版明解C++入門編 p.229 演習6-18
0以上9以下の乱数を返却する関数 rand1 を作成せよ。複数回呼び出された場合に、連続して同じ値を返さないようにすること(たとえば 1回前に呼び出された際に 5を返却していれば、5以外の値を返却しなければならない)。
int rand1();
// p229_演習6-18
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int rand1()
{
static int n0;
int n;
do {
n = rand() % 10;
} while (n == n0);
n0 = n;
return n;
}
int main()
{
srand((unsigned int)time(NULL));
for (int i = 0; i < 20; i++) {
cout << setw(2) << i + 1 << "回目 : " << rand1() << '\n';
}
}
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6727913
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック