Information Security Lab

Research on penetration testing and information security

C & C++/Basic programming

C 언어) Ch02. C 언어 프로그램 구성

information-security-lab 2025. 3. 18. 02:29
목 차
Ⅰ. C 언어 프로그램의 구성
      1. 형식 지정자 필드 옵션 지정
      2. 변수값 입력받고 출력하기

Ⅱ. 프로젝트(원의 면적과 둘레 구하기)

Ⅲ. 연습 문제

Ⅳ. 프로그래밍 문제

Ⅰ. C 언어 프로그램의 구성

1. 형식 지정자 필드 옵션 지정

연구 1-1)

형식 지정자를 사용하여 아래와 같은 결과가 출력되도록 하는 프로그램을 작성하시오

 

// 결과

### 형식 지정자 적용 ###
12345678901234567890
         A
       123
  3.141593
     3.142
      Love

 

풀이)

#include <stdio.h>

int main(void) {
    printf("### 형식 지정자 적용 ###\n");
    printf("12345678901234567890\n");
    printf("%10c\n", 'A');
    printf("%10d\n", 123);
    printf("%10f\n", 3.141593);
    printf("%10.3f\n", 3.141593);
    printf("%10s\n", "Love");
        
    return 0;
}

 

 

 

2. 변수값 입력받고 출력하기

연구 2-1)

키보드로 정수 300, 문자 A, 실수 3.14를 입력받고 실행 결과가 아래와 같이 되도록 프로그램을 작성하시오

// 실행 결과

입력받은 정수 : 300
입력받은 문자 : A
입력받은 실수 : 3.14

 

풀이)

#include <stdio.h>

int main(void) {
    int i;
    char ch;
    float f;

    printf("정수 입력 : ");
    scanf("%d", &i);

    printf("문자 입력 : ");
    scanf("%c", &ch);

    printf("실수 입력 : ");
    scanf("%f", &f);

    printf("입력받은 정수 : %d", i);
    printf("입력받은 문자 : %c", ch);
    printf("입력받은 실수 : %.2f", f);
        
    return 0;
}

 

 


 

 

Ⅱ. 프로젝트(원의 면적과 둘레 구하기)

원의 반지름 7(단위 : cm)을 입력받아 원의 면적과 둘레를 계산하여 실행 결과가 아래와 같이 되도록 프로그램을 작성하시오

// 실행 결과

원의 면적 : [ 원의 면적 값 ]
원의 둘레 : [ 원의 둘레 값 ]

 

풀이)

// 내가 작성한 코드


#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    float pi = 3.14;
    int radius;

    printf("원의 반지름(cm 단위) : ");
    scanf("%d", &radius);

    float area = radius * radius * pi;
    float cir = radius * 2 * pi;

    printf("원의 면적 : %.2f\n", area);
    printf("원의 둘레 : %.2f\n", cir);

    return 0;
}



// 답지


#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    double radius, area, cir;

    printf("원의 반지름(cm 단위) : ");
    scanf("%lf", &radius);

    area = radius * radius * 3.14;
    cir = radius * 2 * 3.14;

    printf("원의 면적 : %.2lf\n", area);
    printf("원의 둘레 : %.2lf\n", cir);

    return 0;
}

 

 


 

 

Ⅲ. 연습 문제

연습 문제 1)

다음 프로그램의 실행 결과를 작성하시오.

#include <stdio.h>

int main(void) {
    printf("%d\n", 98765);
    printf("%-d\n", 98765);
    printf("%10d\n", 98765);
    printf("%-10d\n", 98765);
    
    return 0;
}

 

풀이)

98765
98765
     98765
98765

 

 

연습 문제 2)

다음 프로그의 실행 결과를 작성하시오

#include <stdio.h>

int main(void) {
    printf("%f\n", 12.12345);
    printf("%.2f\n", 12.12345);
    printf("%10f\n", 12.12345);
    printf("%-10f\n", 12.12345);
    printf("%10.2f\n", 12.12345);
    printf("%-10.2f\n", 12.12345);
    
    return 0;
}

 

풀이)

12.123450
12.12
 12.123450
12.123450
     12.12
12.12

 

 

연습 문제 3)

VS Code 2022에서 scanf() 함수를 사용할 때 아래와 같은 에러가 발생한다. 이때 해결 방법을 기술하시오

error c4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."

 

풀이)

아래 세 가지 방법중 하나를 택해 에러를 해결할 수 있다.

① scanf() 함수 대신 scanf_s() 함수를 사용한다.

② 코드의 맨 윗줄에 #pragma warning(disable: 4996)을 입력한다.

③ 코드의 맨 윗줄에 #define _CRT_SECURE_NO_WARNINGS를 입력한다.

 

 

연습 문제 4)

다음은 문자열을 입력받아 출력하는 프로그램이다. 실행 결과를 참고하여 코드의 빈 칸을 채우시오

// 실행 결과


문자열 입력 : Hello   // 문자열 입력 시
입력한 문자열 : Hello



// 프로그램


#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    char str[100];
    
    [       ①       ]
    [       ②       ]
    
    [       ③       ]
    
    return 0;
}

 

풀이)

① printf("문자열 입력 : ");

scanf("%s", str);

printf("입력한 문자열 : %s", str);

 

 

연습 문제 5)

다음 코드에서 잘못된 부분이 무엇인지 설명하고 바르게 고치시오

#include <stdio.h>

int main(void) {
    int = age;
    
    printf("나이를 입력하세요 : ");
    scanf("%s", &age);
    
    return 0;
}

 

풀이)

① scanf() 함수를 사용하면 error c4996 에러가 뜰 수 있는데 scanf() 함수 대신 scanf_s() 함수를 사용하거나 코드의 맨 윗줄에 #pragma warning(disable: 4996) 또는 #define _CRT_SECURE_NO_WARNINGS를 입력하여 에러를 해결해준다.

 

② 7행을 보면 age 변수는 정수형인데 %s라는 문자열 형식 지정자로 받은 것을 볼 수 있다. 따라서 %s가 아닌 %d를 사용해야 한다.

 

③ 만일 변수값을 출력하고자 한다면 위의 코드에서는 변수값을 출력하는 printf() 함수가 누락되어 있으므로 printf() 함수를 작성해야한다.

#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    int = age;
    
    printf("나이를 입력하세요 : ");
    scanf("%d", &age);
    
    printf("입력받은 나이 : %d", age);
    
    return 0;
}

 

 


 

 

Ⅳ. 프로그래밍 문제

프로그래밍 문제 1)

Hello World를 두 번 출력하는 프로그램을 작성하시오

 

풀이)

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    printf("Hello World\n");
    
    return 0;
}

 

 

프로그래밍 문제 2)

printf() 함수로 정수 1000과 5000을 출력하는 프로그램을 작성하시오

 

풀이)

#include <stdio.h>

int main(void) {
    printf("%d\n%d", 1000, 5000);
    
    return 0;
}

 

 

프로그래밍 문제 3)

다음 실행 결과를 참고하여 키보드로 정수를 입력받아 출력하는 프로그램을 작성하시오

// 실행 결과


정수를 입력하세요 : 3   // 정수 입력 시
입력한 숫자는 3입니다.

 

풀이)

#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    int i;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &i);
    
    printf("입력한 숫자는 %d입니다.", i);
    
    return 0;
}

 

 

프로그래밍 문제 4)

밑변의 길이와 높이의 길이를 입력받아 삼각형의 넓이를 구하는 프로그램을 작성하시오

#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    float bottom, height, area;

    printf("밑변 길이 : ");
    scanf("%f", &bottom);

    printf("높이 길이 : ");
    scanf("%f", &height);

    area = bottom * height / 2;

    printf("밑변이 %.0f이고, 높이가 %.0f인 삼각형의 넓이는 %.1f입니다.", bottom, height, area);

    return 0;
}

 

 

프로그래밍 문제 5)

실수를 입력받아 입력받은 수의 제곱을 출력하는 프로그램을 작성하시오

 

풀이)

#pragma warning(disable: 4996)
#include <stdio.h>

int main(void) {
    float f;

    printf("실수 입력 : ");
    scanf("%f", &f);

    float square = f * f;

    printf("%f의 제곱 = %.2f", f, square);
    
    return 0;
}

 

처음에 파이썬에서 제곱을 표현하는 ** 기호를 사용하여 코드를 작성하였는데 자꾸 에러가 떠서 f * f로 바꿀 수밖에 없었다.

 

C 언어에서는 제곱을 표현하는 기호인 **을 사용할 수 없는 것같다.

 

 

프로그래밍 문제 6)

다음과 같은 결과가 출력되도록 프로그램을 작성하시오

#include <stdio.h>

int main(void) {
    printf("안녕하세요.\n제 이름은 홍길동입니다.\n나이는 25살입니다.");

    return 0;
}

 

 

 

끝.

'C & C++ > Basic programming' 카테고리의 다른 글

C 언어) Ch03. 변수와 자료형  (0) 2025.03.20
C 언어) Ch01. C 언어 기초  (0) 2025.03.14