c언어 4주차

코드깎는 노인·2020년 10월 25일
0

기본과제 및 제출 양식

  1. 증감연산자가 무엇인지 찾아보고 x의 초기값이 1일때의 사용 예시를 적고 결과값을 printf해 보시오. (0.5시간 소요)
  가. x++ :
    int x=1;
    printf("처음 %d\n",x++);
    printf("나중 %d",x);    
    
  나. 
  x-- :
  int x=1;
  printf("처음 %d\n",x--);
  printf("나중 %d",x);    
  1. 자동형변환(올림변환, 내림변환)에 대해 조사하고 아래 문항을 해결하시오(1시간 소요)

    가. 자동형변환(올림변환, 내림변환) 에 대해 50자 이내로 요약하여 설명해보시오.
    자료형의 크기가 큰쪽으로의 형변환을 형확장이라 하고 암시적 형 변환이라 하기도한다.반대로 자료형 크기가작은쪽으로 변환하는것을 형축소라 한다.

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

    double형간 연산의 결과는 double형이지만 int c에 대입하면 정수형으로 형변환되어 3이 나옴

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

    캐스팅연산자를 통하여 의도적으로 형변환임을 알려주어 정상적으로 형변환됨

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

int main()
{
    double a;
    int b;
    printf("임의의 유리수를 입력하시오\n");
    scanf("%lf",&a);
    b=a;
    printf("올림 %d",b+1);
    printf("버림 %d",b);
}

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

int main()
{
  double a;
  int b;
  printf("임의의 유리수를 입력하시오\n");
  scanf("%lf",&a);
  b=a;
  printf("소수부분 %f",a-b);

}

바. math.h를 include 한 뒤 '라,마'를 이용하여 임의의 유리수의 log값을 알 때 그 숫자를 소수넷째짜리까지 찾아주는 프로그램을 만드시오.
pow함수안에서 변수를 사용할 경우 gcc prac.c -o power -lm lm플래그를 통해 링커가 pow 함수콜을 해당 라이브러리에 매칭해줘야 하고 power라는 실행파일을 통해 빌드파일을 실행시켰다

  1. 구구단 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일때까지 출력해보시오.

int main()
{
    int a=2,b=1;
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b,a*b);
    a++; b=1;
     printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b++,a*b);
    printf("%d * %d = %d\n",a,b,a*b);
}

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

  1. 다음 증감연산자의 역할과 차이를 설명하고 이를 printf로 보이시오. http://tujanote.cafe24.com/bbs/board.php?bo_table=pds2&wr_id=55&sca=C&page=2 을 참조하시오.

    가. x++ : x++ 하기 전 x값, 후의 x값 비교하여 printf
    int main()
    {
    int a=1;
    printf("#1 %d\n",a++);
    printf("#2 %d\n",a);
    }

    나. ++x : ++x 하기 전 x값, 후의 x값 비교하여 printf
    int main()
    {
    int a=1;
    printf("#1 %d\n",++a);
    printf("#2 %d\n",a);
    }

    다. x-- : x-- 하기 전 x값, 후의 x값 비교하여 printf
    int main()
    {
    int a=1;
    printf("#1 %d\n",a--);
    printf("#2 %d\n",a);
    }

    라. --x : --x 하기 전 x값, 후의 x값 비교하여 printf
    int main()
    {
    int a=1;
    printf("#1 %d\n",--a);
    printf("#2 %d\n",a);
    }

  1. 나눗셈을 하는 프로그램을 만들되 %를 사용하지 마시오.

    가. 제수와 피제수를 int형으로 입력받으시오.
    int dividend,divisor,quotient;
    printf("피제수입력");
    scanf("%d",÷nd);
    printf("제수입력");
    scanf("%d",&divisor);

    나. 두 수를 나누어 몫을 구하고 int형 변수에 넣으시오
    quotient=dividend/divisor;

    다. 두수를 나눈 제수, 피제수, 몫으로 부터 나머지 정리(검산식)를 이용하여 나머지를 구하시오. 힌트 : b=aQ+R, b-aQ=R
    remainder=dividend-divisor*quotient;
    printf("나머지%d",remainder);

    라. 제수, 피제수, 몫, 나머지를 출력하시오. 예를들어, ~을 ~으로 나누면 몫은~이고 나머지는~이다 로 출력하시오.
    int main()
    {
    int dividend,divisor,quotient,remainder;
    printf("피제수입력\n");
    scanf("%d",÷nd);
    printf("제수입력\n");
    scanf("%d",&divisor);
    quotient=dividend/divisor;
    remainder=dividend-divisor*quotient;
    printf("%d을 %d로 나누면 몫은 %d 나머지는 %d",dividend,divisor,quotient,remainder);

}

profile
내가 볼려고 만든 블로그

0개의 댓글