Week 05
< 180418 >
1) if ~else if~ 를 활용한 학점 계산.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { int n; scanf("%d", &n); if(90 <= n) printf("A\n"); else if(80 <= n) printf("B\n"); else if(70 <= n) printf("C\n"); else printf("D\n"); return 0; } | cs |
>> 9 라인의 경우 else if(80 <= n && n < 90) 으로 써도 되지만, 위와 같이 써도 된다.
2) 위 문제를 switch case 문으로.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main() { int n; scanf("%d", &n); switch(n/10) { case 10: printf("A\n"); break; case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("D\n"); break; } return 0; } | cs |
3) switch case 문의 실행흐름
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main() { int n; scanf("%d", &n); switch(n/10) { case 10: printf("A\n"); case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("D\n"); break; } return 0; } | cs |
>> 10 라인에서 break; 를 삭제하였다. 그다음 100을 입력받아 n에 저장하면 AA 가 출력된다..!!
>> 90 을 입력하면 A가 출력된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main() { int n; scanf("%d", &n); switch(n/10) { case 10: printf("A\n"); case 9: printf("A\n"); case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("D\n"); break; } return 0; } | cs |
>> 11 라인에 break; 도 삭제해보자. 그다음 100을 입력하면 AAB 가 출력된다.
>> 즉, 해당하는 case 번호를 만나면, 해당라인에서 break; 를 만날때까지 실행이 된다.
(90 을 입력하면 AB 가, 80을 입력하면 B가 출력된다.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main() { int n; scanf("%d", &n); switch(n/10) { case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("D\n"); break; } return 0; } | cs |
>> 2) 문제의 경우 위와같이 작성하면 된다.
4) 대문자 A 인지 소문자 a 인지, switch case 문으로
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main() { char ch; scanf("%c", &ch); switch(ch) { case 'A': printf("대문자 A\n"); break; case 'a': printf("소문자 a\n"); break; } return 0; } | cs |
>> case 다음에는 정수가 와야한다. 하지만 문자도 올 수 있다. 문자의 정체는 정수이기 때문이다..!!
5) 입력한 문자가, 대문자인지, 소문자인지, 숫자인지, 특수문자인지
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { char ch; scanf("%c", &ch); if('A' <= ch && ch <= 'Z') printf("대문자\n"); else if('a' <= ch && ch <= 'z') printf("소문자\n"); else if('0' <= ch && ch <= '9') printf("숫자\n"); else printf("특수문자\n"); return 0; } | cs |
>> && 연산자의 활용, 아스키 코드값의 특징 확인.
6) 임의의 숫자를 입력받아 실수형 숫자이면 소수 이하 숫자만 출력하고, 정수형 숫자면 짝수, 홀수를 구분하여 출력하는 프로그램 (7.7)
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main() { double d; scanf("%lf", &d); if(d - (int)d > 0) printf("%lf\n", d-(int)d); else (int)d%2 == 1 ? printf("odd\n") : printf("even\n"); return 0; } | cs |
7) printf() 에서의 증감연산자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { int a = 4, b = 7; printf("%d\n", a + a++); // 8 printf("%d\n", ++a + a); // 12 printf("%d\n", (++a) + (++a)); // 15 , VS >> 16 printf("%d\n", b + b--); // 14 printf("%d\n", b + --b); // 11 , VS >> 10 return 0; } | cs |
>> 9라인의 결과가 Mac 에서 진행한 것과, Visual Studio 에서 진행한 것이 다르다....