프로그래머스 데브코스 웹 풀사이클 11주차 2일차

geun·2024년 1월 22일
0

데브코스

목록 보기
35/79
post-thumbnail

C언어 기초 배우기

연산자

연산자란 정적인 데이터들을 유기적으로 행동하게 하여, 새로운 가치를 창출해낸다.

산술 연산자

  • + : 왼쪽과 오른쪽의 값을 더한다
  • - : 왼쪽과 오른쪽의 값을 뺀다
  • * : 왼쪽과 오른쪽의 값을 곱한다
  • / : 왼쪽의 값을 오른쪽의 값으로 나눈다
  • % : 왼쪽의 값을 오른쪽의 값으로 나눈 나머지를 반환한다

대입 연산자( = )

대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입한다.
대입 연산자와 산술 연산자를 혼용해서 사용하기도 한다.

증감 연산자

증감 연산자는 증가,감소 연산자의 줄임말이다.
ex) a++, ++a, a--, --a
++과 --의 위치에 따라 의미가 달라지는데, ++,--가 앞에있으면 증감 시킨후 연산을 진행하고, 뒤에 있으면 연산을 진행한 후 증감시킨다.

#include <stdio.h>

int main()
#include <stdio.h>

int main()
{
    int a=5;
    int b=10;
    
    printf("%d\n", ++a);
    printf("%d\n", a++);
    
    printf("%d\n", b--);
    printf("%d\n", --b);
    
    return 0;
}

출력

6
6
10
8

관계 연산자

관계 연산자는 두 개의 피연사자들의 관계를 비교하여 참이면 true(1), 거짓이면 false(0)를 반환한다.

  • == : 두 값이 같다.
  • != : 두 값이 같지 않다.
  • > : 왼쪽의 값이 오른쪽 값보다 크다
  • < : 왼쪽의 값이 오른쪽 값보다 작다
  • >= : 왼쪽의 값이 오른쪽 값보다 크거나 같다
  • <= : 왼쪽의 값이 오른쪽 값보다 작거나 같다

논리 연산자

! : 피 연산자의 결과를 반대로 만든다
&& : and연산자로, 두 피 연산자가 모두 참이면 true 그 외에는 모두 false를 반환한다
|| : or연산자로, 두 피 연산자가 모두 거짓이면 false 그 외에는 모두 true를 반환한다

연습문제

  1. 사용자로부터 3개의 정수를 입력받아서, 3개의 수를 곱한 결과를 출력하라.
#include <stdio.h>

int main()
{
    int num1;
    int num2;
    int num3;
    
    printf("세 개의 정수를 입력하세요 : ");
    scanf("%d %d %d", &num1, &num2, &num3);
    printf("세 수의 곱은 %d입니다.",num1*num2*num3);
    return 0;
}

출력

세 개의 정수를 입력하세요 : 2 3 4
세 수의 곱은 24입니다.
  1. 사용자로부터 3개의 정수를 입력 받는다. 입력한 세 정수의 합과 평균을 출력하는 프로그램을 작성하라.
#include <stdio.h>

int main()
{
    int num1;
    int num2;
    int num3;
    
    printf("세 개의 정수를 입력하세요 : ");
    scanf("%d %d %d", &num1, &num2, &num3);
    printf("세 수의 합은 %d, 평균은 %d 입니다.",num1+num2+num3,(num1+num2+num3)/3);
    return 0;
}

분기문

분기문이란 조건에 따라 실행 하거나, 실행시키지 않게 한다

if문

if(내용1) {
	내용1이 true(1)일 때, 실행할 코드
}

if(내용2) {
	내용2가 true(1)일 때, 실행할 코드
}

if(내용3) {
	내용3이 true(1)일 때, 실행할 코드
}

다음 코드에서 내용이 true(1)이면 안의 코드를 실행시키고, false(0)이면 실행시키지 않는다.

if-else문

if문만을 연속해서 사용하면, false일때의 실행하고 싶은 코드를 실행할 수 없다.

if(내용) {
	if의 내용이 true(1)일 떄, 실행할 코드
} else{
	if의 내용이 false(0)일 때, 실행할 코드
}

연습문제

  1. 사용자로부터 하나의 정수를 입력 받는다. 입력한 값이 짝수이면 출력 결과로 "입력한 수는 짝수입니다." 라는 문자열을 출력하고, 입력한 값이 홀수이면 출력 결과로 "입력한 값은 홀수입니다." 라는 문자열을 출력하라.
#include <stdio.h>

int main()
{
    int number;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &number);
    if(number%2==0){
        printf("입력한 수는 짝수입니다.");
    } else {
        printf("입력한 수는 홀수입니다.");
    }
    return 0;
}

출력(홀수일 때)

정수를 입력하세요 : 5
입력한 수는 홀수입니다.

출력(짝수일 때)

정수를 입력하세요 : 4
입력한 수는 짝수입니다.
  1. 사용자로부터 세 개의 정수를 입력 받는다. 입력 받은 세 개의 정수를 비교하여 그 중 가장 작은 최소값을 출력하는 프로그램을 작성하라.
#include <stdio.h>

int main()
{
    int num1;
    int num2;
    int num3;
    
    printf("세 개의 정수를 입력하세요 : ");
    scanf("%d %d %d", &num1, &num2, &num3);
    
    if(num1 <= num2 && num1 <= num3){
        min = num1;
    }
    else if(num2 <= num1 && num2 <= num3){
        min = num2;
    } 
    else {
        min = num3;
    }
    
    printf("최소값은 %d 입니다.", min);
    return 0;
}

출력

세 개의 정수를 입력하세요 : 1 2 3
최소값은 1 입니다.

if-else if문

if문만을 연속해서 사용하면, 불필요한 연산을 계속하게 된다. 이를 해결하기 위해 if-else if문을 사용한다.

if(내용) {
	if의 내용1이 true(1)일 떄, 실행할 코드
} else if(내용2) {
	if의 내용1이 false(0)이고, 내용2가 true(1)일 때, 실행할 코드
} else {
	내용1,2가 모두 거짓일 때 실행할 코드.
}

연습문제

  1. 사용자로부터 점수값을 입력 받는다. 점수값은 정수이다. 점수값이 60점 이상이면 "합격입니다."를 출력하고, 60점 미만이면 "불합격입니다."를 출력하라.
#include <stdio.h>

int main()
{
    int score;
    
    printf("점수를 입력하세요 : ");
    scanf("%d", &score);
    
    if(score >= 60){
        printf("합격입니다.");
    } else {
        printf("불합격입니다.");
    }
	return 0;
}
  1. 사용자로부터 나이를 입력받는다. 나이는 정수이다. 나이의 값이 13세 미만이면 "어린이입니다."를 출력하고, 13세 이상 19세 미만이면 "청소년입니다."를 19세 이상이면 "성인입니다."를 출력하라.
#include <stdio.h>

int main()
{
    int age;
    
    printf("나이를 입력하세요 : ");
    scanf("%d", &age);
    
    if(age <13){
        printf("어린이입니다.");
    } else if(age >= 13 && age < 19){
        printf("청소년입니다.");
    } else {
        printf("성인입니다.");
    }
    
    return 0;
}
  1. 사용자로부터 char형으로 문자 한개를 입력받는다. 문자는 'y'또는 'n'둘 중에 하나의 문자를 입력한다. 만약 입력한 값이 'y'라면, "네, 드라이브를 포멧하겠습니다."를 출력하고, 입력한 값이 'n'이라면 "아니오, 드라이브를 포멧하지 않겠습니다."를 출력하시오
#include <stdio.h>

int main()
{
    char c;
    
    printf("정말로 이 드라이브를 포멧하시겠습니까?(y/n) ");
    scanf("%c", &c);
    
    if(c =='y') {
        printf("네, 드라이브를 포멧하겠습니다.");
    } else if(c=='n') {
        printf("아니오, 드라이브를 포멧하지 않겠습니다.");
    } 
    
    return 0;
}
  1. 사용자로부터 성적 점수인 정수 값을 한 개 입력받아 그 값에 대한 학점을 표현하는 프로그램을 작성하라. 예를 들어 100~91점은 A학점, 90~81점은 B학점, 80~71점은 C학점, 70~61점은 D학점, 60점 이하는 F학점으로 표시한다. 단, 입력하는 수의 범위는 0부터 100사이다.
#include <stdio.h>

int main()
{   
    int score;
    char grade;
    
    printf("점수를 입력해주세요 : ");
    scanf("%d", &score);
    
    if(score > 90){
        grade = 'A';
    } else if(score <= 90 && score > 80){
        grade = 'B';
    } else if(score <= 80 && score > 70){
        grade = 'C';
    } else if(score <= 70 && score > 60){
        grade = 'D';
    } else {
        grade = 'F';
    }
    
    printf("학점은 %c입니다.", grade);
    
    return 0;
}

반복문

while문

while(반복 조건) {
  반복 문장
}

반복 조건을 만족하는 동안 반복 문장을 반복하여 수행하고, 만족하지 않게 되면 while문을 빠져 나간다.

연습문제

  1. 사용자로부터 입력받은 숫자에 해당하는 단의 구구단을 출력하시오.
#include <stdio.h>

int main()
{   
    int number;
    int i = 1;
    printf("숫자를 입력하시오 : ");
    scanf("%d", &number);
    
    while(i < 10){
        printf("%d * %d = %d\n", number, i, number*i);
        i++;
    }
    
    return 0;
}
  1. 반복문을 사용하여 1부터 10까지의 합을 출력하라.
#include <stdio.h>

int main()
{   
    int i = 1;
    while(i <= 10){
        printf("%d\n",i);
        i++;
    }
    
    return 0;
}
  1. 반복문을 사용하여 1부터 사용자가 입력한 정수까지의 합을 출력하는 프로그램을 작성하라.
#include <stdio.h>

int main()
{   
    int number;
    int i = 1;
    printf("숫자를 입력하시오 : ");
    scanf("%d", &number);
    
    while(i <= number){
        printf("%d\n",i);
        i++;
    }
    
    return 0;
}
  1. 배터리를 충전중이다. 1부터 100까지 충전해야 하는데,현재 충전양을 표시하고, 100이 넘어가면 "충전이 완료되었습니다." 라고 출력하자.
#include <stdio.h>

int main()
{   
    int i = 1;
    while(i <= 100){
        printf("충전: %d\n",i);
        i++;
    }
    printf("충전이 완료되었습니다.");
    return 0;
}

이중 while문

while문을 중첩해서 사용하는 구조이다.

while(조건1) {
	조건 1동안 반복할 반복문
	while(조건2) {
    	조건2동안 반복할 반복문
    }
}
연습문제

1. 다음과 같이 출력하도록 프로그램을 작성하되 반드시 이중 while문을 사용하여 작성하여보자.
*
**
***
****
*****

```C
#include <stdio.h>

int main()
{   
    int i = 1;
    int j = 1;
    while(i <= 5){
        j=1;
        while(j <= i){
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }
    
    return 0;
}

무한루프 반복문

무한루프 반복문이란, 반복 수행이 무한하게 반복되는 반복문이다.
반복 조건이 어느순간 무너질 수 있도록, break나 return으로 빠져 나올수 있게 설계해야한다.

for문

for문은 조건식에 while문과는 다르게, 변수의 초기화 연산과 증감 연산이 추가된다.

for(초기문; 조건문; 증감문)
{
	반복 내용
}

0개의 댓글