[혼공C] 씨는 즐거워!

자경·2024년 7월 14일
0

혼공C

목록 보기
1/4
post-thumbnail

ref
이 블로그는 제가 중얼대며 공부하는 블로그입니다.
이상한 말에 대한 조언은 너무 감사합니다.


"full course"

  • 제어문자
  • 입출력 // printf함, puts() gets()
  • 변수
  • 예약어 식별자😍
  • #define _CRT_SECURE_NO_WARNINGS 106p
  • 연산자
  • c언어 사랑



C기본형 💖

#include <stdio.h> #전처리기

int main(){ #main 함수
printf("first C");
printf("%s","i love C");

return 0; #종료 
}

C는 헤더파일에 있는 일종의 지침서를 가지고 와서 실행한다.
그 헤더파일을 보고 소스파일의 명령어를 알잘딱해서 실행하는 것이조.

return 0은 main함수가 정수를 반환하는 것으로 명시되었기에 0을 반환
또한 0으로 리턴되며 OS에 정상종료를 한다.

현재는 생략이 가능한데 대부분 컴파일러에서 생략 가능
써도 안써도 괜찮은 상태!!

제어문자 모음집(escape sequence)

\n : 다음줄이동, 개행문자
\b : 출력 커서가 한 칸 왼쪽으로 이동
\r : 캐리지 리턴, 처음으로 이동
\a : 벨소리
\" : 출력시 "
\' : 출력시 '
\ : 출력시 \
\t : 커서를 탭만큼 옮긴다

등등.. 흥미로운 캐리지리턴


scanf()♥️printf(), gets()❤️puts()

#include <stdio.h>

int main(void){
	int n; //2입력가정 
	scanf("%d",&n); //& 무조건 작성
    printf("너가 입력한 수는 바로바로 짠짠 %d야!",n);
    
    int m; 
    gets(m); //3 입력가정
    puts(m);
    
}

위의 네 함수 모두 헤더파일 stdio.h에 위치한다.

scanf()는 주소 엑세스를 통해 입력을 하므로 &(주소연산자) 중요! , 토큰별 입력
printf()는 변환문자(%d..)를 사용하며 문자열로 변환하는 과정이 있다.

이외에도 변환 문자는

  • 실수형
    printf("%.1lf"); -> 1자리 까지 반올림
    • %lf (double)
    • %f (float)
  • 정수형
    printf("%10d"); -> 10칸을 확보
    • %d
  • 문자/문자열
    • %s(문자열) printf("%s",char[10]);
    • %c(character)

이외.. %p(주소)

gets()는 입력을 담당, &를 사용x , 한 줄을 기준으로 입력을 받는다.
puts()는 출력이며, 자동으로 줄바꿈을 한다


변수

int a=10;
'='는 대입연산자, 가장 늦게 적용된다.
a방에 10이 들어간 형태이며, 이때 a방의 데이터 타입은 int(정수)이기에 a방에는 정수인 것만 들어갈 수 있다.

데이타 타입

typebyte
char1byte
short2byte
int4byte
long4byte
long long8byte
float4byte
double8byte

컴파일러마다 크기가 다를 수도 있으니 sizeof()를 사용하여 확인 필수❤️



unsigned signed

(signed) int a = 10;
사실은 signed가 변수 선언 앞에 생략되어 있다.,

unsigned int a;로 선언한다면, int의 표현가능범위의 2배를 양수로 사용할 수 있다.

문자열 저장

String 데이터 타입이 없다.

-> char 배열명[문자열길이+1] = 문자열
-> chat array[6] = "apple";
ㄴ 마지막 인덱스는 null이 들어간다.ㅣ문자열의 끝은 null이 알린다.

실수형 특징

컴퓨터 실수 표현방식에 의해 오차가 나타난다.
float : 소수점 아래 7자리 유효
double : 소수점 아래 15자리 유효

정수형으로 바꾸는 습관은 좋다!


const

변수는 변하는 수 언제나 바꿀 수 있으나,
const(상수 constant)는 바꿀 수 없다.

const (자료형) (변수명) = 값; 으로사용


예약어& 식별자

예약어(reserved word/key word) : 컴파일러 속 사용방법이 약속된 단어
식별자(identifier) : 필요에 따라 만들어 쓰는 단어

식별자의 규칙

-알파벳대소, 숫자, _로 만듭니다.
-숫자로 시작X
-대소문자의 구분
-예약어는 식별자로 사용X


비정상 종료

char a[2];
scanf("%d",&a); //input : "constant"

문자열이 저장될 곳보다, 저장하는 내용이 크다.
프로그래머스에서는 core dumped하는 모습을 자주보고 눈물을 훔chin 나날들.

이외 gets, strcpy(복사복사) 사용 시 발생가능

VC++ 컴파일러에서는 위의 사태로 인한 비정상 종료 우려로인해 경고장을 보내곤한다.

그때 ' #define _CRT_SECURE_NO_WARNINGS'를 사용하면 경고장이 안날라온다. 함수 잘쓸테니까 에러 그만보내

연산자

a-b -> 피연산자 : a,b / 연산자 : -
a++ -> 피연산자 : a / 연산자 : ++
(a<b)? 1: 0; -> 피연산자 : (a<b),1,0 / 연산자 : ?, :

산술연산자: +,-
나누기 나머지: /,%
대입연산자: 오른쪽을 왼쪽에 저장 =
관계연산자: < <= > >= == !=
논리연산자: &&(and), ||(or), !(not)
-121p

!확인문제

  1. short 형과 long형위 자료형 크기를 비교해 크기가 큰 자료형이 무엇인지 출력하는 프로그램이 완성되도록 빈칸을 채우세요
#include <stdio.h>

int main(){
	int result;
    //sizeof 연산자 활용 
    if(sizeof(short)<sizeof(long))
    	printf("long");
    else
    	printf("short");
    
    return 0;
}

2. 야구경기장의 좌석 수가 70개이고, 입장객 수가 65명일 때, 입장률을 표시하는 프로그램이 완성되도록 빈칸을 채우세요.
#include <stdio.h>

int main(){
	
    int seats = 70;
    int audience = 65; 
    double rate = 65/70*100; //입장률 저장 변수 
    
    printf("%.1lf",rate);
}

3. 3.76시간은 몇 시간, 몇 분, 몇 초인지 출력하는 프로그램이 완성되도록 빈칸을 채우세요.
#include <stdio.h>

int main(){
	int hour, min, sec; 
    double time = 3.76;
    
    hour = (int)time;
    min = (int)(time-hour*60);
    sec = (min-(time-hour*60))*0.6;
}

도전 실전 예제 148p

체중(kg), 키(cm)를 입력해 BMI(신체질량지수)를 구한 후 BMI 값이 20.0이상 25.0 미만이면 "표준입니다"를 출력, 그렇지 않다면 "체중관리가 필요합니다."를 출력합니다.

BMI는 표준체중, 저체중, 과체중을 판별한느 수치로 몸무게를 키의 제곱으로 나누어 구합니다.

#include <stdio.h>

int main(){
	int ki,momm;
    printf("몸무게(kg)과 키(cm) 입력 : ");
    scanf("%d %d",&ki,&momm);
    
    double bmi = momm/(ki*ki);
    
    if(20.0<=bmi&&bmi<25.0)
    	printf("표준입니다.");
    else
    	printf("체중관리가 필요합니다.);
        
    return 0;
}



좋은 하루 보내세요

0개의 댓글