전체 글 82

4장

C의 특징:  명령문 보다는 표현식 ( 수식) 에 중점을 둠 변수 : 프로그램 실행될 때 계산될 값상수 : 변하지 않는 값 산술연산자% 빼고는 혼합가능 1. int float 혼합 : foat2. 둘다 정수일때 / 를 하면 소수는 버림3. % : 둘다 정수여야함4.(c99) 나눗셈 ' / ' 의 결과는 0을 향해 버려짐  5. i % j의 값은 i와 같은 부호를 가짐 (첫번째 변수의 부호)  implementation-definedc standarad 는 의도적으로 일부분을 명시안한채로 둠 > sw 가 채움> 구현마다 프로그램동작이 달라짐언어의 목표는 효율성 = 하드웨어 동작과 일치해야함의존x + 정의된 구현은 문서화 되어야함, > 하드웨어 동작과의 일치를 통한 효율성을 끌어올리기 위해 일부분을 구현하지..

C언어/C - knk 2024.11.16

ACR 레퍼런스 메뉴얼

데이터시트 분석 > 1. 레퍼런스 메뉴얼에서 검색 ex) ACR //reseverd 는 예약된곳 사용x 2. 설명하는거 나오면 복사  The FLASH_ACR register is used to enadble/disable prefetch and half cycle access, and to control the Flash memory access time according to the CPU frequency.  The tables below provide the bit map and bit descriptions for this register 3. 일단 번역한번 해봄  FLASH_ACR 레지스터는 프리페치(prefetch)와 하프 사이클 접근을 활성화/비활성화하고, CPU 주파수에 따라 플래시 메모..

HAL_Init();

startup 코드(asm) 를 거쳐 main.c 로옴 #define asd \( \ : 다음줄까지도 이어짐) 디버깅할때 if define 안에 안들어오면 회색배경으로 바뀜 > ide의 편리성  (FLASH->ACR |= FLASH_ACR_PRFTBE)typedef struct {   __IO uint32_t ACR;   __IO uint32_t KEYR;   __IO uint32_t OPTKEYR;   __IO uint32_t SR;   __IO uint32_t CR;   __IO uint32_t AR;   __IO uint32_t RESERVED;   __IO uint32_t OBR;   __IO uint32_t WRPR; } FLASH_TypeDef; 1. 하나하나 찾기 #define FLASH (..

printf, scanf

printf문자열과 문자열에 지정된 값 을 출력하도록 설계 >> 그래서  " " (큰 따음표)로 묶어준거였음 char h[] = "hello";printf(h);printf (문자열, 표현식₁, 표현식₂, ...) ;  변환지정자 % : 값을 내부 형식(이진수)에서 출력 형식(문자)으로 변환하는 방법을 지정ex) %d : 2진수를 10진수 문자열로 바꿔라  일반형 : %m.pX or %-m.pX( m,p 정수  ,X : 문자)// p 생략시 마침표도 사라짐 // m : 문자가 출력될 최소한의 수출력할 값이m보다 적다면 > 오른쪽 정렬 ( 공백이 들어감)// -m : 왼쪽정렬 %fex) %10.2f  %4d, 123 > 공백123%4d, 12345 > 12345 // m: 최소한의 수!%-4d, 123 :..

C언어/C - knk 2024.11.15

2738번, 2566번, 2563번, 2745번

2738 이차원 배열은 행 우선arr[3][4] : arr[0][0], arr[0][1], arr[0][2], arr[0][3], arr[1][0], arr[1][1], arr[1][2], arr[1][3]. arr[i][j] == *(arr[i] + j) arr[2][3]== *(arr[2] + 3)arr[2] == arr[2][0] 2566최대값을 찾으면 , i 와 j 배열 하나씩 더해주기 // 1행부터 시작이므로이차원 배열로 선언 > 일차원 for문으로 입력받으면..words[5][16] , for > words[i] : (입력) abcde   words[0][0] = 'a', words[0][1] = 'b', words[0][2] = 'c' ,, 이렇게 저장됨 주의)) col strlen(word..

C언어/백준 2024.11.14

25206번

조건 : 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다a. 아는값 : 학점, 모르는값 : 과목평점b. 과목평점은 등급으로 구할 수 있음 > strcmp    1. 과목 학점 등급 > for문으로 각각 받음2. strcmp(같으면 0 , 사전식 앞뒤 +,-) : 등급이 a+, a,, 이면 평점4.5, 4.0 리턴// 함수선언 double 3. 토탈 점수 += 학점 * 평점4. 토탈 학점 > 나눔 // return 0.0; P or F 과목 #include #include double get_grade_point(char grade[]) { if (strcmp(grade, "A+") == 0) return 4.5; if (strcmp(grade, "A0") == 0..

C언어/백준 2024.11.13

2941번 , 1316번

2941번1.한 문자씩 비교해서 맞는지 확인2. count ++3. if) 두글자, 세글자 이면 그게 한글자로 되므로       배열 i 를 ++, i= i+2 // i+=2 해주기 13161. 알파벳 배열과 이전 배열을 0으로 초기화2. 입력 문자가 이전 문자와 같지 않고 +3. 이미 나온 문자면 함수 종료 (return 0;) 4. 아니라면 알파벳 배열에 1로 초기화하고5. 이전문자가 아니면 현재 문자 저장 // char prev_char = '\0'; // == 0 배열 초기화방법// for 문안에 scanf 랑 그룹배열인지 확인하는 함수를 같이 둔다면 한 단어씩 끊을 수 있음// scanf : 입력할때마다 이전 단어가 아닌 새로운 단어로 덮어쓰여짐// alphabet[word[i] - 'a']  ..

C언어/백준 2024.11.13

10988번, 1157번

10988앞뒤가 똑같다. > 절반만 비교하면 됨홀수 : level > 시작 le , 끝 le만 비교하면됨짝수 : abba : 시작 ab , 끝 ab 만 비교하면됨>> strlen() / 2>> 끝: word[len - i - 1] ( 배열은 0부터 시작) // 정수 나누기에서 소수점은 버려짐, 5/2 = 2.5 > 2// 배열은 null 이 없음//  %s : 배열을 문자열로 취급함 > 자동으로 \0 (null) 추가 11571. 알파벳은 총 26개 > 배열 > 입력될때마다 ++ 1-2. 입력은 문자 , 배열은 숫자 >  freq[in_char - 'a']2. 배열이 max 보다 크면 max로 지정3. max 와 같다면 대문자로 지정  // 출력조건 >  result = i + 'A'; , result ..

C언어/백준 2024.11.13