반응형

C언어 450

42. 제어문 연습 - 별출력

제어문의 문법을 보면 어렵지 않아요. 그런데 실제 프로그래밍에서 사용하려면 논리를 전개해는 것이 어려워요. 다양한 문제를 해결하면서 조금씩 숙련시킬 수 있어요. 간단한 제어문 연습을 해 봐요. 먼저 속이 빈 정사각형을 출력하는 것을 해 봐요. 최종 사용자가 정수를 입력하면 입력한 정수에 맞게 속이 빈 정사각형을 출력하는 거예요. 물론 화면의 X좌표의 폭과 Y좌표의 폭이 서로 달라 정사각형처럼 보이지는 않아요. 논리를 먼저 생각하세요. 정수를 입력받는 것이 제일 먼제 해야 할 일겠죠. scanf_s("%d",&n);//입력 그리고 입력한 정수만큼 정사각형을 출력해야 되겠죠. 따라서 입력한 정수만큼 반복 수행하는 구문이 필요하겠네요. for(line=1;line

41. 반복문 (while, do while, for)

41. 반복문 (while, do while, for) 반복문은 특정 조건이 참일 동안 반복해서 구문을 수행하는 구문이예요. C언어에서는 세 가지 종류의 반복문을 제공합니다. while(조건 표현식) 반복 수행 구문; do 반복 수행 구문 while(조건 표현식); for(초기 수행문; 조건 표현문; 조건 변화 구문) 반복 수행 구문; 반복문에서도 조건문처럼 반복해서 수행할 구문이 하나 이상일 때 블록을 지정해서 사용해요. while(조건 표현식) 반복 수행 구문; ◈ while문을 이용하여 1부터 100까지 합계를 구하는 예 #include int main() { int sum = 0; //합계를 위한 변수 선언 int lcnt=0; //반복문 루프 카운터 변수 선언 lcnt = 1; //lcnt를 1..

40. 선택문 (switch case)

C언어에서 선택문은 표현식의 값에 따라 수행할 코드의 위치를 선택하는 구문이예요. switch (선택 표현식) { case 상수: 수행 구문; break; ... default: 수행 구문; breadk; } 선택 표현식의 값에 일치하는 case 위치의 구문을 수행하며 선택 표현식의 결과는 정수여야 하죠. 그리고 일치하는 case가 없을 때는 default 위치의 구문을 수행애요. 그리고 break 문을 만나면 switch 블록을 빠져 나가죠. 조건이 여러 개일 때 조건문을 사용하는 것은 복잡하며 switch 문을 사용하여 단순하게 프로그램을 작성할 수 있어요. ◈ 성적을 입력받아 학점을 출력하는 예 (if문 사용) #include int main() { int score=-1; int level = 0..

39. 조건문 (if, else)

C언어에서는 조건에 따라 수행할 작업을 판단하거나 반복해서 수행하는 등의 제어문을 제공해요. 조건 표현식에 따라 구문을 수행하는 조건문과 조건 표현식이 참일 동안 반복해서 구문을 수행하는 반복문, 표현식의 값에 따라 수행할 위치를 선택하는 선택문 등이 있어요. 그리고 미리 특정 코드에 대응하는 표현을 약속하는 매크로 구문을 제공하고 있어요. 이번 장에서는 제어문과 기본적인 매크로 구문을 다루기로 할게요. 조건문 if 조건문은 조건식이 참일 때 수행하는 구문이예요. 거짓일 때 수행 구문도 표현할 때 else를 사용하죠. if ( 조건 표현식) 수행 구문; if ( 조건 표현식) 수행 구문; else 수행 구문; 조건 표현식은 참인지 거짓인지 판별할 수 있는 표현을 사용해요. 조건 표현식의 값은 논리 연산에..

38. 정리하기

29. 산술 연산자 30. 논리 연산자 31. 비교 연산자 32. 비트 연산자 33. 비트 연산자 ^를 이용한 암호화 34. 쉬프트 연산자 35. 대입 연산자 36. 증감 연산자 37. 기타 연산자 1. 다음 리터럴 상수로 초기값을 설정하는 선언문 중에서 오류가 있는 것을 고르시오. a. char c = "hello"; b. int i = 'a'; c. char c = 38; d. char c = 0xC; 2. 다음 코드를 수행했을 때 출력 결과를 예측하시오. printf("%d\n", 8^8); 3. 다음 코드를 수행했을 때 출력 결과를 예측하시오. printf("%d\n", 2

37. 기타 연산자

C언어에서는 이 외에도 여러 표현식을 나열하는 쉼표 연산자와 표현식 값의 형식을 변환할 때 사용하는 형변환 연산자, 표현식의 메모리 크기를 계산하는 sizeof, 조건에 맞게 특정 표현식을 사용하는 조건부 연산자등을 제공하고 있어요. 쉼표 연산자는 변수 선언 등에서 대등한 표현식을 나열할 때 사용할 수 있어요. int i=0, j=0; ◈ 여러 개의 표현식을 나열하는 쉼표 연산자의 사용 예 #include enum _Gender{ FEMALE, MALE }; //열거형 정의문 int Compare(int a,int b); //함수 선언문 int main() { int arr[3] = {1,2,3}; //배열 선언문 int i=0, j=0; int gap=0; gap = Compare(i,j); //함수 ..

35. 대입 연산자

=, +=, -=, *=, /=, %= 등 대입 연산은 변수의 값을 설정할 때 사용하는 연산이죠. 이러한 이유로 대입 연산의 좌항에는 상수 표현은 올 수 없으며 l- value라 불러요. 대입 연산자에는 우항의 값을 좌항에 대입하는 단순 대입 연산과 좌항과 우항의 값을 더하거나 빼는 등의 연산을 수행한 후에 좌항에 대입하는 복합 대입 연산도 있어요. ◈ 복합 대입 연산 예 #include int main() { int i = 2; i += 4; // i = i + 4; 와 같은 표현 printf("i: %d \n",i); return 0; } 실행 결과 i: 6 주의할 점은 대입 연산은 모든 연산 중에 우선 순위가 가장 낮다는 것이예요. 예를 들어 i = j == 3; 구문은 j의 값이 3이면 i에 1을..

34. 쉬프트 연산자

쉬프트 연산은 좌항에 있는 피연산자를 우항에 있는 수만큼 비트 자리 이동하는 연산을 수행해요. > 는 오른쪽 쉬프트 연산자죠. 왼쪽 쉬프트 연산을 하면 좌항에 있는 피연산자의 값이 우항에 있는 수만큼 왼쪽으로 자리 이동하고 빈 자리는 0으로 채우죠. 만약 부호없는 수 3을 왼쪽으로 4자리 이동시키면 48이예요. 이진수로 생각해 보세요. 이진수 011(10진수 3)을 왼쪽으로 4자리 이동하면 이진수 0110000(10진수 48)이 되죠. 이것을 다시 16진수로 얘기하면 16진수 3(10진수 3)을 왼쪽으로 4자리 이동하면 16진수 30(10진수 48)이예요. 참고로 16진수의 한자리는 2진수 4자리를 차지하죠. 그리고 부호있는 수 -3을 왼쪽으로 4자리 이동시키면 -48이예요. 왼쪽 쉬프트 연산 수행 결과..

33. 비트 연산자 ^를 이용한 암호화

어떤 수에 같은 수로 ^ 연산을 두 번 하면 원래 수가 되는 특징이 있어요. 이를 이용하면 간단한 암호화와 복호화를 할 수 있죠. 이처럼 같은 키를 암호화와 복호화에 사용하는 것을 대칭형 암호화라 불러요. ◈ 간단한 대칭형 암호화 #include int main() { int original = 0x12345678; //원본 데이터 int cryptograph = 0; //암호화 데이터 int decrypt = 0; //복화화 데이터 int key = 0x394A38C9; //암호화와 복호화에 사용할 키 printf("원본 데이터: %#X \n",original); cryptograph = original ^ key; //암호화 printf("암호화 데이터: %#X \n",cryptograph); dec..

32. 비트 연산자

&, |, ^ , ~ C언어에서는 비트 단위로 논리 연산을 수행하는 비트 연산을 제공하고 있어요. 비트 연산의 피연산자는 정수 형식이 올 수 있어요. 이항 연산자 &는 비트 단위로 논리곱 연산을 수행하죠. 예를 들어 6&5를 하면 6은 이진수로 110이고 5는 이진수로 101이므로 6&5의 연산 결과는 이진수 100이고 10진수 4예요. 이항 연산자 | 는 비트 단위로 논리합 연산을 수행하죠. 예를 들어 6|5의 연산 결과는 이진수 111 이고 10진수 7이예요. 이항 연산자 ^는 비트 단위로 상호 배타 논리 연산을 수행하죠. 즉 같은 자리의 비트가 서로 다르면 1, 같으면 0 이예요. 예를 들어 6^5의 연산 결과는 이진수 011 이고 10진수 3이예요. 단항 연산자 ~는 1인 자리는 0으로 0인 자리..

반응형