안녕하세요. 오늘 주제에 앞 서서 이걸 보시면
정보처리기사 실기 접수 종료
2023.09.04.(월) 오전 10:00 부터
2023.09.07.(목) 오후 06:00 까지
??
먼저 영어부터 공부해야한다는게 개 억울하지만
Binary : 2진법의
Decimal : 10진법의
# 첫 글자 주목
Octamal :8진법의 (문어)
Hexadecimal: 16진법의 Hexa + decimal
일단 이거 보고 시나공의 C언어 예제 문제를 보시죠
#include <stdio.h> = 써놓고 시작하는 문장
C언어 #include의 의미
#include <stdio.h>
main()
{
int i, j;
scanf("%o#%x", &i, &j);
printf("%d %d", i, j);
}
// 15#22 입력됨
// 정답: 14 34
scanf("%o#%x", &i, &j);
scanf()는 C의 표준입력함수
"%o # %x"의 뜻:
#을 기준으로
첫 번째 입력값은 8진수로 받는다
두 번째 입력값은 16진수로 받는다
이를 차례대로 i와 j로 저장한다.
printf("%d %d", i, j);
받은걸 출력하는 창
%d는 decimal
다음 16진수로 22
두 번째 자리 2은 16이니까 16 * 2
첫 번째 자리 2는 그냥 2
32 + 2 = %d로 34.
그래서 답은 13 34이다
어우 길어라;;
그리고 16진법이면 9 다음에는 어떻게 적나요?
1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e
랍니다
e다음은 16이니까 자리가 넘어가구요
다음 제어문 예제
main () {
int score[] = {86, 53, 95, 76, 61};
char grade;
char str[] = "Rank";
for (int i = 0; i < 5; i++){
switch (score[i]/10) {
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
default: grade = 'F';
}
if (grade != 'F')
printf("%d is %c %s \n", i+1, grade, str);
}
} // %c 는 문자 %s는 문자열(Rank같은)
그래서 공부한 거, 풀어서 다시 써보자면
int score[] = {86, 53, 95, 76, 61};
score에 5개 int가 들어가 있음
char grade;
문자열을 넣어놓을 자리를 만들어놓기
char str[] = "Rank";
str이라는 배열에 R a n k를 하나씩 넣어 놓음
switch (score[i]/10) {
case 10:
case 9:
grade = 'A';
break;
switch문의 소괄호 안의 값을 case에 맞는 곳으로 이동
score[i]를 10으로 나눴을 때 9면 case9로 이동하고 이 switch문을 나가버림(break없을 때도 어떻게 해야하는 지 적을 꺼임)
조건문에서는 그냥 그 값이 True이면 조건문 안의 코드들을 실행
but, switch문은 약간 다르네
if (grade != 'F')
printf("%d is %c %s \n", i+1, grade, str);<br>score에 저장된 것 중 grade가 F가 아니라고 판별난 score를 printf의 형식으로 출력합니다.
그래서
%d = 10진수
%c = 문자(하나)
%s = 문자열
86 is B Rank;
이렇게 나온다는 것
\n은 줄바꿈이니까
86 is B Rank
(줄 바꾸고)
95 is A Rank
C언어 자료형 정리
int는 다 아는 integer로 정수 4byte
float은 당연히 실수 4byte
char는 character로 1byte 문자형
그 외
short int: -32768 ~ 32767 2byte
long int: -2147483648 ~ 217483647 4byte
double: 8byte
char는 ASCII코드로 감
아 글고
C에서 특이했던 것들
96 / 10 = 9.6이지만
C에서는
96 / 10 = 9 가 됨
그냥 소숫점은 사라지는 듯. (반올림 아님)
#include <stdio.h>
main () {
int c = 1;
switch (3) {
case 1 : c += 3;
case 2 : c++;
case 3 : c = 0;
case 4 : c += 3;
case 5 : c -= 10;
default: c--;
}
printf("%d", c);
}
// 답 -8
- 설명 *
switch가 3이면 바로
case 3으로 가세요
그럼 선언해놓은, 값이 1인 c가 0이 됨.
그리고 나서 break가 없잖아요?
그냥 그 이후 case4, 5 이후로로 끝까지 다 돌고 나온다는 점
그럼 c 값은 0 + 3 - 10
거기다가 default로 c-1하면
-8이 출력됩니다
java
그냥 default로 알아야 하는 거 같은 연산자부터 공부.
요 놈
문제 8
public class test
{
public static void main(String[] args){
int w = 3 , x = 4, y = 3, z = 5;
if((w==2 | w==y) & !(y>z) & (1 == x ^ y != z))
w = x + y;
if ( 7 == x ^ y != w)
System.out.println(w);
else
System.out.println(x);
}
else {
w = y + z;
if (7 == y ^ z != w)
System.out.println(w);
else
System.out.println(z);
}
}
}
- "( )" "[ ]" (괄호)
- ! ~ ++ -- (부정·증감)
- / + - (산술)
- << >>(비트 쉬프트 연산)
- ">=", "<=" 등(관계 연산)
- != ==
- & | ^ (비트 논리 연산)
- && || (논리 연산)
- ? (삼항 연산)
%d 10 & %d 5 의 답을 적으시오
*풀이*
0000 1010 과 0000 0101 답은 걍 0
13 | 18 의 답을 적으시오
*풀이*
0000 1101 과 0001 0010
이렇게 한 곳만 1이어도 다 1로 변환 됨. 그렇기 때문에 답은 1+2+4+8+16 = 31
15 ^ 5 의 답을 적으시오
*풀이*
0000 1111 과 0000 0101
이 놈은 둘 중에 한 곳만 1인 부분만 1로 하고 둘 다 0이든, 둘 다 1이면 0으로 변환
그렇기 때문에 답은 10
8bit의
이런 순서로 해야 한다는 점
0 | 1
0
0 ^ 1
1 1 1
1 & 1 & 1
이기 때문에 결과적으로 1 & 1 & 1은 당연히 비트 and 연산으로 1f로 나오기 때문에 if조건은 True가 된다.
w = x + y; //일단 w는 3+4 = 7.
if ( 7 == x ^ y != w)
System.out.println(w);
else
System.out.println(x);
}
// if 조건 안에서도
7 == x와 y != w 계산 후
^ 해야 한다는 점
w = 7
7 == x --> 0 (7 == 3(x값)??)
y != w --> 1 (3 != 7이니까)
0 ^ 1 이기 때문에 true인
System.out.println(w);
가 실행
그래서 답은
7
아 그리고 비트 연산 개 빡...
다음 문제)
문제 9
public class test {
public static void main(String args[]) {
int a=5, b=9, c;
c = b % 5 < 5 ? 1: 0;
** c = c | c << 3; ** // 바로 여기
c = a < 5 || c>= 10 ? c-a : c+a;
System.out.printf("%d", c);
}
}
// 답 14
c = b % 5 < 5 ? 1: 0;
--> 4 < 5 가 참일 때 1 거짓일 때 0
--> 그래서 c는 1이 되는데요..
c = c | c << 3;
--> 1 | (1 << 3) 이게 왜 9가 되는지 도통 이해가 안되는 상황.
--> 1 << 3 은 Binary로 1000이니까
--> 1 | 8 이면 둘 중에 하나만 참이니까 1이 아닌가 싶었는데
결과는 c = 9 랍니다.
그래서 아 그냥 1 이상의 int가 나오면 더해지는 가보다 하고 넘어가버리기
맞겠지?
진짜
어제 C랑 java 처음 공부하는내 심정
아무튼 정리하면서 복습 녹진하니 돼버렸으니
다시 ㄱㄱ 해야지
'아카이빙 > (구) 인사교 교육들과 정보처리기사' 카테고리의 다른 글
2023 인공지능사관학교 이미지처리 OpenCV, Tesseract (0) | 2024.11.22 |
---|---|
2023 인공지능사관학교 머신러닝과 비지도학습 써먹어보기 (27) | 2024.11.21 |
2023 인공지능사관학교 딥러닝 공부 (1) | 2024.11.18 |
2023 인공지능사관학교 안드로이드 intent (2) | 2024.11.18 |