問題1:C言語との違い

この問題を解くためには…
 → 応用編第1日目参照

probex1-1.(難易度:★)

以下のプログラムで、変数aの値を直接変えることなく、aの値に3を足したものを出力するように、プログラムを改造しなさい。

main.cpp
#include <iostream>

using namespace std;

int main(){
	int a = 7;
	int &n = a;
	cout << "a= " << a << endl;
	cout << "a= " << a << endl;

}
期待される実行結果
a = 7
a = 10

probex1-2.(難易度:★★)

以下のプログラムのchangeNum()関数の引数を、変数のポインタではなく、参照を与える形に変えて、同じ結果が得られるようにプログラムを変更しなさい。
main.cpp

#include <iostream>

using namespace std;

void changeNumber(int*);

int main(){
	int n = 5;
	cout << "変更前 : " << n << endl;
	changeNumber(&n);
	cout << "変更後 : " << n << endl;

}

void changeNumber(int* n){
	*n *= 2;	//	数値
}
実行結果
変更前 : 5
変更後 : 10

probex1-3.(難易度:★★)

以下のプログラムのswap()関数の引数を、変数のポインタではなく、参照を与える形に変えて、同じ結果が得られるようにプログラムを変更しなさい。

main.cpp


#include <iostream>

using namespace std;

void swap(int *, int *);

int main()
{
	int a = 1, b = 2;
	cout << "a = " << a << " b = " << b << endl;
	swap(&a, &b);
	cout << "a = " << a << " b = " << b << endl;

	return 0;
}

void swap(int *a, int *b)
{
	int tmp;
	tmp = *a;
	*a = *b;
	*b = tmp;
}

実行結果の例
a = 1 b = 2
a = 2 b = 1