1. 1바이트는 8개의 비트로 이루어집니다. 255는 8개 비트 전체가 1인
경우이고, 1은 최하위 1비트만 1인 경우입니다. 문자 ch의
켜진 비트 개수는 몇 개입니까? 켜진 비트는 1로 설정된
비트의 다른 표현입니다.
대문자 ‘A’의
값은 65이고 6번째와 1번째
비트가 켜져 있습니다.
#include <iostream>
using namespace std;
int main()
{
char c;
int cnt = 0;
int tmp = 1;
cout << "문자 입력: ";
cin >> c;
for(int i = 0 ; i < 8 ; ++i)
{
if(c & tmp)
{
++cnt;
}
tmp <<= 1;
}
cout << "켜진 비트의 개수: " << cnt << endl;
cout << "값: " << (int)c << endl;
return 0;
}
2. 정수 N이 소수입니까?
#include <iostream>
using namespace std;
int main()
{
int num;
int cnt = 0;
cout << "정수 입력: ";
cin >> num;
for(int i = 1 ; i <= num ; i++)
{
if(num % i == 0)
{
++cnt;
}
}
if(cnt == 2)
{
cout << "결과 : 소수" << endl;
}
else
{
cout << "결과 : 합성수[" << cnt << "]" << endl;
}
return 0;
}
3. 로또 번호 생성 프로그램
- 사용자에게 로또 게임
수를 입력받아 게임의 횟수별로 임의로 6개의 수(1~45)를
자동 생성하는 프로그램을 작성하시오. 단, 생성된
난수는 모두 다른 값이어야 한다.
- 로또 번호는 정수형 배열을 선언하여
설정한다.
- 프로그램의 주요한 부분에
주석을 명시하시오.
#include <iostream>
using namespace std;
bool sameNum(const int *arr, int size, int num);
int main()
{
int num[6]; // 생성된 난수 보관 하는 변수
int cnt;
int tmp; // 난수 값을 임시로 받는 변수
srand((unsigned int)time(NULL));
cout << "Enter the game count: ";
cin >> cnt;
for(int i = 0 ; i < cnt ; ++i)
{
for(int j = 0 ; j < 6 ; ++j)
{
tmp = (rand() % 45) + 1;
while(sameNum(num, j + 1, tmp)) // 같은 값이 있으면
{
tmp = (rand() % 45) + 1; // 새로 값을 받음
}
num[j] = tmp;
}
// 생성된 난수 출력
cout << "game" << i << " : ";
for(int j = 0 ; j < 6 ; ++j)
{
cout.width(2);
cout << num[j] << " ";
}
cout << endl;
}
return 0;
}
// 같은 값이 있는지 확인해 주는 함수
bool sameNum(const int *arr, int size, int num)
{
for(int i = 0 ; i < size ; ++i)
{
if(arr[i] == num)
{
return 1;
}
}
return 0;
}