본문 바로가기

프로그래밍/C 프로그래밍

[C언어] 선택제어문/반복제어문

# 선택제어문

  • If 문
 # include <stdio.h>
 
 int main(){
 	int score;
 	
 	printf("점수를 입력하세요: ");
	scanf("%d", &score);
	
	if (score%2 ==0)
		printf("%d는 짝수\n", score);
	if (score%2 == 1)
		printf("%d는 홀수\n", score);
		
	if(score >= 90)
		printf("%d는 A \n", score);
	else if(score >= 80)
		printf("%d는 B \n", score);
	else if(score >= 70)
		printf("%d는 c\n", score);
	else if(score >= 60)
		printf("%d는 D \n", score);
	else
		printf("%d는 F \n", score);
	
}

 

  • Switch 문
//계산기 프로그램

#include <stdio.h>

int main(){
	
	int op_num1, op_num2;
	char op;
	
	printf("계산기 프로그램\n");
	printf("연산자 입력 (+,-,*,/) :");
	scanf("%c", &op); //연산자 캐릭터로 받는다. 
	
	printf("%c의 좌측 피연산자 1 입력: ", op);
	scanf("%d", &op_num1);
	
	printf("%c의 우측 피연산자 2 입력: ", op);
	scanf("%d", &op_num2);
	
	switch(op) {
	case '+' :
		printf("%d + %d = %d\n", op_num1, op_num2, op_num1+op_num2);
		break;
	case '-' :
		printf("%d - %d = %d\n", op_num1, op_num2, op_num1-op_num2);
		break;
	case '*' :
		printf("%d * %d = %d\n", op_num1, op_num2, op_num1*op_num2);
		break;
	case '/' :
		printf("%d / %d = %d\n", op_num1, op_num2, op_num1/op_num2);
		break;
	default:
		printf("잘못된 연산자입니다."); 
	}
	 
}

 

# 반복 제어문

  • for문
//구구단을 7단부터 9단까지 세 줄로 출력하는 프로그램
#include <stdio.h>
#include <conio.h> //getch()의 원형이 보관된 헤더파일(윈도우에서 키보드 입력을 처리하는 함수들 제공) 

int main(){
	int i,j;
	
	for(i=7; i<10; i=i+3){
		for(j=1; j<10;j++){
			printf("\t %2d * %2d = %2d \t", i, j, i*j);
			printf("\t %2d * %2d = %2d \t", i+1, j, (i+1)*j);
			printf("\t %2d * %2d = %2d \n", i+2, j, (i+2)*j);
		}
	getch(); // 키보드에서 한 문자를 입력받는 함수, 키를 누를 때까지 프로그램이 대기하고, 사용자가 키를 누르면 아스키코드값 반환한다. 
	printf("\n");
	}
}

 

//주어진 문자열에서 특정 문자 개수 구하기 
#include <stdio.h>

int main(){
	static char a[31] = "KOREA NATIONAL OPEN UNIVERSITY";
	int i;
	int c=0; // 'O'의 수를 세는 카운터 c를 0으로 초기화. 
	
	for (i = 0; i<=29; i++)
		if(a[i] == 'O')
			c++;
	printf("O 개수 = %d", c);
	
}

//O 개수 = 3

 

// 삼각형 모양 출력 
#include <stdio.h>

int main(){
	int i, j;
	for(i=0; i<5; i++){
		for(j=0;j<=i;j++){
			printf("*");
		}
	printf("\n");
	}
}

//*
//**
//***
//****
//*****

 

#include <stdio.h>
#include <conio.h>

int main(){
	int i,j;
	float m,k;
	k=26;
	
	for(i=65; i<=90; i++){
		for (m=k; m>=0;m--) //왼쪽부터 26칸 띄고 출력 
			printf(" ");
		k = k-1; //1칸씩 줄여가면서 출력
		for(j=65; j<=i;j++)
			printf("%c", j);
		printf("\n");
	}
	getch();
}

               

  • while문
  • do ~ while문
    • continue: 루프 실행 중 루프를 다시 실행하고자 할 때, 루프를 빠져나오는 것이 아니라 그 루프의 선두로 다시 제어를 옮기는 기능을 가진 명령어, 즉, 루프를 다시 실행하고자 할 때 사용된다.
    • break: 루프를 빠져나올 때
    • goto: 무조건적인 분기명령, 루프가 여러 개 중첩되어 있을 경우 한꺼번에 루프를 벗어나고자 할 때 사용.
      • 즉, 원하는 곳으로 제어를 무조건적으로 옮긴다.
      • label: ~ goto label;
# include <stdio.h>

int main(){
	int i,n,c = 'A';
	while(1){
		printf("\n 횟수는? ");
		scanf("%d", &n);
		for(i=0;i<=n;i++){
			printf("%c",c);
			if(c=='Q')
				goto end; //레이블 명 end로 무조건 실행 옮김 
			c++;
		}
	} 
	end: //레이블명 
		printf("\n\n끝");
}
#include <stdio.h>
#include <math.h>  # 수학 관련 함수의 원형을 갖고 있는 헤더파일

int main(){
	double val=-1.0;
	
	do{
		printf("sine of %f is %f \n", val, sin(val));
		printf("cosine of %f is %f \n", val, cos(val));
		printf("tangent of %f is %f \n\n", val, tan(val));
		val ++;
	}while(val <= 1.0);
}

# [실습] 숫자 맞추기 게임

  • getchar(): 입력 버퍼에서 직전 입력 함수가 읽어들인 마지막 위치부터 시작하여 읽어 들이므로, 이전 개행 문자 삭제를 위해 호출한다.
    • scanf()의 경우 이전 공백 문자는 무시한다.
  • usigned형 : 부호없는 정수 데이터 타입, 음수 값을 표현하지 않으며 0또는 양의 정수만을 표현한다.
    • 음수 값을 표현하지 않아서 범위가 더 크다.
    • 정수 연산 시에 부호 비트에 대한 고려가 필요 없어서 연산이 더 빠르게 수행된다.
//숫자 맞추기 게임
#include<stdio.h>
#include<stdlib.h>

int main(){
	unsigned secret_num,guess_num, k, times=1;
	unsigned again=1, win=0;
	char replay;
	
	printf("** Game Start! **\n");
	while(again){
		printf("\n=%u 번째 게임 = \n", times++);
		secret_num = rand() % 100; //rand()함수는 0~2147483647 사이 값 중 하나 무작위로 선택해준다. (100으로 나눈 나머지값을 가지므로 0~99사이의 값을 가진다.)
		
//		win = 0;
		k=1;
		
		while (k++ <=7){ //총 7번의 기회 존재. 
			printf("k값 : %u \n", k);
			printf("0부터 99사이의 수를 입력: ");
			scanf("%u", &guess_num);
			
			if(guess_num == secret_num){
				win = 1;
				k=8;
			}
			else if (guess_num < secret_num)
				printf(" %u보다 큰 수입니다. \n", guess_num);
			else 
				printf(" %u보다 작은 수입니다. \n", guess_num);
		}
		if(win) // win이 1이면 
			printf("당신이 이겼습니다. 축하합니다. \n");
		else 
			printf("당신이 졌습니다. %u 였습니다. 다시 시도하세요. \n", secret_num);
		
		printf("다시 하겠습니까? (y/n)");
		
		getchar();  // 이전 개행문자 삭제를 위해 호출 
		replay = getchar();
		
		if(!(replay == 'y' || replay =='Y'))
			again = 0;
		
	}
	printf("\n** Good Bye ** \n");
}

 

 

반응형

'프로그래밍 > C 프로그래밍' 카테고리의 다른 글

[C언어] 배열  (0) 2024.06.04
[C언어] 함수  (0) 2024.06.04
[C언어] 입출력함수와 연산자  (1) 2024.06.04
[C] 선행처리기 매크로  (0) 2024.06.04
[C언어] C언어의 개요  (0) 2024.02.21