100제 [기초 - 산술연산] 1038~1046

  1. 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.
    (단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.)
#include <stdio.h>
main()
{
    long x,y;
    scanf("%ld %ld",&x,&y);
    printf("%ld",x+y);
    return 0;
}

처음에 int로 했는데 오류가 났음 그후에 long으로 자료형을 고치니까 됨
int와 long과 short의 차이는 다음에 C언어 문법에 올려야겠다.

  1. 정수 2개를 입력받아 합을 출력해보자.
    단, 입력되는 정수는 -2147483648 ~ +2147483648 이다.
#include <stdio.h>
main()
{
    long x,y;
    scanf("%ld %ld",&x,&y);
    printf("%ld",x+y);
    return 0;
}
  1. 입력된 정수의 부호를 바꿔 출력해보자.
    단, -2147483647 ~ +2147483647 범위의 정수가 입력된다.
#include <stdio.h>
main()
{
    long x;
    scanf("%ld",&x);
    printf("%ld",-x);
    return 0;
}

x를 받고 출력할때 x에 -를 넣어줌 아님 -1을 곱해줘도 무방

  1. 영문자 1개를 입력받아 그 다음 문자를 출력해보자.
    영문자 'A'의 다음 문자는 'B'이고, 영문자 '0'의 다음 문자는 '1'이다.
#include <stdio.h>
main()
{
    char c;
    scanf("%c",&c);
    printf("%c",++c);
    return 0;
}

다음 문자를 출력하기위해서는 아스키코드를 1올려줘야함
c=c+1과 c+=1과 ++c는(적어도 이문제에서는)똑같음 나는 최대한 짧게적으려고 노력했다.
c++은 하면안된다! (후치증감연산자는 출력하고 더해주기 때문이다)

  1. 정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자.
    단, -2147483648 <= a <= b <= +2147483647, b는 0이 아니다.
#include <stdio.h>
main()
{
    long a,b;
    scanf("%ld %ld",&a,&b);
    printf("%ld",a/b);
    return 0;
}

이 문제에서는 대소비교는 없기떄문에 수월했다
문제를 풀때 지문을 제대로 안읽어서 a,b를 정수로 입력받아야하는데 double로 선언했다가 5번빠꾸먹었다.

  1. 정수 2개(a, b) 를 입력받아 a를 b로 나눈 나머지를 출력해보자.
    단, 0 <= a, b <= +2147483647, b는 0이 아니다.
#include <stdio.h>
main()
{
    unsigned int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a%b);
    return 0;
}

a,b의 범위를 고려해 unsigned로 선언했다. 역시 대소비교가 없어서 쉽다

  1. 정수를 1개 입력받아 1만큼 더해 출력해보자.
    단, -2147483648 ~ +2147483647 의 범위로 입력된다.
    -주의
    계산되고 난 후의 값의 범위(데이터형)에 주의한다.
#include <stdio.h>
main()
{
    long x;
    scanf("%ld",&x);
    printf("%ld",++x);
    return 0;
}

만약 short나 int로 x를 받았다면 오버플로우가 발생했을것이다.

  1. 정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.
    단 0 <= a, b <= 2147483647, b는 0이 아니다.
#include <stdio.h>
int main()
{
    long a,b;
    scanf("%ld %ld\n",&a,&b);
    printf("%ld\n",a+b);
    printf("%ld\n",a-b);
    printf("%ld\n",a*b);
    printf("%ld\n",a/b);
    printf("%ld\n",a%b);
    printf("%.2lf\n",(float)a/(float)b);
    return 0;
}

위에서 했던것들을 한꺼번에 모아놓았다. 문제를 잘읽고 소수점 밑자리만 조심하자.

  1. 정수 3개를 입력받아 합과 평균을 출력해보자.
    단, -2147483648 ~ +2147483647
#include <stdio.h>
main()
{
    long x,y,z;
    scanf("%d %d %d",&x,&y,&z);
    printf("%d\n",x+y+z);
    printf("%.1lf",(float)(x+y+z)/3);
    return 0;
}

평균은 실수로 처리해줘야하는데, 변수앞에 (자료형)을 써주어서 형변환을 해준다.
보통 형변환은 작은형->큰형은 제한사항이 없는데, 큰형->작은형은 오류가 날 수 있다.

좋은 웹페이지 즐겨찾기