C/C++ 기초 강의 요약 (섹션1)
VS Code를 사용하였습니다.
#include <stdio.h>
int main(){
printf("Hello, World! \n");
}
stdio.h 표준 입출력 라이브러리. 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함된 헤더 파일
main() 한 프로젝트에서 한 번만 등장해야하는 함수. 제일 먼저 실행된다.
printf stdio.h(표준 입출력 라이브러리)에 포함되어 있는 출력함수, 괄호 안의 문자열을 출력한다.
\n 줄바꿈을 명령하는 우리들만의 약속이랄까..
#include <stdio.h>
int main(){
printf("동해물과 백두산이\n마르고\n닳도록");
return 0;
}
#include <stdio.h>
int main(){
printf("동해물과 백두산이 \n");
printf("마르고\n");
printf("닳도록\n");
return 0;
}
" 동해물과 백두산이
마르고
닳도록 "을 두가지 방법으로 출력하고 있다. 위의 코드처럼 하나의 printf 함수 내에 \n을 사용하여 3줄을 한 번에 출력할 수도 있고, 밑의 코드처럼 한 줄마다 한 개의 printf 함수를 사용하여 출력할 수도 있다. 결과는 같은 것을 확인할 수 있었다.
#include <stdio.h>
int main(){
//%d: 정수출력 {1,2,...}
printf("%d + %d = %d\n", 2, 3, 5);
// %f: 실수 출력 {3.14}
printf("%f\n", 3.14);
printf("%.2f\n", 3.141592); // %f는 소수점 6자리까지 출력, %.2f는 소수점 2째자리까지, 반올림해서 출력
// %g: 실수 출력(지수 형태로도 출력)
printf("%g\n", 3.141592);
printf("%.3g\n", 8723984712.1283746872);
// %c : 문자출력 (알파벳, 숫자, 몇몇 기호, \n )- 한글, 한자, 유니코드X
printf("%c %c %c\n", 'a','b','c');
// %s : 문자열 출력 (문자들이 열거)
printf("%s\n", "안녕하세요");
}
printf 함수의 괄호 안 " "에 %d, %f, %g, %c, %s 등을 넣어 다양한 데이터 출력이 가능하다.
%d : 정수를 출력한다.
%f : 실수를 출력한다. 기본으로 소수점 6자리까지 출력이 되며, 소수점 몇째자리까지 출력할 것인지에 따라 %.2f %.3f %.4f 등을 사용할 수 있다.
%g : 실수를 출력한다. 3.141592를 출력할때는 %f와 다르지 않다. 하지만 숫자가 8723984712.1283746872가 되면 지수로 출력을 해주는 똑똑한 아이다.
%c : 문자를 출력한다. (알파벳, 숫자, 몇몇 기호 etc)- 한글, 일본어, 한자, 유니코드 X
%s : 문자열을 출력한다. (문장들이 열거 -> 문장)
변수 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간
#include <stdio.h>
int main(){
int a; // 선언
a=3; //대입
printf("%d\n", a);
a=5;//대입
printf("%d\n", a);
}
int a로 a 라는 변수를 선언(a라는 이름으로 4바이트 크기의 공간 마련해!)했다.
a=3로 윗줄에서 마련한4바이트 크기의 a라는 공간에 숫자 3을 대입했다.
printf("%d\n",a)로 a의 값을 출력했다. 출력된 값은 3이다.
a=5로 좀 전에 선언하고 값까지 대입한 a라는 변수에 숫자 3 대신 숫자 5를 대입했다. 이제 변수 a 에는 숫자 3이 아닌 숫자 5가 들어가있다.
printf("%d\n", a) 아까 위의 코드와 같지만 출력값은 3이 아닌 5이다.
#include <stdio.h>
int main(){
int a=2;//초기화
int b=3;
printf("%d + %d = %d\n",a,b,a+b);
//변수 이름: 알파벳, 대소문자, _, 숫자(첫번째 X)
}
a 값과 b값의 합을 출력하는 프로그램이다.
평소에는 %d에 하나의 변수를 대응해 출력시킨 것과 달리, 위 프로그램에서는 3번째 %d에 a+b의 값을 대응시켰다.
출력값은 2 + 3 = 5 가 될 것이다.
#include <stdio.h>
int main(){
//정수형
printf("%d", sizeof(char)); //char의 크기
printf("%d", sizeof(short); //short의 크기
printf("%d", sizeof(long)); //long의 크기
printf("%d", sizeof(long long)); //long long의 크기
printf("%d", sizeof(int)); //int의 크기
//실수형
printf("%d", sizeof(float)); //float의 크기
printf("%d", sizeof(double)); //double의 크기
}
8비트는 1바이트다.
바이트 컴퓨터의 저장 단위. 컴퓨터가 조작하는 정보의 최소 처리 단위.
<정수형>
char(1바이트)-문자를 담는 데 사용
short(2바이트)
long(4바이트)
long long(8바이트)
int(시스템에 따라서 자동결정, 대체로 long)
<실수형>
float(4바이트)
double(8바이트)
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d", &a,&b);//&:포인터
int hap=a+b;
int cha=a-b;
int gop=a*b;
int mok=a/b;
printf("%d + %d = %d\n",a,b,hap);
printf("%d - %d = %d\n",a,b,cha);
printf("%d * %d = %d\n",a,b,gop);
printf("%d / %d = %d\n",a,b,mok);
}
scanf stdio.h(표준 입출력 라이브러리)에 포함되어 있는 입력함수, 사용자의 입력값을 받는다.
printf함수로 정수 출력하는 형태와 비슷하지만, scanf 함수는 입력된 값을 대입할 변수 이름 앞에 &을 붙여주어야한다.
#include <stdio.h>
int main(){
float a,b;
scanf("%f%f", &a,&b);//&:포인터
float hap=a+b;
float cha=a-b;
float gop=a*b;
float mok=a/b;
printf("%f + %f = %f\n",a,b,hap);
printf("%f - %f = %f\n",a,b,cha);
printf("%f * %f = %f\n",a,b,gop);
printf("%f / %f = %f\n",a,b,mok);
}
위의 소스코드와 같은 기능을 가진 프로그램이지만, 정수 계산만 가능했던 위의 코드와 달리 %f를 사용함으로써 실수를 입력 및 출력이 가능했고, float으로 변수를 선언함으로써 실수 값을 가질 수 있었다.
#include <stdio.h>
int main(){
char a;
printf("문자 입력: ");
scanf("%c", &a);
printf("%c의 ASCII 값 : %d\n",a,a );
}
ASCII CODE 초창기에는 다양한 방법으로 문자를 표현했지만, 호환 문제가 생겼고 이런 문제를 해결하기 위해ANSI1)에서ASCII(American Standard Code for Information Interchange)라는 표준 코드 체계를 제시했고, 현재 이 코드가 일반적으로 사용되고 있다.
a라는 변수에 문자를 사용자로부터 입력받아 그 문자의 ASCII 값을 출력하는 프로그램이다.
#include <stdio.h>
int main(){
int a;
printf("숫자 입력: ");
scanf("%d", &a);
printf("%d의 ASCII 문자 : %c\n",a,a );
}
위 프로그램을 반대로 바꿔본 것이다.
문자를 입력하면 그 문자에 해당하는 아스키코드 값을 출력한 위의 코드와 달리 숫자를 입력하면 그 숫자가 아스키코드인 문자를 출력한다.
데이터형 | 데이터 크기 | 범위 | |
정수형 | byte | 1byte(8bit) | -2^8 ~ 2^8-1 |
short | 2byte(16bit) | -2^16 ~ 2^16-1 | |
int | 4byte(32bit) | -2^32 ~ 2^32-1 | |
long | 8byte(64bit) | -2^64 ~ 2^64-1 | |
실수형 | float | 4byte(32bit) | -2^32 ~ 2^32-1 |
double | 8byte(64bit) | -2^64 ~ 2^64-1 | |
논리형 | boolean | 1byte(8bit) | -2^8 ~ 2^8-1 |
문자형 | char | 1byte(8bit) | true or false |
양수 부분에서 -1한 이유는 0을 포함하고 있기 때문이다.
signed와 unsigned
바이트 맨 앞에 부호를 담당하는 비트가 있는데 위의 데이터 타입들은 모두 signed(음수와 양수 모두 범위에 포함)이고 부호를 표시하기 위해 맨 앞 비트를 포기한다. 부호를 표기할 필요가 없는 데이터들이 쓰인다면 굳이 맨 앞 비트를 포기할 필요가 없다. 그래서 나온게 unsigned!
종합문제
1.두 숫자를 입력받아서 그 숫자들의 합을 출력하는 프로그램을 만들어 보세요.
#include <stdio.h>
int main(){
int val1=0,val2=0;//두 변수 선언 및 0으로 초기화
printf("두 숫자를 입력하새요. 두 숫자 사이에는 공백이 필요합니다:)\n");
printf(">");
scanf("%d %d", &val1, &val2);
printf("%d + %d = %d", val1, val2, val1+val2);
}
2.체중(kg, 실수)과 키(m, 실수)를 입력받아서 체질량 지수를 구하는 프로그램을 만들어 보세요.
BMI 지수=몸무게 / 키^2
#include <stdio.h>
int main(){
float weight=0, height=0;
char name[45];
printf("체중은 kg 단위, 신장는 m 단위로! 소수점까지 입력 가능합니다 \n");
printf("이름 체중 신장를 차례대로 입력해주세요!\n");
printf(">");
scanf("%s %f %f",name,&weight, &height);
printf("\n\n 체중 %f kg 신장 %f m 라고 입력해주셨는데요!\n %s님의 BMI지수는 %f입니다 :)\n", weight, height, name, weight/height/height );
return 0;
}
3.알파벳을 입력 받아서 그 다음 알파벳을 출력하는 프로그램을 만들어 보세요. (z제외)
#include <stdio.h>
int main(){
char alphabet;//알파벳 입력받을 character 변수
printf("알파벳을 입력하세요 *Z제외* \n");
printf(">");
scanf("%c", &alphabet);
if(alphabet=='z'||alphabet=='Z'){
printf("z 또는 Z는 안됩니당 :)\n");
return 0;
}
int next_alphabet=alphabet+1;
printf("%c \n", next_alphabet);
return 0;
}
댓글
이 글 공유하기
다른 글
-
C/C++ 기초 강의 요약 (섹션7)
C/C++ 기초 강의 요약 (섹션7)
2020.03.27 -
C/C++ 기초 강의 요약 (섹션4)
C/C++ 기초 강의 요약 (섹션4)
2020.03.27 -
C/C++ 기초 강의 요약 (섹션3)
C/C++ 기초 강의 요약 (섹션3)
2020.03.27 -
C/C++ 기초 강의 요약 (섹션2)
C/C++ 기초 강의 요약 (섹션2)
2020.03.27