대학교 수업/C 프로그래밍

[C프로그래밍 실습과제 04/5장] 정답 풀이

Jongung 2021. 10. 1. 16:45

조건문 예제 프로그램 연습

 

1. 온도를 입력 받아 출력하는 프로그램을 작성하자. 단, 입력 받은 온도가 0도 미만이면 온도 출력시 "영하"를 덧붙여 출력하자. (if문 사용)

#include <stdio.h>

int main(void) {
  int Temp;
  scanf("%d", &Temp);

  if(Temp < 0){
    printf("오늘 온도는 영하 %d도 입니다.", Temp  - Temp*2);
  }
  else{
    printf("오늘 온도는 %d도 입니다.", Temp);
  }
}

 

2. 입력한 정수가 음의 짝수, 음의 홀수, 양의 짝수, 양의 홀수인지를 판정하는 프로그램을 중첩된 if문을 사용하여 작성해보시오.

#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  if(input % 2 == 0){
    if(input < 0){
      printf("입력 한 수는 음의 짝수 입니다.");
    }
    else{
      printf("입력 한 수는 양의 짝수 입니다.");    
    }
  }
  else{
    if(input < 0){
      printf("입력 한 수는 음의 홀수 입니다.");
    }
    else{
      printf("입력 한 수는 양의 홀수 입니다.");    
    }
  }
}

 

3. 입력 받은 점수에 해당하는 학점을 출력하는 프로그램을 작성해보시오. (중첩 if문 사용)

#include <stdio.h>

int main(void) {
  int score;
  char grade;

  printf("점수를 입력하시오 : ");
  scanf("%d", &score);

  if(score >= 90)
    grade = 'A';
  else if(score >= 80)
    grade = 'B';
  else if(score >= 70)
    grade = 'C';
  else if(score >= 60)
    grade = 'D';
  else
    grade = 'F';

  printf("학점 : %c\n", grade);
}

 

조건문 연습 문제 (택 3, 홀수/짝수 번 문제를 선택하여 풀이 할 것)

 

1. 연습문제 6

☞ 하나의 문자를 입력 받고, 입력 받은 문자를 알파벳 대문자, 알파벳 소문자, 숫자, 그 외의 문자들로 구별하는 프로그램을 if문을 이용 해 작성하시오.

#include <stdio.h>

int main(void) {
  char input;
  printf("문자 입력: ");
  scanf("%c", &input);

  if(input >= 'A' && input <= 'Z'){
    printf("알파벳 대문자 입니다.");
  }
  else if(input >= 'a' && input <= 'z'){
    printf("알파벳 소문자 입니다.");
  }
  else if(input >= '0' && input <= '9'){
    printf("숫자입니다.");
  }
  else{
    printf("문자입니다.");
  }
}

 

2. 연습문제 8

☞ 월을 입력받아 몇 분기인지를 출력하는 프로그램을 switch~case문을 이용해 작성하시오.

#include <stdio.h>

int main(void) {
    int input, a;
    printf("월 입력: ");
    scanf_s("%d", &input);

    switch (input) {
    case 1:
    case 2:
    case 3:
        a = 1;
        break;
    case 4:
    case 5:
    case 6:
        a = 2;
        break;
    case 7:
    case 8:
    case 9:
        a = 3;
        break;
    case 10:
    case 11:
    case 12:
        a = 4;
        break;
    }
    printf("%d사분기 입니다.", a);
}

 

3. 연습문제 10

☞ 키보드로 정수 하나와 계산 방법을 입력 받은 뒤 계산 방법이 1이면 입력된 수를,  2이면, 배수를, 3이면 3배수를 출력하는 프로그램을 switch~case 문을 이용해 작성하시오. 계산 방법으로 1, 2, 3 외의 입력이 들어오는 경우에는 '잘못된 연산자 입니다.'라는 메세지를 출력한다.

#include <stdio.h>

int main(void) {
  printf("수 입력: ");
  int value, calc;
  scanf("%d", &value);
  printf("계산법(1, 2, 3): ");
  scanf("%d", &calc);

  switch(calc){
    case 1:
      printf("입력 한 수 %d의 1배수는 %d입니다.",value, value);
      break;
    case 2:
      printf("입력 한 수 %d의 2배수는 %d입니다.",value, value*2);
      break;
    case 3:
      printf("입력 한 수 %d의 3배수는 %d입니다.",value, value*3);
      break;
    default:
      printf("잘못된 연산자입니다.");
      break;
  }
}

 

 

중간값 구하기 프로그램 (n1, n2, n3)

 

#include <stdio.h>

int main() {
	int n1, n2, n3;
	scanf_s("%d %d %d", &n1, &n2, &n3);

	printf("중간 값은 %d입니다.", middle(n1, n2, n3));
}

int middle(int A, int B, int C) {
	if (A > B && A < C || A < B && A > C) {
		return A;
	}
	else if (B > A && B < C || B < A && B > C) {
		return B;
	}
	else {
		return C;
	}
}

 

 

반복문 예제 프로그램 작성해보기 (for문, whiile문으로 각각 작성하시오.)

 

1. "나는 프로그램이 좋다."를 10번 출력하는 프로그램을 작성햅보자. 반복횟수를 키보드에서 입력하여 입력된 반복 횟수 만큼 메세지를 출력한다.

//For문
#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  for(int i=0; i<input; i++){
    printf("나는 C프로그램이 좋다.\n");
  }
}
//While문
#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  while(input-- != 0){
    printf("나는 C프로그램이 좋다.\n");
  }
}

 

2. 1에서 100까지의 합의 구하는 프로그램을 작성해보자. 이때 숫자 100은 키보드에서 입력하여 사용하자. 키보드 입력이 100이면 1에서 100까지의 합, 키보드 입력이 10이면 10까지의 합을 구하고 출력한다.

//For문
#include <stdio.h>

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

  for(int i=1; i<=input; i++){
    sum += i;
  }

  printf("합은 %d입니다.", sum);
}
//While문
#include <stdio.h>

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

 while(input != 0){
    sum += input;
    input --;
 }
 

  printf("합은 %d입니다.", sum);
}

 

3. 1에서 100사이의 수중에서 3의 배수들을 차례로 출력하는 프로그램을 작성해보자. 그리고 3의 배수의 합을 구하는 기능을 추가 해보자.

//For문
#include <stdio.h>

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

  for(int i=1; i<=input; i++){
    if(i%3 == 0){
      printf("%d ", i);
      sum += i;
    }
  }

  printf("\n합은 %d입니다.", sum);
}
//While문
#include <stdio.h>

int main(void) {
  int input, sum = 0, cnt = 0;
  scanf("%d", &input);

 while(input != cnt){
   cnt++;
    if(cnt % 3 ==0){
      printf("%d ", cnt);
      sum += cnt;
    }
 }
 

  printf("\n합은 %d입니다.", sum);
}

 

4. 한줄에 5개의 별, 그리고 5줄을 출력하는 프로그램을 작성해보자. 키보드에서 숫자 n을 입력한 후 한줄에 n개의 별을 n줄만큼 출력하는 프로그램으로 수정해보자.

#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  for(int i=1; i<=input; i++){
    for(int j=1; j<=i; j++){
        printf("*");
    }
    printf("\n");
  }
}

#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  for(int i= input; i>=1; i--){
    for(int j=1; j<=i; j++){
        printf("*");
    }
    printf("\n");
  }
}

 

#include <stdio.h>

int main(void) {
  int input;
  scanf("%d", &input);

  for(int i=0; i<=input; i++){
    for(int j=1; j<=input-i; j++){
      printf(" ");
    }
    for(int j=1; j<=i*2+1; j++){
      printf("*");
    }
    printf("\n");
  }
}

 

 

응용 연습 (순서대로, 차례대로 수행 할 일들..)

 

1. [프로그램 5-3]에서 작성된 프로그램을 [키보드에서 입력한 정수가 100보다 크면 "100보다 큰 수이며,"를 추가로 출력하고, -100보다 작으면 "-100보다 작은 수이며." 를 추가로 출력하도록 수정해보시오.

#include <stdio.h>

int main(void) {
  int input;
  scanf_s("%d", &input);
  printf("입력한 수는 ");
  if (input > 100) 
      printf("100보다 큰 수이며, ");  
  if (input < -100) 
      printf("-100보다 작은 수이며, ");
  if (input < 0)
      printf("음수이며, ");
  else
      printf("양수이며, ");
  if (input % 2 == 0)
      printf("짝수입니다.");
  else
      printf("홀수입니다.");
}

 

2. 응용연습1) 에서 작성한 프로그램에서 입력한 정수 100보다 크거나 -100보다 작은 경우에 아래와 같이 출력하도록 프로그램을 수정해보시오.

ex) 125 -> 입력한 수는 100보다 큰 수이며, 양수이, 홀수입니다.

 

#include <stdio.h>

int main(void) {
  int input;
  scanf_s("%d", &input);
  printf("입력한 수는 ");

  if (input > 100) {
      printf("100보다 큰 수이며, ");
      printf(input < 0 ? "음수이고, " : "양수이고, ");
  }
  else if (input < -100) {
      printf("-100보다 작은 수이며, ");
      printf(input < 0 ? "음수이고, " : "양수이고, ");
  }
  else {
      if (input < 0)
          printf("음수이며, ");
      else
          printf("양수이며, ");
  }
  if (input % 2 == 0)
      printf("짝수입니다.");
  else
      printf("홀수입니다.");
}