220819 C언어#3, 앱인벤터#4

김혜진·2022년 8월 19일
0

C언어

목록 보기
3/13

C언어 #3

함수 : 기능을 가진 단위 모듈
C언어는 함수로 구성된 언어라고 해도 무방할 정도이다.

CPU가 연산을 하기 위해서는 메모리(프로세스)에 올라가야한다.
변수들은 메모리에 올라가는 데이터들이다.

사용자로부터 데이터 입력

scanf

입력함수
사용자로부터 데이터를 입력받을 시 사용하는 함수는 scanf이다.
scanf("서식 문자열", &변수 ...);

scanf("%d" (서식만 사용) ,&input (변수명 앞에 &표기));
=> 정수형의 형태로 입력을 받겠다.

키보드의 A입력을 받으면 메인보드에서 운영체제(OS)로, 운영체제에서 프로그램으로 입력값을 전달한다.
그리고 프로그램에서 scanf를 사용한다.

f
format의 약자

void
타입이 없다.
리턴 타입이 없다. return 0 생략가능

#include<stdio.h>

void main() {
	int input = 0;
	scanf_s("%d", &input);

	printf("입력한 수는 : %d\n", input);
}

출력결과 (3 입력 시) 입력한 수는 : 3

&
scanf를 쓸 때 변수명 앞에 &를 꼭 넣어주어야 한다.


왜 써야할까?
&는 메모리를 참조한다는 의미이다.
주소연산자라고 부르며 주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환한다.


● 입력받은 수에 5를 곱한 값을 출력하기

#include<stdio.h>

void main() {
	int input = 0;
	scanf_s("%d", &input);

	printf("입력한 수는 : %d\n", input * 5);
}

출력결과 (5 입력 시) 입력한 수는 : 25

● 두 정수 입력받기

#include<stdio.h>

int main(void) {
	int input1, input2;
	int total;
	
	/*printf("첫 번째 정수를 입력하세요 : ");
	scanf_s("%d", &input1);
	printf("두 번째 정수를 입력하세요 : ");
	scanf_s("%d", &input2);*/

	printf("두 개의 정수를 입력하세요: ");
	scanf_s("%d%d", &input1, &input2);
	
	total = input1 + input2;
	printf("두 수의 합은 %d이다.\n", total);
	
	return 0;
}

출력결과
(10, 20 입력 시)
두 개의 정수를 입력하세요: 10 20
두 수의 합은 30이다.

입력값은 엔터 혹은 스페이스로 구분할 수 있다.

● 알파벳을 입력받아 정수로 표현하기

#include<stdio.h>

int main(void) {
	char ch = 0;
	scanf_s("%c", &ch);
	printf("%d\n", ch);

	return 0;
}

출력결과 (A 입력 시) 65

아스키코드
A가 65, B가 66, C가 67... 1바이트씩 증가한다.

char
1바이트 메모리를 할당하겠다는 의미


연산자

  • 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해내는 것

    • 데이터(정보)는 의미가 있어야 함.
      연산자를 통해서 새로운 의미를 가진 데이터를 창출해낸다는 의미
  • 예를 들어 학생들 과목당 성적 데이터는 그 자체로 의미가 있다.

  • 총점 및 평균을 데이터화 해야 그 의미가 있다.

의미있는 데이터를 만드는 과정!

연산자들의 종류

  • 산술 연산자 + - * / %
    산술 연산자는 사칙 연산이고, 일상생활에서 많이 쓰이기 때문에 어려움이 없다.
#include<stdio.h>

int main(void) {
	int a = 5;
	int b = 3;

	printf("두 수의 합은 %d입니다.\n", a + b);
	printf("두 수의 차는 %d입니다.\n", a - b);
	printf("두 수의 곱은 %d입니다.\n", a * b);
	printf("두 수의 나누기는 %d입니다.\n", a / b);
	printf("두 수의 나머지는 %d입니다.\n", a % b);

	return 0;
}

출력결과
두 수의 합은 8입니다.
두 수의 차는 2입니다.
두 수의 곱은 15입니다.
두 수의 나누기는 1입니다.
두 수의 나머지는 2입니다.

  • 대입 연산자 = += -= /= %=
    • 대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입하는 역할을 한다.
    • 대입 연산자와 산술 연산자를 혼용해서 사용하기도 한다.
#include<stdio.h>

int main(void) {
	int a = 5;
	int b = 3;

	a += b;
	printf("a += b의 결과는 %d입니다.\n", a);
	a -= b;
	printf("a -= b의 결과는 %d입니다.\n", a);
	a *= b;
	printf("a *= b의 결과는 %d입니다.\n", a);
	a /= b;
	printf("a /= b의 결과는 %d입니다.\n", a);
	a %= b;
	printf("a %= b의 결과는 %d입니다.\n", a);

	return 0;
}

출력결과
a += b의 결과는 8입니다.
a -= b의 결과는 5입니다.
a *= b의 결과는 15입니다.
a /= b의 결과는 5입니다.
a %= b의 결과는 2입니다.

참고
콘솔 창에 %가 출력이 안된다면 하나 더 추가하기
printf("a %%= b의 결과는 %d입니다.\n", a);

  • 부호 연산자 + -
  • 증감 연산자 ++ --
    증감 연산자는 증가 연산자와 감소 연산자의 줄임말이다.
#include<stdio.h>

int main(void) {
	int a;
	int b;

	a = 5;
	printf("++a의 처리 결과: %d\n", ++a);

	a = 5;
	printf("a++의 처리 결과: %d\n", a++);
	printf("a를 다시 출력: %d\n\n", a);

	b = 10;
	printf("--b의 처리 결과: %d\n", --b);

	b = 10;
	printf("b--의 처리 결과: %d\n", b--);
	printf("b를 다시 출력: %d\n", b);

	return 0;
}

출력결과
++a의 처리 결과: 6
a++의 처리 결과: 5
a를 다시 출력: 6

--b의 처리 결과: 9
b--의 처리 결과: 10
b를 다시 출력: 9

++a는 바로 연산이 실행되고, a++는 다음 라인으로 넘어가기 바로 직전에 연산이 실행된다.

  • 관계 연산자 == != < > <= >=
    관계 연산자는 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지, 어느 쪽이 큰지 작은지 비교하는 연산자이다.
#include<stdio.h>

void main(void) {
	int a = 10;
	int b = 11;
	int c = 12;
	int d = 10;

	printf("a == b의 결과는 : %d\n", a == b);
	printf("a < b의 결과는 : %d\n", a < b);
	printf("a > c의 결과는 : %d\n", a >= c);
	printf("a == d의 결과는 : %d\n", a == d);
}

출력결과
a == b의 결과는 : 0
a < b의 결과는 : 1
a > c의 결과는 : 0
a == d의 결과는 : 1

true(1) false(0)를 반환

  • 논리 연산자 || && !
    두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.
#include<stdio.h>

int main(void) {
	int a = 10;
	int b = 11;
	int c = 12;
	int d = 10;

	printf("%d\n", !(a == 10));
	printf("%d\n", (a < b) && (a < c));
	printf("%d\n", (a >= c) || (a == d));
	
	return 0;
}

출력결과
0
1
1

  • 비트 연산자 ! & >> << -

● 두 개의 정수를 입력받아 사칙연산 결과 출력하기

#include<stdio.h>

int main(void) {
	
	int a = 0;
	int b = 0;

	printf("두 개의 정수를 입력하세요: ");
	scanf_s("%d%d", &a, &b);

	printf("두 수의 합: %d\n", a + b);
	printf("두 수의 차: %d\n", a - b);
	printf("두 수의 곱: %d\n", a * b);
	printf("두 수의 나누기: %d\n", a / b);

	return 0;
}

결과 출력 (4, 2 입력 시)
두 개의 정수를 입력하세요: 4 2
두 수의 합: 6
두 수의 차: 2
두 수의 곱: 8
두 수의 나누기: 2

● 세 개의 정수를 입력받아 곱한 결과 출력하기

#include<stdio.h>

int main(void) {

	int a = 0;
	int b = 0;
	int c = 0;

	printf("세 개의 정수를 입력하세요: ");
	scanf_s("%d%d%d", &a, &b, &c);

	printf("세 수의 곱은 %d입니다.\n", a * b * c);

	return 0;
}

출력결과 (2, 3, 4 입력 시)
세 개의 정수를 입력하세요: 2 3 4
세 수의 곱은 24입니다.

빌드 시 에러가 났을 때는 보기>오류 목록 참고

● 세 개의 정수를 입력받아 곱하기, 더하기 연산 결과 출력하기

#include<stdio.h>

int main(void) {

	int a = 0;
	int b = 0;
	int c = 0;

	printf("세 개의 정수를 입력하세요: ");
	scanf_s("%d%d%d", &a, &b, &c);

	printf("%d * %d + %d = %d\n", a, b, c, a * b + c);

	return 0;
}

출력결과 (2, 3, 4 입력 시)
세 개의 정수를 입력하세요: 2 3 4
2 * 3 + 4 = 10

● 세 개의 정수를 입력받아 합과 평균 출력하기

#include<stdio.h>

int main(void) {

	int a = 0;
	int b = 0;
	int c = 0;

	printf("세 개의 정수를 입력하세요: ");
	scanf_s("%d%d%d", &a, &b, &c);

	printf("합: %d\n", a + b + c);
	printf("평균: %d\n", (a + b + c)/3 );

	return 0;
}

출력결과 (2, 3, 4 입력 시)
세 개의 정수를 입력하세요: 2 3 4
합: 9
평균: 3

합과 평균을 변수에 담아 출력하는 것도 하나의 방법이다.


조건문

조건이란?

어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요 소

if문

  • if문의 기본 원리
if(수행 조건) {
	수행하고 싶은 일
}
#include<stdio.h>

int main(void) {
	int a;

	printf("정수를 입력하세요: ");
	scanf_s("%d", &a);

	if (a > 5) {
		printf("입력 값은 5보다 큽니다.\n");
	}
	if (a < 5) {
		printf("입력 값은 5보다 작습니다.\n");
	}
	if (a == 5) {
		printf("입력 값은 5와 같습니다.\n");
	}

	return 0;
}

출력결과 (6 입력 시)
정수를 입력하세요: 6
입력 값은 5보다 큽니다.


앱인벤터 #4

미니 그림판 만들기

  • 디자인

  • 블록

profile
알고 쓰자!

0개의 댓글