목차
생일
선분 상의 정수 점
오목
ISBN
비밀편지
큰 수 뺄셈
긴 자리수 곱셈
2진수 8진수 변환
IP 주소
선분 상의 정수 점
오목
ISBN
비밀편지
큰 수 뺄셈
긴 자리수 곱셈
2진수 8진수 변환
IP 주소
본문내용
음에 주어지는 테이블을 이용해서 2 진수로 변환
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
입력
100 자리를 넘지 않고 첫 수는 1 로 시작한다.
출력
대응되는 8 진수를 출력한다.
입출력 예
입력
1010
출력
12
입력
11001100
출력
314
소스
#include
#include
#include
void reverse(char *str);
int main()
{
char num[101]="";
char result[101]="";
int i,j=0;
int len;
int t;
for(i=0; i<1; i++) {
scanf("%s",&num);
if(num[0]!='1') {
printf("잘못된 입력\n");
i--;
}
}
len= strlen(num);
reverse(num); // 뒤집은다
for(i=0; i
{
t=(num[i]=='\0' ? 0 : num[i]-'0') * 1 + (num[i+1]=='\0' ? 0 : num[i+1]-'0') * 10 + (num[i+2]=='\0' ? 0 : num[i+2]-'0') * 100; // num이 NULL이 아니면 숫자추출해서 곱한뒤 더하고 NULL 이면 0으로 대입해서 더함
if(t==0) {
result[j]='0';
j++;
}
else if(t==1) {
result[j]='1';
j++;
}
else if(t==10) {
result[j]='2';
j++;
}
else if(t==11) {
result[j]='3';
j++;
}
else if(t==100) {
result[j]='4';
j++;
}
else if(t==101) {
result[j]='5';
j++;
}
else if(t==110) {
result[j]='6';
j++;
}
else if(t==111) {
result[j]='7';
j++;
}
}
reverse(result); // 뒤집혀서 저장된것을 다시 뒤집은다.
printf("%s\n",result);
return 0;
}
void reverse(char *str) {
int i, len;
char t;
len=strlen(str);
for (i = 0; i < len/2; i++) { // 거꾸로 뒤집음
t = str[i];
str[i] = str[len-i-1];
str[len-i-1] = t;
}
}
문제9 : IP 주소
32 bit ( 이진수 32 자리 ) ip 주소를 입력으로 받아 8 자리씩 끊어 10 진수로 바꾸어 출력하는 문제이다.
참고로 이진수를 10 진수로 바꾸기위한 ,첫 8 자리의 2 진수 가중치는 다음과 같다.
27
26
25
24
23
22
21
20
128
64
32
16
8
4
2
1
입력
공백없이 2 진수 32 자리숫자가 입력으로 주어진다.
출력
8 자리씩 끊어 10 진수.10진수.10진수.10진수 형태로 출력한다.
입출력 예
입력
00000000000000000000000000000000
출력
0.0.0.0
입력
00000011100000001111111111111111
출력
3.128.255.255
입력
1100 1011 1000 0100 1110 0101 1000 0000
출력
203.132.229.128
입력
01010000000100000000000000000001
출력
80.16.0.1
소스
#include
#include
#include
//32 bit ( 이진수 32 자리 ) ip 주소를 입력으로 받아 8 자리씩 끊어 10 진수로 바꾸어 출력하는 문제이다.
int main()
{
char a[33];
char b[4][9];
char c[8][2];
int i,j,n;
int valu=0;
int res[4]={0};
gets(a);
for(i=0; i<4; i++) {
for(j=0; j<8; j++)
{
b[i][j]=a[j+i*8];
}
b[i][8]='\0';
} // 4개 배열에 옮겨 담음
for(i=0; i<8; i++) {
c[i][0]=b[0][i];
c[i][1]='\0';
} // 첫번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[0]=res[0]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 첫번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[1][i];
c[i][1]='\0';
} // 두번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[1]=res[1]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 두번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[2][i];
c[i][1]='\0';
} // 세번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[2]=res[2]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 세번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[3][i];
c[i][1]='\0';
} // 세번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[3]=res[3]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 세번째 주소
printf("%d.%d.%d.%d\n",res[0],res[1],res[2],res[3]);
return 0;
}
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
입력
100 자리를 넘지 않고 첫 수는 1 로 시작한다.
출력
대응되는 8 진수를 출력한다.
입출력 예
입력
1010
출력
12
입력
11001100
출력
314
소스
#include
#include
#include
void reverse(char *str);
int main()
{
char num[101]="";
char result[101]="";
int i,j=0;
int len;
int t;
for(i=0; i<1; i++) {
scanf("%s",&num);
if(num[0]!='1') {
printf("잘못된 입력\n");
i--;
}
}
len= strlen(num);
reverse(num); // 뒤집은다
for(i=0; i
t=(num[i]=='\0' ? 0 : num[i]-'0') * 1 + (num[i+1]=='\0' ? 0 : num[i+1]-'0') * 10 + (num[i+2]=='\0' ? 0 : num[i+2]-'0') * 100; // num이 NULL이 아니면 숫자추출해서 곱한뒤 더하고 NULL 이면 0으로 대입해서 더함
if(t==0) {
result[j]='0';
j++;
}
else if(t==1) {
result[j]='1';
j++;
}
else if(t==10) {
result[j]='2';
j++;
}
else if(t==11) {
result[j]='3';
j++;
}
else if(t==100) {
result[j]='4';
j++;
}
else if(t==101) {
result[j]='5';
j++;
}
else if(t==110) {
result[j]='6';
j++;
}
else if(t==111) {
result[j]='7';
j++;
}
}
reverse(result); // 뒤집혀서 저장된것을 다시 뒤집은다.
printf("%s\n",result);
return 0;
}
void reverse(char *str) {
int i, len;
char t;
len=strlen(str);
for (i = 0; i < len/2; i++) { // 거꾸로 뒤집음
t = str[i];
str[i] = str[len-i-1];
str[len-i-1] = t;
}
}
문제9 : IP 주소
32 bit ( 이진수 32 자리 ) ip 주소를 입력으로 받아 8 자리씩 끊어 10 진수로 바꾸어 출력하는 문제이다.
참고로 이진수를 10 진수로 바꾸기위한 ,첫 8 자리의 2 진수 가중치는 다음과 같다.
27
26
25
24
23
22
21
20
128
64
32
16
8
4
2
1
입력
공백없이 2 진수 32 자리숫자가 입력으로 주어진다.
출력
8 자리씩 끊어 10 진수.10진수.10진수.10진수 형태로 출력한다.
입출력 예
입력
00000000000000000000000000000000
출력
0.0.0.0
입력
00000011100000001111111111111111
출력
3.128.255.255
입력
1100 1011 1000 0100 1110 0101 1000 0000
출력
203.132.229.128
입력
01010000000100000000000000000001
출력
80.16.0.1
소스
#include
#include
#include
//32 bit ( 이진수 32 자리 ) ip 주소를 입력으로 받아 8 자리씩 끊어 10 진수로 바꾸어 출력하는 문제이다.
int main()
{
char a[33];
char b[4][9];
char c[8][2];
int i,j,n;
int valu=0;
int res[4]={0};
gets(a);
for(i=0; i<4; i++) {
for(j=0; j<8; j++)
{
b[i][j]=a[j+i*8];
}
b[i][8]='\0';
} // 4개 배열에 옮겨 담음
for(i=0; i<8; i++) {
c[i][0]=b[0][i];
c[i][1]='\0';
} // 첫번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[0]=res[0]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 첫번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[1][i];
c[i][1]='\0';
} // 두번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[1]=res[1]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 두번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[2][i];
c[i][1]='\0';
} // 세번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[2]=res[2]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 세번째 주소
for(i=0; i<8; i++) {
c[i][0]=b[3][i];
c[i][1]='\0';
} // 세번째 주소창
n=10000000;
for(i=0; i<8; i++) {
valu=valu+(atoi(c[i])*n);
n/=10;
} // 수치화
n=1;
while(valu!=0) {
res[3]=res[3]+ ((valu%10)*n);
n=n*2;
valu/=10;
} // 세번째 주소
printf("%d.%d.%d.%d\n",res[0],res[1],res[2],res[3]);
return 0;
}
추천자료
- c프로그래밍
- Visual C++6.0으로 배우는 C언어 제1부-변수와 연산자(1/7)
- Visual C++6.0으로 배우는 C언어 제1부-함수(2/7)
- 인터넷 리포트
- 자료구조 이중 원형 링크드 리스트 의 구현
- 자료구조 링크드 리스트로 구현한 다항식의 합
- C언어 프로그래밍에 관한 기초적인 이해
- 1차원 배열을 2차원 배열로 만드는 프로그램
- opengl과 mfc를 연동한 3D 자동차 시뮬레이션 프로그램
- Visual C++을 이용한 CRC구현
- Objective C 기초
- Simplex Method
- 요구사항에 맞춘 차량 연비 구하는 프로그램
- C# 명함관리 프로그램 (C#(WinForm), ibatis.net, log4net, MS SQL Server Compact 3.5 (파일...
소개글