13장. 실습문제
1.
다음은 정수를 입력받아 구구단을 출력하는 프로그램이다. 그런데 이 프로그램은 1~9가 아닌 정수가 입력되는 것을 거러내지 못하고, 특히 문자가 입력되면 무한루프에 빠진다. try-throw-catch를 이용해 이 프로그램을 수정하라.
#include <iostream>
using namespace std;
// int main() {
// int n;
// while(true) {
// cout << "양수 입력 >> ";
// cin >> n;
// try {
// throw -1;
// throw "s";
// } catch(float f) {
// cout << "잘못된 입력입니다. 1~9 사이의 정수만 입력하세요";
// } catch(char c) {
// cout << "입력 오류가 발생하여 더 이상 입력되지 않습니다. 프로그램을 종료합니다"
// }
// for (int i = 1; i < 9; i++)
// cout << n << "x" << i << "=" << n*i << ' ';
// cout << endl;
// }
// }
int main() {
int n;
while(true) {
cout << "양수 입력 >> ";
try {
cin >> n;
if(cin.fail())
throw "정수값이 아닌 값을 입력!";
if(n < 1 || n > 9)
throw n;
for (int i = 1; i < 9; i++)
cout << n << "x" << i << "=" << n*i << ' ';
cout << endl;
}
catch(const char* s) {
cout << "입력 오류 : " << s << endl;
return 0;
}
catch(int n) {
cout << "잘못된 입력입니다. 1~9 사이의 정수만 입력하세요" << endl;
}
}
}
C++
복사
2.
다음은 C코드로서 get.c파일에 저장되어 있다. get() 함수를 호출해 두 정수를 키보드로부터 입력받아 아래 실행화면과 같이 곱을 출력하는 프로그램을 main.cpp 파일로 저장하고, get.c와 main.cpp 파일로 구성되는 프로그램을 작성하라.
// get.c
#include <stdio.h>
int get() {
int c;
printf("숫자를 입력하세요>>");
scanf("%d", &c);
return c;
}
C
복사
// main.cpp
#include <iostream>
using namespace std;
extern "C" int get();
int main() {
int n = get();
int m = get();
cout << n * m << endl;
}
C++
복사