본문 바로가기
개발자

두들낙서 12강 ~16강 정리

by ⁖⁝‥ 2022. 6. 15.

1. 숫자를 입력받아서 짝수인지 홀수인지

#include <stdio.h>

int main() {
	printf("숫자를 입력하세요\n");
	int a;
	scanf_s("%d", &a);
	bool p = a % 2 == 0;
	if (p == 1) {
		printf("짝수입니다.");
	}
	else {
		printf("홀수입니다.");
	}
}
int main() {
	printf("숫자를 입력하세요\n");
	int a;
	scanf_s("%d", &a);
	
	if (a % 2) {
		printf("홀수입니다.");
	}
	else {
		printf("짝수입니다.");
	}
}

if(1)이면 { } 실행,

if(0)이면 { } 실행 안하고 else 로 넘어가서 실행하니까

바로 if(a%2) 로 적고 홀수입니다 라고 해도 결과는 똑같이 나온다.

 

2. 세개의 숫자중 가장 큰 수 출력하기 (중첩if문 사용)

(컴퓨터는 a>b>c 이렇게 세개를 비교하는걸 못한다.)

#include <stdio.h>

int main() {
	int a, b, c;
	scanf_s("%d%d%d", &a, &b, &c);
	if (a > b) {
		if (a > c) {
			printf("%d는 최대값입니다.\n", a);
		}
		else {
			printf("%d는 최대값입니다.", c);
		}
	}
	else {
		if (b > c) {
			printf("%d는 최대값입니다.", b);
		}
		else {
			printf("%d는 최대값입니다.", c);
		}
	}
}

중첩 if문 안쓰고 && 사용해서 만들기

 

#include <stdio.h>

int main() {
	int a, b, c;
	scanf_s("%d%d%d", &a, &b, &c);

	if (a > b && a > c) {
		printf("%d가 최대값", a);
	}
	else if (b > a && b > c) {
		printf("%d가 최대값", b);
	}
	else
	{
		printf("%d가 최대값", c);
	}
}

if 문이나 else 문 안에 문장이 하나만 있으면 중괄호 없애도 된다.

#include <stdio.h>
//세개의 숫자중 가장 큰 수 출력하기
int main() {
	int a, b, c;

	scanf_s("%d%d%d", &a, &b, &c);

	if (a > b && a > c) printf("%d", a);
	else if (b > a && b > c) printf("%d", b);
	else printf("%d", c);
}

 

3. 세개의 숫자를 입력 받고 큰 숫자부터 작은 숫자 순서로 나열해서 출력하기 

경우의 수 먼저 생각 -> 숫자가 a,b,c 일때 6가지 경우의 수가 생긴다.

a b c

a c b

b a c

b c a

c a b

c b a

#include <stdio.h>

int main() {
	int a, b, c;
	
	scanf_s("%d%d%d", &a, &b, &c);

	if (a > b && a > c) {
		if (b > c) {
			printf("%d %d %d", a, b, c);
		}
		else {
			printf("%d %d %d", a, c, b);
		}
	}
	else if (b > a && b > c) {
		if (a > c) {
			printf("%d %d %d", b, a, c);
		}
		else {
			printf("%d %d %d", b, c, a);
		}
	}
	else {
		if (a > b) {
			printf("%d %d %d", c, a, b);
		}
		else {
			printf("%d %d %d",c, b, a);
		}
	}
}

4. 스위치문 switch

#include <stdio.h>

int main() {
	int choice;

	printf(" 새 게임 : 1\n");
	printf("불러오기 : 2\n");
	printf("설정 : 3\n");
	printf("크레딧 : 4\n");

	scanf_s("%d", &choice);
	
	if (choice == 1) {
		printf("새게임\n");
	}
	else if (choice == 2) {
		printf("불러오기\n");
	}
	else if (choice == 3) {
		printf("설정\n");
	}
	else if (choice == 4) {
		printf("크레딧\n");
	}
	else {
		printf("잘못입력\n");
	}
}
int main() {
	int choice;

	printf(" 새 게임 : 1\n");
	printf("불러오기 : 2\n");
	printf("설정 : 3\n");
	printf("크레딧 : 4\n");

	scanf_s("%d", &choice);

	switch (choice) {
	case 1: printf("새게임\n");
		break;
	case 2: printf("불러오기\n");
		break;
	case 3:printf("설정\n");
		break;
	case 4:printf("크레딧\n");
		break;
		
	default: printf("잘못입력");
		break;
	}

}

* switch 문에서는 case 마다 break; 써줘야 된다.

안쓰면 밑으로 계속 실행됨

* goto

다시 실행시킬 부분에다가 makeChoice: 라고 입력하고

잘못입력 부분에다가 goto makeChoice; 쓰면 goto 뒤에있는 단어(makeChoice)를 찾아가서 그부분부터 다시 실행됨

#include <stdio.h>

int main() {
	int choice;

makeChoice:

	printf(" 새 게임 : 1\n");
	printf("불러오기 : 2\n");
	printf("설정 : 3\n");
	printf("크레딧 : 4\n");

	scanf_s("%d", &choice);

	switch (choice) {
	case 1: printf("새게임\n");
		break;
	case 2: printf("불러오기\n");
		break;
	case 3:printf("설정\n");
		break;
	case 4:printf("크레딧\n");
		break;
		
	default: printf("잘못입력\n");
		goto makeChoice;
		break;
	}

}

결과 :

 새 게임 : 1
불러오기 : 2
설정 : 3
크레딧 : 4
6
잘못입력
 새 게임 : 1
불러오기 : 2
설정 : 3
크레딧 : 4

 

근데 goto 쓰면 코드가 지저분해지므로 안쓰는게 좋음

 

5. while 문

while 다음 ( ) 안에 조건이 참이라면 실행

#include<stdio.h>

int main() {
	int i = 1;

	while (i <= 10) {
		printf("%d\n", i);
		i++;
	}
}

결과 :

1
2
3
4
5
6
7
8
9
10

 

6. do while 문

조건을 만족하든 안하든 처음 한번은 무조건 실행

#include<stdio.h>

int main() {
	int i = 19;

	do  {
		printf("%d\n", i);
		i++;
	} while (i <= 10);
}

7. 무한반복

#include<stdio.h>

int main() {
	int i = 1;

	while(true) {
		printf("%d", i);
		i++;
	} 
}

while 뒤에 (true)라고 적어주면 영원히 실행된다.

8.

#include<stdio.h>

int main() {
	int n;
	do {
		printf("제발 0을 입력해주세요;\n");
			scanf_s("%d", &n);
	} while (n != 0);
	printf("드디어 0을 입력했네요");
}

n 이 0이 아닐때는 계속 { } 실행하다가 n = 0이 되면 탈출해서 다음 코드 실행

결과  :

9. for 문

1부터 10까지 출력해라.

int main() {
	
	for (int i = 1; i <= 10; i++) {
		printf("%d\n", i);
	}
}

for문 

1. 일정하게 증가/ 감소 되는 변수가 필요할 때.

2. 배열의 모든 원소에 순차적으로 접근하고 싶을 때

3. 특정 횟수만큼 작업을 반복하고 싶을 때

 

10. for문을 이용해서 1,2,4,6,8...출력하기

#include<stdio.h>
//1,2,4,8,16,.. 출력하기
int main() {
	int n;
	scanf_s("%d", &n);
	for (int i = 1; i <n; i *= 2) {
		printf("%d\n", i);
	}
}

for문 괄호 안에 i ++ 대신에 i = i *2 , 또는 i *= 2 넣는다.

결과 : 

11. n을 입력받아서 1~n까지의 합 구하기

#include<stdio.h>
//1~ n까지의 합을 출력하기

int main() {
	int n;
	scanf_s("%d", &n);

	int sum = 0;
	
	for (int i = 1; i <= n; i++) {
		sum += i;
		}
	printf("%d\n", sum);
}

* 1~n 까지의 수 중에서 홀수만 더하기

int main() {
	int n;
	scanf_s("%d", &n);

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

* 1~n까지의 수 중에서 짝수만 더하기

int main() {
	int n;
	scanf_s("%d", &n);

	int sum = 0;
	
	for (int i = 1; i <= n; i++) {
		if (i % 2) {
		}
		else {
			sum += i;
		}
		}
	printf("%d\n", sum);
}

12. 입력받은 n 만큼 별 찍기

#include<stdio.h>
int main() {
	int n;
	scanf_s("%d", &n);

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

13. 피라미드 별찍기

#include<stdio.h>
int main() {
	int n;
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++) {
		for (int j = i; j < n - 1; j++)
		{
			printf(" ");
		}
		for (int k = 0; k < 1 + (i * 2); k++)
		{
			printf("*");
		}
		printf("\n");
		
	}
}

 

반응형

댓글