cyphen156
Chapter2 과제 본문
개인 문제풀이임으로 오답이 있을 수 있습니다.
- 10진수를 거치지 않고 2진수 110010011000111100을 직접 16진수로 바꾸어 보라.
> 0011/0010/0110/0011/1100
> 3/2/6/3/C(12)
∴ 3263C - 10진수를 거치지 않고 16진수 B1A2EC9를 직접 4바이트 2진수로 바꾸어 보아라.
> B(11)/1/A(10)/2/E(14)/C(12)/9
> 1011/0001/1010/0010/1110/1100/1001
∴ 1011000110100010111011001001 - 8비트 연산에서 49 - 1을 2진 보수로 계산하고 결과가 옳은지 확인해 보라
> 49 - 1
> 49 + (-1)
> 32+16+1 + (-1)
> 00110001 - 00000001
> 00110001 + 11111111
> 1/0011/0000 = 00110000
∴ 제일 앞자리(9번 비트/MSB)는 부호비트이므로 떼어낸다. - 8비트 연산에서 127 + 1을 2진 보수로 계산하고 결과가 옳은지 확인하라.
> 127 + 1
> 64 + 32 + 16 + 8 + 4 + 2 + 1 + 1
> 01111111 + 00000001
∴ 10000000 - 18.375를 32비트 부동 소수 표현할 때 부호부, 지수부, 가수부의 값을 계산하라.
> 부호부 1비트 + 지수부 8비트 + 가수부 23비트
> 양수이므로 부호비트는 0, 18.375 = 10010.011⑵
> 0 1.0010011 X 2⁴
> 0(127) 10000011(127+4) 00100110000000000000000
∴ 최종 정답은 0/100000/1100100110000000000000000
아래 블로그들을 참고하여 작성하였습니다.
C/C++ - 32bit 부동소수점 표현을 해 봅시다(Floating point) : 네이버 블로그 (naver.com)
IEEE 754 표준 32비트 부동소수점 표현 (tistory.com) - 다음 문장을 화면에 출력하라.
'Consumer price' has increased by 1/10. It corresponds to 10%.
#include <stdio.h> int main() { printf("'Consumer price' has increased by 1 / 10. It corresponds to 10 % ."); return 0; }
- 실수를 입력받은 후에 형 변환 연산자를 써서 입력받은 값을 정수형으로 변환하여 출력하라.
> Enter a real number
> 88.99999(Enter)
> 88
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { float num; printf("Enter a real number\n"); scanf("%f", &num); printf("%d", (int)num); return 0; }
- scanf를 써서 영문 이름 이니셜(Initial)을 입력받고 다시 printf를 써서 그것을 화면에 출력하는 프로그램을 작성하라.
> OYT(Enter)
> Initials of your name are O, Y and T
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char ch1, ch2, ch3; printf("Enter a Your Initial\n"); scanf("%c%c%c", &ch1, &ch2, &ch3); printf("Initials of your name are %c, %c and %c", ch1, ch2, ch3); return 0; }
- printf 함수를 써서 자신의 한글 이름, 수강 목적, 희망 학점을 화면에 출력하는 프로그램을 작성하되 각각 줄을 바꾸어서 출력하라. 단, 반드시 형식 지정자를 사용해야 하며 이름과 목적은 문자열 형식(%s), 학점은 문자 형식(%c)으로 지정해야 한다.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char name[6], purpose[20], grade; printf("이름, 수강 목적, 희망 학점을 입력하시오.\n"); scanf("%s %s %c", &name, &purpose, &grade); printf("이름 : %s.\n", name); printf("수강 목적 : %s.\n", purpose); printf("희망 학점 : %c.\n", grade); return 0; }
- 아래 빝줄 부분에 코드를 삽입해서 아스키코드 표를 직접 화면에 찍어 보라. 단, 특수 문자나 공백 문자에 대해서는 이상한 문자가 나오거나 아무것도 보이지 않더라도 그대로 찍어야 한다.
#include <stdio.h> int main() { int i; for (i = 0; i <= 127; i++) { printf("%d\t", i); // 여기에 프린트 문으로 i 값을 찍고 탭을 삽입할 것 printf("%c\n", i); // 여기에 해당 문자를 찍고 줄을 바꿀 것 } return 0; }
//모든 예제 소스는 한빛 미디어홈페이지에서 찾으실 수 있습니다.
IT CookBook, 전공자를 위한 C 언어 프로그래밍 (hanbit.co.kr)
또는 cyphen156/Work-space: Studying (github.com)에서 찾으실 수 있습니다.
'프로그래밍 > C언어' 카테고리의 다른 글
Chapter3 과제 (0) | 2023.02.03 |
---|---|
Chapter3 변수와 상수, 대입문과 연산 (0) | 2023.02.01 |
Chapter2 C언어의 자료형과 표준 입출력 함수 (0) | 2023.01.04 |
Chapter1 과제 (0) | 2022.12.22 |
Chapter1 C언어와 컴파일러 (0) | 2022.12.22 |