1. 10진수 0부터 16까지의 정수를 8진수로 출력합니다. 출력에는 10진수와 8진수의 대응관계를 반드시 포함시킵니다. printf함수의 %o플래그를 사용할 수 없습니다.
출력) 10진수 8진수
-------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 11
10 12
11 13
12 14
13 15
14 16
15 17
16 20
#include <stdio.h>
int main()
{
int dec=0;
int oct=0;
int count;
int mok;
int nmg;
fprintf(stdout, "10진수\t8진수\n");
fprintf(stdout, "=============\n");
for(count=0; 16>=count; count++)
{
mok=count/8;
nmg=count-(mok*8);
oct=(mok*10)+nmg;
fprintf(stdout, " %2d\t %2d\n", dec++, oct);
}
return 0;
}
2. 정수의 자릿수를 구하세요.
출력) 정수 입력 : 325
자릿수 : 3
정수 입력 : 4589
자릿수 : 4
정수 입력 : -1
프로그램 종료!
#include <stdio.h>
int main()
{
int inum;
int inum2;
int cnt;
while(1)
{
fprintf(stdout, "정수를 입력 : ");
fscanf(stdin, "%d", &inum);
inum2=inum;
if(0!=inum2)
{
for(cnt=0; 1<inum; cnt++)
{
inum/=10;
}
}
else
{
fprintf(stdout, "0입력하지말고 다시 입력해!!\n");
continue;
}
if(-1==inum2)
{
fprintf(stdout, "프로그램 종료!\n");
break;
}
fprintf(stdout, "정수\t: %d\n", inum2);
fprintf(stdout, "자릿수\t: %d\n", cnt);
}
return 0;
}
3. 1바이트는 8개의 비트로 이루어집니다. 255는 8개 비트 전체가 1인 경우이고, 1은 최하위 비트만 1인 경우입니다. 문자 ch의 켜진 비트 개수는 몇 개입니까? 켜진 비트는 1로 설정된 비트의 다른 표현입니다.
대문자 ‘A’의 값은 65이고 6번째와 1번째 비트가 켜져 있습니다.
출력) 문자 입력 : A
켜진 비트의 개수 : 2
값 : 65
#include <stdio.h>
int main()
{
char ch;
int count;
int iNum,iNum2=1;
int bit=0;
fprintf(stdout, "문자를 입력하세요 : ");
fscanf(stdin, "%c", &ch);
for(count=1; 8>=count; count++) // 켜진 비트 검출문
{
iNum=(iNum2&ch)/(iNum2);// 0~7번비트 켜져있나 확인
if(iNum==1) // 켜진경우 실행
{
bit++; // 비트 카운터
}
iNum2=1<<count; // 0~7번비트까지 쉬프트
}
fprintf(stdout, "켜진 비트의 갯수: %d\n", bit);
fprintf(stdout, "입력된 문자 값\t: %d\n", ch);
return 0;
}