본문 바로가기
개발자

두들낙서 17강~19강 while을 for 로 바꿔보기, 중첩 for 문 예제들

by ⁖⁝‥ 2022. 6. 16.

1. while을 for 로 바꿔보기

// 2^0, 2^1, 2^2... 해서 1,2,4,8..출력하기

#include<stdio.h>

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

	int i = 0, t = 1;
	while (i <= n) {
		printf("2^%d = %d\n", i, t);
		i++;
		t *= 2;
	}
}

결과 : 

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

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

for문 안에 t=1을 집어 넣고 싶을때 -> 

for(int i = 0, t=1; i <=n; i++) 이렇게 하면 됨.

t *=2도 for문 안에 집어넣을 수 있음

for(int i =0, t=1;i<=n;i++, t*=2)

int main() {
	int n;
	scanf_s("%d", &n);
		
	for (int i = 0,t = 1; i <= n; i++, t *= 2) {
		printf("2^%d= %d\n", i, t);
	}
}

2. 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);
}
int main() {
	int n;
	scanf_s("%d", &n);
		
	int i, sum;
	for (i = 1, sum = 0; i <= n; sum += i, i++);
	printf("%d\n", sum);
}

1) sum += i 를 for문안에 넣을때 i++이랑 실행 순서를 생각해서

sum += i 을 먼저 실행해야 하니까

sum += i, i++ 이렇게 적어야 함.

2) 중괄호 { } 안에 아무것도 없으면 그냥 ; 세미콜론 하나만 적으면 된다.

 

3. break 이용해서 답이 나올때 까지 계속 입력하기

#include<stdio.h>

int main() {
	for (int i = 1; ; i++) {
		int k;
		scanf_s("%d", &k);
		if (k == 0) {
			break;
		}
		printf("%d 번째: %d\n", i, k);
	}
}

결과;

4. continue 

3의 배수만 빼고 더하기

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

	//1+2+4+5+7+8+10+11+13...
	int sum = 0;
	for (int i = 1; i <= n; i++) {
		if (i % 3 != 0) {
			sum += i;
		}
}
	printf("%d\n", sum);
}
int main() {
	int n;
	scanf_s("%d", &n);

	//1+2+4+5+7+8+10+11+13
	int sum = 0;
	for (int i = 1; i <= n; i++) {
		if (i % 3 == 0) {
		continue;
	}
	sum += i;
}
	printf("%d\n", sum);
}

5. 중첩 for 문

1) 정사각형 별 출력하기

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

결과:

2)

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

결과:

3)

int main() {
	int n;
	scanf_s("%d", &n);
	for (int k = 0; k < n; k++) {
		for (int i = 1; i <= k*2+1; i++) {
			printf("*");
		}
		printf("\n");
	}
}

결과:

4)

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

결과:

6. 시험 점수를 입력받고 90~100은 A 출력, 80~89 는 B 출력, 70~79 는 C, 60~69는 D

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

	if (score <= 100 && score >= 90) {
		printf("A");
	}
	else if (score >= 80 && score < 90) {
		printf("B");
	}
	else if (score >= 70 && score < 80) {
		printf("C");
	}
	else if (score >= 60 && score < 70) {
		printf("D");
	}
	else {
		printf("F");
	}
}
int main() {
	int score;
	scanf_s("%d", &score);
	if (score > 100 || score < 0) {
		printf("잘못입력하셨습니다.");
	}
	else {

		if (score >= 90) {
			printf("A");
		}
		else if (score >= 80) {
			printf("B");
		}
		else if (score >= 70) {
			printf("C");
		}
		else if (score >= 60) {
			printf("D");
		}
		else {
			printf("F");
		}
	}
}
int main() {
	int score;
	scanf_s("%d", &score);
	if (score > 100 || score < 0) {
		printf("잘못입력하셨습니다.");
	}
	else if (score >= 90) {
			printf("A");
		}
	else if (score >= 80) {
		printf("B");
	}
	else if (score >= 70) {
		printf("C");
	}
	else if (score >= 60) {
		printf("D");
	}
	else {
		printf("F");
	}
}

전체 들여쓰기 하려면 마우스로 구역 선택하고  shift + tab

 

7. 숫자 입력하고 만약에 12입력했다고 하면 12의 약수들을 출력 (1,2,3,4,6,12)

int main() {
	int num;
	scanf_s("%d", &num);
	
	for (int i = 1; i <= num; i++) {
		if (num % i == 0) {
			printf("%d,", i);
		}
	}
}

결과:

맨 끝에 쉼표 없앨라면

int main() {
	int num;
	scanf_s("%d", &num);
	
	for (int i = 1; i <= num/2; i++) {
		if (num % i == 0) {
			printf("%d,", i);
		}
	}
	printf("%d", num);
}

결과 : 

 

8. 3,6,9 게임 하기

일의 자리수가 3의 배수인 경우 * 으로 표시

1 2 * 4 5 * 7 8 * 10 11 12 * 14 15 * 17

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

	for (int i = 1; i <= n; i++) {
		int k = i % 10;
		if (k % 3) {
			printf("%d ", i);
		}
		else if (k == 0) {
			printf("%d ", i);
		}
		else {
			printf("* ");
		}
	}
}

아니면 if (k == 3 || k == 6 || k == 9) 사용하기

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

	for (int i = 1; i <= n; i++) {
		int k = i % 10;
		if (k == 3 || k == 6 || k == 9) {
			printf("* ");
		}
		else {
			printf("%d ", i);
		}
	}
}

9. 숫자 피라미드 만들기

n = 4 일 경우에

1

13

135

1357

이런식으로

int main() {
	int n;
	scanf_s("%d", &n);
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1 , k = 1 ; j < i; j++) {
			printf("%d ",k);
			k += 2;
		}
		printf("\n");
	}
}

또는

int main() {
	int n;
	scanf_s("%d", &n);
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j < i; j++) {
			printf("%d ", 2*j-1);
		}
		printf("\n");
	}
}

결과 :

10. n= 4 일 경우에

1

123

12345

1234567

이런식으로 되는 피라미드 만들기

int main() {
	int n;
	scanf_s("%d", &n);
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j < 2 * i; j++){
			printf("%d", j);
		}
		printf("\n");
	}
}

결과 :

두번째 방법

int main() {
	int n;
	scanf_s("%d", &n);
	
	for (int i = 1; i <= 2*n-1; i += 2) {
		for (int j = 1; j <=i; j++){
			printf("%d", j);
		}
		printf("\n");
	}
}

 

반응형

댓글