1. 구조체에 대해 조사하여 다음 문항에 답하시오. (1시간 소요)

  가. 구조체가 무엇인지 설명하고 쓰임새에 대해 50자 이내로 정리해 보시오.

 

  나. 구조체의 선언은 다음과 같다.

 

    struct 구조체이름
    {

      구조체에 들어있는 변수들의 선언

    };

 

    이를 암기하시오. 또, 점의 좌표를 저장하기 위한 데이터형으로써, 구조체이름은 Point로 하고, 내용은 int x, int y를 가지는 구조체를 선언해 보시오.

 

  다. '나'에서 선언한 구조체의 형태로 만들어지는 변수를 사용하기 위해 main 함수에서  

 

    struct 구조체이름 *사용할 변수명 = malloc(sizeof(struct 구조체이름));

 

    과 같이 포인터 변수를 만드시오. 한편, 이를 암기하시오.

 

  라. (1,2)의 좌표를 가지는 A라는 점이 있다. 이를 위해 사용할 변수명을 A로 하고,

    A에 들어있는 x,y에 1,2를 넣어보시오.

    예를들어 A->x = 10, A->y = 20 처럼 하면 됨

    https://dojang.io/mod/page/view.php?id=419

    https://dojang.io/mod/page/view.php?id=446  를 참조하시오.

 

  마. (3,4)의 좌표를 가지는 B라는 점이 있다. 이를 위해 사용할 변수명을 B로 하고,

    변수 선언과 동시에 값이 들어가도록 해 보시오.

    예를들어 struct 구조체이름 *사용할변수명 = {10,20} 처럼 하면 됨.

 

 

2. 구조체는 배열로 만들수도 있다. 다음 문항에 답하시오.  (2시간 소요)

  가. 삼각형의 세 점의 좌표를 받기 위해 1번 문항에서 만들었던 Point라는 이름의 구조체로 3개의 배열을 만들어 보시오. https://dojang.io/mod/page/view.php?id=446 를 참조하시오.

  세 점은 (Point[0]->x,   Point[0]->y)   (Point[1]->x,   Point[1]->y)   (Point[2]->x,   CPoint[2]->y) 처럼 접근할 수 있도록 만드시오.

 

  나. 세 점의 좌표 Point[0]->x   Point[0]->y   Point[1]->x  Point[1]->y   Point[2]->x   Point[2]->y 를 임의로 입력하시오.

 

  다. 두 점 (x1,y1)  (x2,y2) 를 입력받아 두 점사이의 거리를 구하는 함수를 만드시오.

    https://dojang.io/mod/page/view.php?id=427 를 참조하시오

 

  라. '다'를 이용하여 (Point[0]->x,   Point[0]->y)   (Point[1]->x,  Point[1]->y) 사이의 거리를 구하고 이를 a라 하시오.
   (Point[1]->x,  Point[1]->y)  (Point[2]->x,  Point[2]->y) 사이의 거리를 구하고 이를 b라 하시오.

   (Point[2]->x,  Point[2]->y) (Point[0]->x,  Point[0]->y) 사이의 거리를 구하고 이를 c라 하시오.

 

  마. '라'를 이용하여, 헤론의 공식에 a,b,c를 대입하시오. 그리고 이 삼각형의 넓이를 구하시오.

   https://mathbang.net/541 의 하단의 노란색 박스를 참조하시오.

 

  바. '마'에서 0,0   0,1   1,0을 넣어 0.5가 나오는지 확인하시오.

  사. '바'에서 1,1   2,2  3,3을 넣으면 세 점이 일직선 위에 있기 때문에 넓이가 0이 되는데 이를 출력할수 있도록 해보시오.

 

 

3. 다음과 같은 원시자료가 있다.

 

 학번  닉네임    무게      용돈    학점

  1      오리        60       5000      D

  2      돼지       100       3000     C

  3      토끼        90        7000     B

  4      새           80        1000     A

  5      비둘기     50        2000     A

  6      두꺼비     70        4000     B

 

  이를 저장하기 위한 구조체를 구성하여 보시오. (1시간 소요)

  가. char NickName[100], int Weight, int Money, char Point 를 가지는 구조체를 만들고 구조체의 이름을 정해보시오.

 

  나. '가'에서 만든 구조체에 위 6마리 동물들의 데이터를 넣으시오. 단, -> 를 이용하여 일일이 넣으시오.

 

  다. '나'의 방법으로는 닉네임을 넣을 수 없음을 확인하고, strcpy를 이용하시오. https://dojang.io/mod/page/view.php?id=419 를 참조하시오.

 

  라. 데이터가 제대로 들어갔는지 출력하는 함수를 만드시오. 학번을 넣으면 그 학번을 가진 동물의 모든 데이터값(닉네임, 무게, 용돈, 학점)이 출력되도록 해보시오.

'C언어' 카테고리의 다른 글

C언어 기초 12주차  (0) 2020.12.21
C언어 기초 9주차  (0) 2020.11.29
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
by 맑은소금 2020. 12. 27. 23:37

1. 다음 사항에 대해 조사하여 보시오.(1시간 소요)

  가. 함수를 만들때 입력에 대해 Call By Value 가 무엇인지 조사하시오. 50자 이내로 적으시오.

      Call By Value : 값에 의한 호출

      함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.

      원래의 값이 보존된 채로 복사해 처리하기 때문에 안전하다.

      따라서 값을 담을 수 있는 모든 타입이 가능하다.

      정수형, 문자형, 문자열, 실수형 그리고 주소값까지 모두 값이 될 수 있다.

  나. int a = 10을 선언하고, 이 값을 입력으로 받는 함수를 만든뒤 그 함수에서는 제곱근을 출력하도록 해보시오. 이 값을 main함수에 있는 변수에 담은 뒤 출력해보시오

 

  다. 함수를 만들때 입력에 대해 Call By Reference 가 무엇인지 조사하시오. 50자 이내로 적으시오.

      Call By Reference : 참조에 의한 호출

      원본의 주소값을 전달하므로, 원본을 변경할 수 있다.

      이유는 주소값을 통해 원본에 접근하기 때문에 변경할 수 있다.

       주소값을 저장할 수 있는 자료형을 제공 해야 Call By reference를 사용할 수 있다.

  라. int* b = 20을 선언하고, 이 값의 주소를 입력으로 받는 함수를 만든뒤 그 함수에서는 제곱을 출력하도록 해보시오. 이 값을 main함수에 있는 변수에 담은 뒤 출력해보시오

  마. '나'와 '라'의 차이에 대해 설명해보시오.

     '나'는 원래의 값은 보존한 채로 함수내에서 복사하여 처리하므로 main함수 내 값은 변화가 없다.

     '라'는 원본의 주소값을 전달하므로, 원본을 변경할수 있다.(주소값을 통해 원본에 접근하여 변경할 수 있다).

      함수내에서 값을 바꾸면 main함수내에서도 값을 변경할 수 있게 된다.

 

2. 배열은 포인터로 취급할 수 있다. 이 사실을 이용하여 아래 문항을 해결하시오. (2시간 소요)

  가. 메인함수에서 행벡터 {1,4,2,3,5,7,6,8,9,10} 를 int* matrix로 선언하시오.

  나. matrix의 주소를 받는 새로운 함수를 선언하시오. 함수이름은 BubbleSort로 하시오.

  다. 함수 내용은 버블정렬을 이용하여 행벡터의 숫자를 차례대로 정렬하는 기능을 갖도록 하시오.

  라. 메인함수에서 BubbleSort를 호출한 후, 호출 전후의 행벡터의 모든 값을 출력해 보시오.

 

  마. matrix의 값 10개를 받는 새로운 함수를 선언하시오. 함수이름은 Selection Sort로 하시오. 10개의 입력은 일일이 직접 써서 넘기시오.

  바. 함수 내용은 선택정렬을 이용하여 행벡터의 숫자를 차례대로 정렬하는 기능을 갖도록 하시오.

  사. 메인함수에서 Selection Sort를 호출한 후, 호출 전후의 행벡터의 모든 값을 출력해 보시오.

  아. Call By Value와 Call By Referernce의 장단점을 100자 이내로 비교해보시오

    Call By Value : 원래의 값을 보존할 수 있는 장점이 있기 때문에 원래의 값은 건드리면 안되는 안전한 프로그램에

                       사용하면 좋다

    Call By Referernce : 본의 주소값을 전달하므로, 원본을 변경할수 있다.

                              (주소값을 통해 원본에 접근하여 변경할 수 있다).

                              그러기 때문에 원본의 값을 변경하기 때문에 위험 요소가 있다.

 

3. 이차정사각행렬도 포인터로 취급할 수 있다. 이 사실을 이용하여 아래 문항을 해결하시오. (2시간 소요)

  가. 메인함수에서 이차정사각행렬을 만들고 {1,2,3,4}를 넣으시오.

  나. 이차정사각행렬의 각 성분값을 받는 함수를 만드시오.

  다. 이차정사각행렬을 함수에 넣으면 그 역행렬이 만들어지도록 해보시오.  다음식을 참조하시오.

  라. 이차정사각행렬을 포인터를 이용하여 주소값을 넘기도록 해보시오.

  마. 이차정사각행렬을 함수에 넣으면 그 역행렬이 만들어지도록 해보시오.

'C언어' 카테고리의 다른 글

C언어 기초 13주차  (0) 2020.12.27
C언어 기초 9주차  (0) 2020.11.29
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
by 맑은소금 2020. 12. 21. 00:00

1. 함수의 선언 방식은

 

반환할자료형 함수명(입력1의자료형 입력1를받을변수명, 입력2를받을자료형 입력2를받을변수명...)

{

처리할 내용

return 반환할변수명

}

 

이다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(1시간 소요)

 

가. 반환할 자료형이 int 이고 입력은 int a, int b이며 처리할 내용은 int result = a+b 와 같이 두 수를 더해주는 프로그램을 짜고 return에 result를 주어 결과값이 반환되도록 만드시오. 함수명은 임의로 지으시오.

 

나. int main() 내에서 int x=10, y=20 를 주고, 아까 만든 함수의 이름을 쓰고 입력을 넣은 뒤 출력을 z1로 받아 printf 해보시오. 아래의 슈도코드를 참조하시오.

 

int main()

{

int x=10, y=20;

출력받을 변수 = 함수이름(입력1, 입력2);

printf()

}

 

 

다. 두 수를 곱하는 함수를 만들고 int main 내에서 호출하여 입력을 넣은 뒤 출력을 z2로 받아 printf 해보시오.

라. 두 수의 차이를 구하는 함수를 만드시오. 둘 중 더 큰수에서 더 작은 수를 빼도록 하시오. 출력을 z3으로 받아 printf 해보시오. (힌트 : 삼항연산자를 이용하면 간단히 해결됨)

 

마. 만든 함수들을 main 함수 뒤로 자리를 바꾸어 주고, main함수 앞에는 아까 만든 함수의 반환할자료형 함수명(입력1, 입력2...); 를 써서 함수의 형태만 먼저 정의하고 내용은 뒤에 있도록 해보시오. https://enter.tistory.com/59​ 를 참조하시오.

 

 

2. 다음 함수를 구현하시오.(3시간 소요)

가. 반복할 횟수 int n 을 받아 n!를 출력하는 함수를 만드시오. 입력받은 n으로부터 n=1일때까지 계속 곱하면 됨. (주의 : 재귀함수를 이용하지 마시오!) n 양수일때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

나. '가'를 재활용하여 퍼뮤테이션 함수를 만드시오. nPr 에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

다. '가~나'를 재활용하여 콤비네이션 함수를 만드시오. nCr에서 n,r를 입력받아 결과값을 출력하도록 하시오. n이 양수 r은 0이상이며 n>=r 인지 검사하여, 유효할때만 계산하고 그렇지 않은 경우 1을 출력하도록 하시오.

 

라. nCr 에서

n=1 r=0, n=1 r=1

n=2 r=0, n=2 r=1, n=2 r=2

n=3 r=0, n=3 r=1, n=3 r=2, n=3 r=3

n=4 r=0, n=4 r=1, n=4 r=2, n=4 r=3, n=4 r=4 ...

...

 

일때의 값을 출력하는 함수를 for를 두번 이용하여 만들어 보시오. n=10일때까지 계산하여 스크린샷을 첨부하시오.

'C언어' 카테고리의 다른 글

C언어 기초 13주차  (0) 2020.12.27
C언어 기초 12주차  (0) 2020.12.21
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
by 맑은소금 2020. 11. 29. 23:46

1. switch 함수의 사용 방법은

 

 switch( 조건분기할 변수 )

  case 변수의값 : 실행내용 break;

  case 변수의값2 : 실행내용 break;

  case 변수의값3 : 실행내용 break;

 default : 실행내용

 

과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(2시간 소요)

 

가. 이차방정식 ax2+bx+c = 0 에 대해 a,b,c를 선언하고, 각각 입력받으시오.

     단, 입력받은 a=0이면 0이 아닌 수를 입력할 때 까지 반복하여 입력을 받도록 하시오.(do while이용)

나. math.h를 include하시오

다. 변수 det를 선언하고, 이차방정식의 판별식을 계산하여 넣으시오.

라. 변수 SolNum를 선언하고, if~elseif~else로 해의 갯수를 넣으시오. '나'를 활용하시오.

마. switch 함수를 만들고 조건분기할 변수를 SolNum으로 하시오.

바. case에서 SolNum=2 이면 두 근을 표시하시오.

사. case에서 SolNum=1 이면 중근을 표시하시오.

아. case에서 SolNum=0 이면 '해가없다'를 표시하시오.

 

 

2. 숫자를 읽어주는 프로그램을 만드시오.(2시간 소요)

  가. 1~99까지 반복문을 for로 만드시오.

  나. 1~99까지의 수의 십의자리를 읽어주는 프로그램을 switch case로 만드시오.

    x번째 수에 대해, x를 10으로 나눈 몫 n이 십의 자리이다.

    n=1이면 '십', n=2이면 '이십', n=3이면 '삼십'....과 같이 십의 자리를 읽어주도록 만드시오.

  다. 1~99까지의 수의 일의자리 m를 읽어주는 프로그램을 switch case로 만드시오. 나머지 연산자를 이용하시오.

    m=1이면 '일' m=2이면 '이', m=3이면 '삼'.... 과 같이 일의 자리를 읽어주도록 만드시오.

  라. 나~다에서 switch case가 아닌 if ~elseif~ else~를 이용하여 똑같은 기능을 하도록 만드시오.

  마. switch case와 if elseif else의 특징에 대해 조사하고 어떤 때에 어떤 분기를 쓰면 유리한지 50자 이내로 정리해 보시오.

  switch case는 변수 값이 정해져 있을때 사용하는게 좋다. 조건을 보다 간결하게 표현할수 있는 장점이 있다.

  if elseif else는 변수가 정해진 범위(남자, 여자) 사용하는 것이 유리하다.

 

3. 환전 프로그램을 만드시오 (2시간 소요)

  가. 환전하고자 하는 한국 돈을 int input으로 입력받으시오.

  나. define을 통해 USA,JAPAN,EUROPE를 1,2,3 으로 정의하시오. 어느나라 돈으로 바꿀지를 정의할 때 사용할 것임(switch case의 입력임) 

  다. define을 통해 USD,JPY,EUR을 정의하시오. 현재 환율을 이용하시오. 단, 엔화환율은 100으로 나누어야 계산이 정상동작함

  라. 어느나라 통화로 바꿀것인지 입력받으시오.(1.USA 2.JAPAN 3.EUROPE) switch ~ case문을 통해 바꿀통화의 번호를 nation이라는 변수로 받아 USA,JAPAN,EUROPE와 비교하여 넣으시오.

 

 scanf( "%d", &nation );

 

 switch( nation )

  case USA : 실행내용 break;

  case JAPAN : 실행내용 break;

  case EUROPE : 실행내용 break;

 default : 실행내용

 

 

  마. case문 안에서 원화량을 환율로 나누어 외환으로 얼마인지 구하시오.

  바. 1달러 미만, 1000엔 미만, 1유로 미만은 절사하고 한국돈 잔돈으로 받을수 있도록 계산하시오.

  사. 최종적으로 한국돈입력, 어느나라통화로 바꿀지 입력하면 상대 통화로 얼마를 받을수 있고 잔돈은 얼마인지 출력되는 프로그램을 만드시오.

  아. define을 통해 USA,JAPAN,EUROPE,USD,JPY,EUR등을 정의하면 무엇이 좋은지 50자 이내로 쓰시오.

    define으로 정의해ㅅ 놓으면 코드 가독성도 좋고 프로그램을 읽기 쉽게 만들 수 있다.

    그리고 상수를 바꿔야 할 일이 생기면  지시어만 바꾸어 주면 되기 때문에 유지보수성에서도 좋다.

'C언어' 카테고리의 다른 글

C언어 기초 12주차  (0) 2020.12.21
C언어 기초 9주차  (0) 2020.11.29
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
by 맑은소금 2020. 11. 22. 23:07

# 기본과제 및 제출 양식

1. while의 사용방법은

 

while( 조건식 )

{

  조건식이 참일때 실행할 문장

}

 

과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오.(3시간 소요)

 

  가. 100, 97, 94... 와 같은 등차수열이 있다.

  An = a + (n-1)*d; a=초항, d=공차임을 이용하여 등차수열의 일반항을 수기로 구하시오. 위 수열에서 초항은 100, 공차는 -3이다. 이 때, n값을 숫자로 넣으면 A를 계산해주는 프로그램을 for문을 이용하여 구하시오. 예를들어, n=3 이면 94를 출력해야함.

 

 

  나. S1 = 100;

       S2 = 100 + 97;

       S3 = 100 + 97 + 94;

       Sn = A1 + A2 + A3 + ... + An; 임을 이용하여 S1, S2, S3 .... S34, S35 를 for문을 이용하여 구하시오. '가'에서 만들어놓은 일반항 프로그램을 재사용 하여 구현하시오. (예를들어, Sum = Sum + A; A = 103-3N; 과 같이 구하면 됨) 예를들어,  n=5 이면 470을 출력해야함. (=100+97+94+91+88)

 

 

  다. S34은 100+97+94...1 이어서 모든 수가 양수가 더해지고 있고, S35는 100+07+94+...1+ (-2) 처럼 되어 음수를 처음으로 더하게 되므로 Sn의 최대값은 S34이다. Sn의 최대값을 구하기 위해 어디까지 Sum하여야 하는지 수기로 계산하여야 하는 불편함이 있다. '나'에서 만든 프로그램을 조건식 A>0으로 주고 while문을 이용하여 똑같은 기능을 하는 프로그램을 구현하시오. 

 

  라. '다'를 개조하여, 초항과 공차를 입력받아

공차가 양수이거나 초항과공차가 모두 음수인경우 S1,S2,S3... S20를 출력하고,

초항이 양수이고 공차가 음수이면 수열의 값이 0 이상일때까지만 합해지도록 하여 부분합S를 출력해 보시오. for과 while중 구현하기 유리한 것을 선택하여 사용해 보시오.

 

  마. 코딩 중, for문과 while문 중 어떤 반복문을 어떨때 사용하는 것이 더 유리한지 50자 이내로 정리해보시오.

 

 for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다. 
 while문은 조건을 입력후 진행 할 경우에는 사용한다. 

 

 

2. Do while문의 사용법은

 

Do{

  조건식이 참이거나 첫 실행일때 실행할 문장

}while( 조건식 )

 

과 같다. 이를 암기하시오. 또한 아래 문제를 해결하시오. (1시간 소요)

 

  가. Do While문 바깥에 char password = 'a' 를 주시오. char input=0을 주시오.

  나. Do While문 안쪽에서 input를 scanf하시오.

  다. input의 값이 password가 아니면 '나'를 반복하고 "입력한 값은 ~이며 암호가 틀렸습니다"를 출력하고, a 이면 반복문을 종료하도록 하는 적당한 조건식을 작성하시오. do~while문 뒤쪽 바깥에 "a를 입력하였으므로 종료되었습니다"를 출력하시오.

 

 

  라. while문은 언제 끝나게 될지 모를 경우 조건식을 통해 종료조건을 줄 수 있다는데에 의의가 있으며 do~while문은 반드시 한 번 이상은 실행해야 하는경우, 예를들어 패스워드 검증 등에 쓰인다는 데에 의의가 있다. for, while, do while에 대해 언제 어떤 반복문을 사용하는 것이 더 유리한지 100자 이내로 정리해 보시오.

 

for문을 사용할 경우는 반복 횟수를 정확히 알고 있을 때 사용한다.
while문은 조건을 입력후 진행 할 경우에는 사용한다.
do while문은 반복제한 변수의 최초 상태와 무관하게 반복문을 한번 실행할 필요가 있을때 사용한다.

'C언어' 카테고리의 다른 글

C언어 기초 9주차  (0) 2020.11.29
C언어 기초 8주차  (0) 2020.11.22
c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 4주차  (0) 2020.10.25
by 맑은소금 2020. 11. 15. 22:51

 

# 기본과제 및 제출 양식

1. for의 사용방법은

 

  for(초기값;종료조건;증감값)

  {

     반복할 내용

   }

 

  과 같다. 이를 암기하시오. 또한 아래 문항을 해결하시오. (0.5시간 소요)

 

  가. int start를 선언하고 1을 주시오.

  나. int end를 선언하고 10을 주시오.

  다. for문의 초기값에 int i=start를 주시오.

  라. for문의 종료조건에 i<=end를 주시오.

  마. for문의 증감값은 i++를 주시오.

  바. 가~마를 이용하여, 1부터 10까지 출력되게 하시오. '반복할 내용'에 printf를 이용하여 구현하면 됨.

 

 

2. for를 이용하여 숫자들의 합을 구하는 프로그램을 구현하시오. (1시간 소요)

  가. int sum을 for문 이전에 선언하고 0을 주시오.

  나. '1.바'를 이용하여 sum에 1부터 10까지의 합을 구하시오. 이를 printf 하시오. (힌트 : sum = sum+i 처럼 하면 됨.) 참고자료 : https://wikidocs.net/11368

 

 다. '1.가', '1.나'를 개조하여, 합을 구할 시작숫자와 끝 숫자를 scanf하시오. 시작숫자와 끝 숫자 사이에 있는 모든 값의 합을 구하시오. 이를 printf 하시오.

 

 

3. continue의 사용방법은 다음과 같다.

 

for(초기값;종료조건;증감값)

{

 

  if(반복문을 띄워넘을 조건)

  {

     continue;

   }

 

 }

 

이를 암기하시오. 또한 아래 문항을 해결하시오. https://wikidocs.net/11613를 참조하시오. (1.5시간 소요)

 

  가. int i=1 ~ 9 까지 나오도록 for 문을 만드시오.

  나. int j=1 ~ 9 까지 나오도록 '가'에서 만든 for문 안에, for문을 하나 더 만드시오.

  다. 가,나를 이용하여 i*j를 만들고 구구단을 출력하도록 해 보시오

  라. '다'에서 구구단 3단이 출력되지 않도록 continue를 사용해 보시오.

  마. 논리연산자 &&,||,! 에 대해 조사하시오. 이를 이용하여 구구단 3,5,7단이 출력되지 않도록 해보시오.

논리연산자 의미
&& 논리 곱(AND)
|| 논리 합(OR)
! 부정(NOT)

// 논리 곱(&&)연산자
true && true  // true
true && false // false
false && true  // false
false && false // false

// 논리 합(||)연산자
true || true  // true
true || false // true
false || true  // true
false || false // false

// 논리 부정(!)연산자
!true  // false
!false // true

 

  바. 구구단 4,8단만 출력되도록 continue를 사용해 보시오. (! 연산자를 사용하시오.)

 

 4. break의 사용방법은 다음과 같다.

 

for(초기값;종료조건;증감값)

{

 

  if(반복문을 종료할 조건)

  {

     break;

   }

 

}

 

이를 암기하시오. 또한 아래 문항을 해결하시오. https://wikidocs.net/11613를 참조하시오. (1시간 소요)

 

 가. for문의 종료조건에 숫자1 또는 true를 주어 무한루프를 만드시오.

 나. 무한루프 이전의 밖에서 char password=0을 만드시오.

 다. 무한루프 안에서 password를 scanf하시오.

 라. password의 값이 a가 아니면 '다'를 반복하고 "입력한 값은 ~이며 암호가 틀렸습니다"를 출력하고, a 이면 break를 하여 반복문을 종료하도록 하시오. for문 뒤쪽 바깥에 "a를 입력하였으므로 종료되었습니다"를 출력하시오.

'C언어' 카테고리의 다른 글

C언어 기초 8주차  (0) 2020.11.22
c언어 기초 7주차  (0) 2020.11.15
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 4주차  (0) 2020.10.25
c언어 기초 3주차  (0) 2020.10.18
by 맑은소금 2020. 11. 8. 22:39

 

# 기본과제 및 제출 양식

1. if의 사용방법은

 

   if(조건식)

   실행문;

 

 의 형태이다. 이를 암기하시오. 그 후, 이를 이용하여 다음 문항을 해결하시오. https://dojang.io/mod/page/view.php?id=118 를 참조하시오. (0.5시간 소요)

  가. c언어에서 비교연산자(조건식)에 대해 조사하고, 표를 스크린샷으로 넣으시오.

    * 비교 연산자는 두개의 값을 비교하여 대소와 동등의 관계를 따지는 연산자이다.

      비교연산자의 연산 결과는 참, 거짓 값으로 반환한다. ex) True(1), False(0)

      종류는 아래와 같이 여섯개의 연산 자가 있다.

연산자 의미
== 같음 a == b  // a는 b와 같다.
!= 같지 않음 a != b   //  a는 b와 같지 않다.
> 크다 a > b    // a는 b보다 크다.
< 작다 a < b    // a는 b보다 작다.
>= 크거나 같다 a >= b  // a는 b보다 크거나 같다.
<= 작거타 같다 a <= b  // a는 b보다 작거나 같다.

  나. int형 변수 a를 선언하여 1을 넣으시오.

  다. int형 변수 b를 선언하여 2를 넣으시오.

  라. a=1이라면 "1이 들어있습니다."를 출력하는 프로그램을 작성하시오. 한편, 이 메시지가 나오는 것을 확인하시오.

  #include<stdio.h>

 

   int main()

   {

      int a = 1;

      int b = 2;  

     

      if(a == 1)

      {

          printf("a에 1이 들어있습니다.\n");

      }

 

      if(b == 1)

      {

          printf("b에 2가 들어있습니다.\n");

      }

 

        return 0;

    }

 

   

  마. b=1이라면 "1이 들어있습니다."를 출력하는 프로그램을 작성하시오. 실행하면 아무것도 나오지 않음을 확인하고 그 이유를 쓰시오.

  * int형 변수 b에 2를 선언 하였다. 그래서 if b == 1의 조건에 만족하지 않으므로 실행시 출력이 되지 않는다.

 

 

 ※ 주의 : x와 y 가 같은지 확인하는 연산은 x=y가 아니라 x==y임.

 

 

2. if else의 사용방법은

 

  if(조건식)

   실행문;

  else

   실행문;

 

 의 형태이다. 이를 암기하시오. 그 후, 이를 이용하여 다음 문항을 해결하시오.

http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=59&sca=C&page=1 를 참조하시오. (1시간 소요)

  가. int형 변수 a를 scanf하시오.

  나. 2로 나누었을때 나머지가 1인지 검사하는 코드 조건식에 넣으시오.

  다. if의 실행문은 "홀수입니다."로 printf 하시오.

  라. else의 실행문은 "짝수입니다."로 printf 하시오.

 

   #define _CRT_SECURE_NO_WARNINGS

   #include<stdio.h>

 

   int main()

   {

      int a;

      printf("변수 a에 값을 입력해주세요 : ");

      scanf("%d", &a);

      if(a%2 == 1)

      {

          printf("홀수입니다. \n");

      }

      else

     {

          printf("짝수입니다. \n");

      }

      return 0;

   } 

 

 

  마. 프로그램을 실행한 뒤 임의의 홀수를 scanf에 넣어 "홀수입니다."가 나오는지 확인하시오.

 

  바. 프로그램을 실행한 뒤 임의의 짝수를 scanf에 넣어 "짝수입니다."가 나오는지 확인하시오.

 

3. if elseif else의 사용방법은

 

  if(조건식)

   실행문;

  else if(조건식)

   실행문;

  else

   실행문;

 

 의 형태이다. 이를 암기하시오. 그 후, 이를 이용하여 다음 문항을 해결하시오. 문항 해결을 위해서 else if가 여러개 필요함을 연구해 보시오. (1시간 소요)

 

  가. 100점 만점인 시험점수를 저장하는 변수를 선언하고, scanf로 점수를 받으시오.

  #define _CRT_SECURE_NO_WARNINGS

  #include<stdio.h>

 

  int main()

  {

      int score;

      printf("변수 a에 값을 입력해주세요 : ");

      scanf("%d", &score);

      if(score > 100 || score < 0)

      {

          printf("값을 올바르게 입력해 주세요.");

      }

      else if(score >= 90)

      {

          printf("A 학점입니다. \n");

      }

      else if(score >= 80)

      {

          printf("B 학점입니다. \n");

      }

      else if(score >= 70)

      {

          printf("B 학점입니다. \n");

      }

      else if(score >= 60)

      {

          printf("B 학점입니다. \n");

      }

      else

      {

          printf("F 학점입니다. \n");

      }

      return 0;

  }

  나. 90점 이상이면 A를 출력하는 프로그램을 짜시오.

  다. 90점 이상은 아니지만 80점 이상이면 B를 출력하는 프로그램을 짜시오.

  라. 80점 이상은 아니지만 70점 이상이면 C를 출력하는 프로그램을 짜시오.

  마. 70점 이상은 아니지만 60점 이상이면 D를 출력하는 프로그램을 짜시오.

  바. 60점 미만이면 F를 출력하는 프로그램을 짜시오.

 

4. 삼항연산자의 사용법은

  값을받을변수 = 조건식 ? 참일때 할당값 : 거짓일때 할당값;

 

  의 형태이다. 이를 암기하시오. 그 후, 이를 이용하여 다음 문항을 해결하시오. (1시간 소요)

 

  가. 임의의 두 수 a,b를 scanf로 받으시오.

  나. 두수 중 큰수를 저장할 변수 max를 만드시오.

  다. 조건식에 두 수의 크기를 비교하는 문장을 쓰시오.

  라. max에 참일때 할당값을 a,b중 골라 넣으시오.

  마. max에 거짓일때 할당값을 a,b중 골라  넣으시오.

  바. 두 수중 더 큰수가 잘 찾아지는지 확인하시오.

  

   #define _CRT_SECURE_NO_WARNINGS

   #include<stdio.h>

 

   int main()

   {

      int abmax;

 

      printf("a와 b를 입력 해 주세요 : ");

      scanf("%d %d", &a, &b);

    

      max = a>b?a:b;

      printf("두 수중 더큰 값은 %d이다."max);

      return 0;

   }

 

'C언어' 카테고리의 다른 글

c언어 기초 7주차  (0) 2020.11.15
c언어 기초 6주차  (0) 2020.11.08
c언어 기초 4주차  (0) 2020.10.25
c언어 기초 3주차  (0) 2020.10.18
c언어 기초2주차  (0) 2020.10.04
by 맑은소금 2020. 11. 1. 22:52

# 기본과제 및 제출 양식

1. 증감연산자가 무엇인지 찾아보고 x의 초기값이 1일때의 사용 예시를 적고 결과값을 printf해 보시오. (0.5시간 소요)

  증감연산자 : 증감 연산자는 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자입니다.
                   이 연산자는 피연산자가 단 하나뿐인 단항 연산자입니다

  가. x++ :

  나. x-- :

 

2. 자동형변환(올림변환, 내림변환)에 대해 조사하고 아래 문항을 해결하시오(1시간 소요)

  가. 자동형변환(올림변환, 내림변환) 에 대해 50자 이내로 요약하여 설명해보시오.

      컴파일러에 의해 자동으로 수행되는 자료형 변환이라고 한다.
      자료형의 크기가 큰쪽으로 변환하는 것을 올림변환, 낮은 쪽으로 변환하는 것을 내림 변환이라 한다.

 

  나. double a = 10, double b=3 일때 a/b=3.333... 이지만, int c = a/b처럼 짜면 어떤 값이 나오는지 printf 로 확인하고 그 이유를 설명하시오.

      결과 값 : 3

      이유     :  double형인 a/b는 값이 3.333... 으로 출력되지만 int c로 변환될 경우 정수형 자료로 형변환되어서 

                   소수자리는 버리고 정수 부분인 3만 출력하게 된다.

 

  다. int a = 10, int b=3일때 a/b=3 이지만, 캐스팅 연산자 (double)를 사용하여  (double)a/ (double)b 처럼 계산 후 이것을 double x에 대입한 후 값을 확인하면 3.333.... 이 정상적으로 나옴을 확인하시오. 그리고 이유를 설명하시오.

      결과 값 : 3.333...

      이유     : a와 b int형 이지만 강제 형변환으로 double로 만들었다.

                  a = 10.000000, b= 3.000000으로 변환 되어 double 형의 값이 나오며 double x에 대입하여 3.333....을

                  출력하게 된다. 

 

  라. 임의의 유리수를 입력받아 소수점자리에서 올림, 버림 하여 정수부분만 뽑아주는 프로그램을 구현하시오.

     #define _CRT_SECURE_NO_WARNINGS
     #include <stdio.h>

       int main()
      {
         double a = 0;
         int b;
         printf("유리수 입력하시오 : ");
         scanf("%lf", &a);
         b = a;  
         printf("소수 자리에서 올림: %d\n", b + 1);
         printf("소수 자리에서 내림: %d\m", b);
         return 0;
       }

  마. '라'를 이용하여 임의의 유리수의 소수부분을 뽑아주는 프로그램을 구현하시오.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>

     int main()
     {  
       double a = 0;
       int b;
       printf("유리수 입력하시오 : : ");
       scanf("%lf", &a);
       b = a;
       printf("소수값 = %lf", a - b);
     }

 

  바. math.h를 include 한 뒤 '라,마'를 이용하여 임의의 유리수의 log값을 알 때 그 숫자를 소수넷째짜리까지 찾아주는 프로그램을 만드시오.

  #define _CRT_SECURE_NO_WARNINGS
  #include <stdio.h>
  #include <math.h>

  int main()
  {  
    double a = 0;
    printf("유리수 로그값 :");
    scanf("%lf", &a);  
    double b;
    b = pow(10.0, a);
    printf("원래의 유리수값:%.4f", b);
    return 0;
   }

    

3. 구구단 2~9단을 출력해보시오. 단, 반복문을 사용하지 마시오 (3시간 소요)

  가. int a=2, int b=1로 시작하시오.

  나. a * b = c라고 출력해보시오.

  다. b++를 하여 b를 2로 만드시오.

  라. a * b = c라고 출력해보시오.

  마. b++를 하여 b를 3로 만드시오.

  바. a * b = c라고 출력해보시오.

  사. b++를 하여 b를 4로 만드시오.

  아. a * b = c라고 출력해보시오.

  자. 나~아의 방식으로 b가 9일때까지 출력해보시오

  차. 자 항이 끝나면 a++를 하여 a=3으로 만드시오. b=1을 주어 초기화하시오.

  카. 다시 나~아의 방식으로 b가 9일때까지 출력해보시오.

  타. 가~카의 방식으로 a가 9일때까지 출력해보시오. 

   

  #define _CRT_SECURE_NO_WARNINGS
  #include<stdio.h>
  int main()
  {
   int a = 2;
   int b = 1;
   

   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;  
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);  
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);  
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);

   a++;
   b = 1;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;  
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);  
   b++;
   printf("%d * %d = %d\n", a, b, a * b);
   b++;
   printf("%d * %d = %d\n", a, b, a * b);  

   return 0;
  }

'C언어' 카테고리의 다른 글

c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 3주차  (0) 2020.10.18
c언어 기초2주차  (0) 2020.10.04
C언어 기초 1 주차  (0) 2020.09.20
by 맑은소금 2020. 10. 25. 23:47

 

# 기본과제 및 제출 양식

 1. 전처리문이 무엇인지 조사하고 다음 전처리문의 용도와 사용 예시를 적으시오. (0.5시간 소요)

  가. #include

      자주 사용되는 함수를 정의한 헤더파일을 불러오는 전처리문이다. 컴파일 전에 <>안에 있는

      헤더파일 내용을 가져온다. 하나의 파일에 모든 코드를 적을 순 없으므로 파일을 분활한 다음

      그것들의 헤더파일을 #include를 통해 접근하여 사용한다.

      대표적인 예 : #include<stdio.h> - 컴파일러가 지정한 위치에서 stdio.h를 찾을 수 있다.

 

  나. #define

       매크로를 정의하거나 매크로 상수, 매크로 함수를 만들때 사용한다.

       함수나 상수를 쉽게 사용 가능하다.

       대표적인 예 : #define PI 3.141592 

 

  다. #pragma

       컴파일러의 컴파일 방법을 세부적으로 제어할 때 사용한다. 컴파일러 제조회사에서 컴파일러의

       기능을 확장시킬 수 있도록 하는 지시자이다.

       대표적인 예 : #pragma Log2 0.3010

 

 2. 다음 값을 define 해보시오. (1.5시간 소요)

  가. Log2를 0.3010 으로 define 하시오. 첫글자를 대문자로 하시오.

      #define Log2 0.3010

 

  나. Log3을 0.4771 으로 define 하시오. 첫글자를 대문자로 하시오.

      #define Log3 0.4771 

 

  다. Log7을 0.8451 으로 define 하시오. 첫글자를 대문자로 하시오.

      #define Log7 0.8451

 

  라. 가~다를 이용하여 log2 ~ log10의 값을 구하는 코드를 작성해 보시오. 

     그리고 log2~log10 까지의 값을 printf 로 출력하시오.  

     제법은 https://namu.wiki/w/%EC%83%81%EC%9A%A9%EB%A1%9C%EA%B7%B8#fn-7 에 있는 [7]번 항목을

     참조하시오. 작성한 코드도 업로드하시오

​     #include <stdio.h>
     #define Log2 0.3010
     #define Log3 0.4771
     #define Log7 0.8451

     int main()
     {
       double log2 = Log2;
       double log3 = Log3;
       double log4 = 2 * Log2;  // 힌트 : 4=2*2
       double log5 = 1 - Log2; // 힌트 : 5=10/2
       double log6 = Log2 + Log3; // 힌트 : 6=2*3
       double log7 = Log7;
       double log8 = 3 * Log2;  // 힌트 : 8=2*2*2
       double log9 = 2 * Log3;  // 힌트 : 9=3*3
       double log10 = 1;// 힌트 : 10=2*5
   

      printf("log2=%.4f\nlog3=%.4f\nlog4=%.4f\nlog5=%.4f\nlog6=%.4f\nlog7=%.4f\nlog8=%.4f\n

      log9=%.4f\nlog10=%.4f\n", log2, log3, log4, log5, log6, log7, log8, log9, log10);
      return 0;  
     }

 

  마. PI값을 3.141592로 define 한 후 반지름을 입력받아 원의 넓이, 둘레를 출력하는 프로그램을 작성하시오. http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=52&sca=C&page=2 을 참조하시오.


   #define _CRT_SECURE_NO_WARNINGS
   #include <stdio.h>
   #define PI 3.141592

   int main()
  {  
    double r, s, l;

    printf("반지름을 입력하세요 : ");
    scanf("%lf", &r);

    s = r * r * PI;
    l = 2 * r * PI;

    printf("반지름 : %f \n", r);
    printf("넓이 : %f \n", s);
    printf("둘레 : %f \n", l);
    return 0;
  }

 

3. 아스키 코드에 대해 조사하시오 (2시간 소요)

  가. 아스키코드 표를 구하여 0~127까지의 대응값을 구하고 스크린샷을 첨부하시오.

  나. char 형 변수를 선언한 후, 65를 주시오. 이 변수를 출력하면 A가 나옴을 확인하시오. char 형 변수를 선언한 후, 97를 주시오. 이 변수를 출력하면 a가 나옴을 확인하시오. 작성한 코드도 업로드하시오. http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=53&sca=C&page=2 를 참조하시오.

 

  #include <stdio.h> 

   int main()
   {
     char first, second;
     first = 65;
     second = 97;

     printf("first : 65=%c\nsecond : 97=%c", first, second);
     return 0;
    }

 

 

  다. char 형 변수를 투자노트 ID의 글자수만큼 만들고, 각 변수에 아스키값을 준 후 자신의 ID를 출력하는 프로그램을 만드시오. 작성한 코드도 업로드하시오.

 

  #include <stdio.h>

  int main()

  { 
    char id1 = 119;// id의 첫번째 글자
    char id2 = 105;// id의 두번째 글자
    char id3 = 110;// id의 세번째 글자
    char id4 = 103;// id의 네번째 글자
    char id5 = 109;// id의 다섯번째 글자
    char id6 = 105;// id의 여섯번째 글자
    char id7 = 115;// id의 일곱번째 글자
    char id8 = 115;// id의 여덟번째 글자

    printf("%c%c%c%c%c%c%c%c", id1, id2, id3, id4, id5, id6, id7, id8);
    return 0;

  }

  라. 프로그램을 실행하면 비프음이 나오도록 아스키값을 준 후 실행을 확인하시오. 작성한 코드도 업로드하시오.

  #include <stdio.h> 

   int main()
   {
     char beaf = 07;
     printf("beaf : 07 소리음 %c", beaf);
     return 0;
    }

 

 

'C언어' 카테고리의 다른 글

c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 4주차  (0) 2020.10.25
c언어 기초2주차  (0) 2020.10.04
C언어 기초 1 주차  (0) 2020.09.20
by 맑은소금 2020. 10. 18. 21:30

 1. 자료형에 대해 조사하여 보고, 저장할 수 있는 데이터가 무엇인지 적으시오. ( 1시간 소요 )

  가. boolean : 1과 0의 값만 가지고 있는 자료형이다. 키워드로 True와 False를 가지고 있다.

  나. char : 8비트 정수형 처리변수로 character의 약자이다. 부호형 변수는 -128~127까지의 숫자를 취급한다.

  다. short : 2바이트의 크기 16bits를 저장할 수 있다. 16bits에는 65,536개의 숫자를 저장할 수 있다.

  라. int : 정수형을 처리하기 위한 변수 이다. 그 크기는 4 bytes이다. 하지만 정확한 답은 시스템에 따라서 가변적이다.

            ( 시스템은 2바이트, 4바이트, 8바이트 일 수 있기 때문이다)

  마. long : 32비트 운영체제에서는 4bytes, 64비트 운영체제에서는 8bytes라 한다.

  바. float : 실수형 변수로 부동소수점방식을 이용한다. float은 숫자 끝에 f를 붙인다.              

               단정밀도(single precision) 32비트

  사. double : 실수형 변수로 부동소수점 방식을 이용한다. 

                  배정밀도(double precision) 64비트

  아. String(안되는 경우 char*를 쓰시오) :

      문자와 숫자를 조합한 문자열이다. 다시말하면 문자열의 집합이다.

      c에서는 char *s1 ="Hello";

      포인터에 문자열 "Hello"의 주소 저장

 

 * 책의 설명되로 배웠을 때는 위와 같은 바이트라고 이야기들 한다.

   하지만 char는 기본 character set을 저장하기에 충분한 크기를 가지도록 설계된다.

   현대적인 대부분의 시스템은 ASCII기반이므로 최소 8bit이상의 크기를 가질 가능성이 매우 높고 정확하게

   고정된 것은 아니다.

   int는 실행 환경에서 자연스러운 크기를 가지게 된다. 따라서 대부분의 시스템에서 실행시 가장 합리적이고

   빠른동작을 보장하는 정수의 크기를 가지느 경우가 많다.

   

 2. 변수를 선언하는 방식과 값을 넣는 방법을 조사한 후, 변수에 다음 값을 입력하여 보시오. ( 1시간 소요 )

  가. boolean 형 변수를 선언하고, true를 넣어보시오. (숫자 0이나 1을 주어도 됨.)

      #include <stdio.h>
      #include <stdbool.h>

       int main()
      {
         bool one = true;
         printf("one == %d", one);
         
         return 0;
      }

    

  나. char형 변수를 선언하고, 알파벳 소문자 a를 넣어보시오.

      #include <stdio.h>

       int main()
       {
         char two;
         two = 'a';

         printf("two====%c", two);

         return 0;
        }

  다. short형 변수를 선언하고, 123을 넣어보시오.

      #include <stdio.h>

       int main()
       {
         short three;
         three = 123;

         printf("three====%d", three);

         return 0;
       }

  라. int형 변수를 선언하고, 10000을 넣어보시오.

      #include <stdio.h>

        int main()
        {
           int four = 10000;

           printf("four==%d", four);

           return 0;
         }

  마. long형 변수를 선언하고, 100000000000을 넣어보시오.

      #include <stdio.h>

        int main()
       {
         long long five = 100000000000;

         printf("five==%lld", five);

         return 0;
       }

  바. float형 변수를 선언하고, 3.141592를 넣어보시오.

      #include <stdio.h>

        int main()
        {
           float six = 3.141592;

           printf("six==%f",six);

           return 0;
         }

  사. double형 변수를 선언하고, 2.718281을 넣어보시오.

        #include <stdio.h>

          int main()
          {
              double seven = 2.718281;

              printf("seven==%f", seven);

              return 0;
          }

  아. String또는 char*형 변수를 선언하고, 자신의 닉네임을 넣어보시오.

        #include <stdio.h>

          int main()
          {
             char* nine = "스네이크";

             printf("nine==%s", nine);

             return 0;
         }

 

3. 서식지정자에 대해 조사하고, 2번에서 입력한 변수를 printf를 이용하여 출력해 보시오. ( 1시간 소요 )

  가. char형 변수를 출력해 보시오. 예를들어, "char형 변수에는 ~이 들어있습니다"로 출력하시오.

       #include <stdio.h>

       int main()
       {
         char two;
         two = 'a';

         printf("char형 변수에는 %c이 들어있습니다", two);

         return 0;
       }

  나. short형 변수를 출력해 보시오. 예를들어, "short형 변수에는 ~이 들어있습니다"로 출력하시오.

       #include <stdio.h>

        int main()
        {
           short three;
           three = 123;

           printf("short형 변수에는 %d이 들어있습니다", three);

           return 0;
         }

  다. int형 변수를 출력해 보시오. 예를들어, "int형 변수에는 ~이 들어있습니다"로 출력하시오.

      #include <stdio.h>

       int main()
       {
          int four = 10000;

           printf("int형 변수에는 %d이 들어있습니다", four);

           return 0;
         }

  라. long형 변수를 출력해 보시오. 예를들어, "long형 변수에는 ~이 들어있습니다"로 출력하시오.

      #include <stdio.h>

       int main()
       {
         long long five = 100000000000;

         printf("long long형 변수에는 %lld이 들어있습니다", five);

         return 0;
       }

  마. float형 변수를 출력해 보시오. 예를들어, "float형 변수에는 ~이 들어있습니다"로 출력하시오.

      #include <stdio.h>

        int main()
        {
          float six = 3.141592;

          printf("float형 변수에는 %f이 들어있습니다",six);

          return 0;
         }

  바. double형 변수를 출력해 보시오. 예를들어, "double형 변수에는 ~이 들어있습니다"로 출력하시오

      #include <stdio.h>

        int main()
        {
          double seven = 2.718281;

          printf("double형 변수에는 %f이 들어있습니다", seven);

          return 0;  
         }

  사. String 또는 char* 형 변수를 출력해 보시오. 예를들어, "String형 변수에는 ~이 들어있습니다"로 출력하시오

      #include <stdio.h>

        int main()
        {
          char* nine = "스네이크";

          printf("String(char*)형 변수에는 %s이 들어있습니다", nine);

          return 0;
         }

  아. 서식지정자를 이용하여, '마' 항의 값을 소수점 둘째자리 까지만 표현해 보시오.

       #include <stdio.h> 

        int main() 
        { 
          float six = 3.141592; 

          printf("float형 변수에는 %.2f이 들어있습니다",six); 

          return 0; 
         }

  자. 서식지정자를 이용하여, '바' 항의 값을 지수표기법으로 표현해 보시오

        #include <stdio.h> 

        int main() 
        { 
          double seven = 2.718281; 

          printf("double형 변수에는 %e이 들어있습니다", seven); 

          return 0;  
         }

4. 입력 받는 방법에 대해 조사하고, 받은 입력을 출력하는 코드를 작성 후 실행을 확인하시오. ( 1시간 소요 )

  가. scanf 함수의 사용법에 대해 설명해 보시오.

    scanf 함수는 표준입력(stdin) 으로 부터 데이터를 읽어와 형식(format) 문자열에 따라 나머지 인자들이 가리키는 장

    소에 값을 대입한다. 이 때, 나머지 인자들은 반드시 할당된 공간을 가리켜야 하며, 형식 문자열의 형식 태그가

    지정하는 바에 따라 대응되는 인자들이 가리키는 공간에 값이 대입된다.

    scanf("%d",&snake);

  나. char형 변수를 입력받아 보시오. 받은 입력을 printf로 모니터에 출력하시오.

      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>

        int main()
        {
          char snake;
          printf("char형 변수를 입력 하시오. \n");
          scanf("%c", &snake);
          printf("입력하신 변수는 %c 입니다", snake);

          return 0;
        }

  다. int형 변수를 입력받아 보시오. 받은 입력을 printf로 모니터에 출력하시오.

      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>

       int main()
       {
          int snake;
          printf("int형 변수를 입력 하시오. \n");
          scanf("%d", &snake);
          printf("입력하신 변수는 %d 입니다", snake);

          return 0;
        }

  라. double형 변수를 입력받아 보시오. 받은 입력을 printf로 모니터에 출력하시오.

      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>

       int main()
       {
         double snake;
         printf("double형 변수를 입력 하시오. \n");
         scanf("%lf", &snake);
         printf("입력하신 변수는 %lf 입니다", snake);

         return 0;
        }

5. 두 수를 입력받아 합과 곱을 구하시오. ( 1시간 소요 )

http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=49&sca=C&page=2 에 있는 소스를 분석하여 다음 문항을 해결하시오.

  가. int형 변수 두 개 a,b를 선언한 후, 0을 입력하시오.

      #define _CRT_SECURE_NO_WARNINGS 
      #include <stdio.h> 

       int main() 
       { 
        int a = 0; 
        int b = 0;

        return 0; 
       } 

  나. scanf를 통해 int형 a값을 받으시오.

      #define _CRT_SECURE_NO_WARNINGS 
      #include <stdio.h> 

        int main() 
        { 
          int a = 0; 
          int b = 0; 
          printf("첫번째 입력 : "); 
          scanf("%d", &a); 
       
          return 0; 
         } 

  다. scanf를 통해 int형 b값을 받으시오.

      #define _CRT_SECURE_NO_WARNINGS 
      #include <stdio.h> 

        int main() 
        { 
          int a = 0; 
          int b = 0; 
          printf("첫번째 입력 : "); 
          scanf("%d", &a); 
          printf("두번째 입력 : "); 
          scanf("%d", &b); 


          return 0; 
         } 

  라. int형 변수 c를 만든 뒤 나~다에서 구한 값을 더하여 입력하시오.

      #define _CRT_SECURE_NO_WARNINGS 
      #include <stdio.h> 

         int main() 
         { 
            int a = 0; 
            int b = 0; 
            printf("첫번째 입력 : "); 
            scanf("%d", &a); 
            printf("두번째 입력 : "); 
            scanf("%d", &b); 
            int c = a + b; 
   
            return 0; 
          } 

  마. int형 변수 d를 만든 뒤 나~다에서 구한 값을 곱하여 입력하시오.

        #define _CRT_SECURE_NO_WARNINGS 
        #include <stdio.h> 

           int main() 
           { 
              int a = 0; 
              int b = 0; 
              printf("첫번째 입력 : "); 
              scanf("%d", &a); 
              printf("두번째 입력 : "); 
              scanf("%d", &b); 
              int c = a + b; 
              int d = a * b;


              return 0; 
             } 

  바. c와 d를 printf 를 이용하여 출력하시오. 예를들어, "~와 ~의 합은~ 이고, 곱은~입니다"로 출력하시오.

      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>

       int main()
      {
          int a = 0;
          int b = 0;
          printf("첫번째 입력 : ");
          scanf("%d", &a);
          printf("두번째 입력 : ");
          scanf("%d", &b);
          int c = a + b;
          int d = a * b;

          printf("%d와 %d의 합은 %d 이고, 곱은 %d 입니다.", a, b, c, d);

          return 0;
       }

 

 

# 심화과제 제출 양식( 안해도 됨 )

1. 삼각형의 넓이를 구하는 프로그램을 만드시오.

  가. 밑변과 높이를 입력받아 넓이를 printf로 출력하는 프로그램을 만드시오. 밑변을 입력하라는 문구를 띄운 후, 밑변의 길이를 입력받고, 높이를 입력하라는 문구를 띄운 후 높이를 입력받으시오.

      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>
      #include <math.h>

        int main()
        {
           int width;
           int height;
           printf("밑변을 입력 하시오 . : ");
           scanf("%d", &width);
           printf("높이를 입력 하시오 . : ");
           scanf("%d", &height);
           double triangle = width * height * 0.5;
           printf("밑변 : %d, 높이 : %d, 삼각형의 넓이 : %f", width, height, triangle);

           return 0;
          }

 

  나. math.h를 include 한 후, 두 변의 길이와 한 각을 scanf로 받은 후 넓이를 printf하는 프로그램을 만드시오. 입력각도는 60분법 으로 받으시오.

 

2. 주식의 이익을 계산하는 프로그램을 만드시오.

  가. 매수단가와 매수량을 입력받으시오. 매수단가를 입력하라는 문구를 띄운 후, 매수단가를 입력받고, 매수량을 입력하라는 문구를 띄운 후, 매수량을 입력받으시오.

  나. 현재단가를 입력받으시오.

  다. 가~나를 이용하여 현재가치의 총량을 구하시오.

  라. double형 변수를 선언 한 후, 다 항의 수익률을 구하고, 소수점 둘째자리까지 printf로 출력하시오.

 

'C언어' 카테고리의 다른 글

c언어 기초 6주차  (0) 2020.11.08
c언어 기초 5주차  (0) 2020.11.01
c언어 기초 4주차  (0) 2020.10.25
c언어 기초 3주차  (0) 2020.10.18
C언어 기초 1 주차  (0) 2020.09.20
by 맑은소금 2020. 10. 4. 20:50
| 1 2 3 4 5 |