반응형

1063 : [기초-삼항연산] 두 정수 입력받아 큰 수 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d", (a>b ? a:b));
  return 0;

 }

1064 : [기초-삼항연산] 정수 3개 입력받아 가장 작은 수 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
     int a,b,c;
     scanf ("%d %d %d", &a, &b, &c);
     printf("%d",(a>b?b:a)>c?c:(a>b?b:a));
 }

해설

 

더보기

위 문제는 삼항연산을 익힐 수 있다.

 

삼항연산자는

조건 ? 참일 때의 값 : 거짓일 때의 값

위 공식을 따르고 있다.

 

  예시)

    int a = 5;
    int b = 10;

    int max = (a > b) ? a : b;


  위 코드는 a의 값이 크면 a가 반환되고 b의 값이 크면 b의 값이 반환된다. 고로 10이 반환된다.

  이를 응용해서 3자리의 숫자를 비교하게되면

 

    int num1 = 5;
    int num2 = 10;

    int num3 = 15;


    int max = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);

   

   이런 식이 나온다.

   풀이하면 괄호 먼저

  (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);

  -> ((num1 > num3) ? num1 : num3) ㅡ> 5>15?5:15 ㅡ>15 반환

  (num1 > num2) ? 15 : ((num2 > num3) ? num2 : num3);

  -> ((num2 > num3) ? num2 : num3) ㅡ> 10>15?10:15 ㅡ> 15 반환

  (num1 > num2) ? 15 : 15;

   -> 5>10?15:15

   = 15

   이렇게 가장 큰 값을 도출해낸다   

반응형
반응형

1053 : [기초-논리연산] 참 거짓 바꾸기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d", &a);
  printf("%d", !a);
  return 0;

 }

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d",  a&&b);
  return 0;

 }

1055 : [기초-논리연산] 하나라도 참이면 참 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d",  a||b);
  return 0;

 }

1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d", (a&&!b||!a&&b));
  return 0;

 }

1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d", (a==b));
  return 0;

 }

1058 : [기초-논리연산] 둘다 거짓일 경우만 참 출력하기

답 : 

#include <stdio.h>
 int main(void)
 {
  int a,b;
  scanf("%d %d", &a,&b);
  printf("%d", (!a&&!b));
  return 0;

 }

 

해설

더보기

위 문제는 논리연산을 익힐 수 있다.

 

1이 입력되었을 때 0을 출력하고 싶으면 !(not)연산자를 사용한다.

a와 b가 둘다 참일 때 1을 출력하고 싶으면 &&(and) 연산자를 사용한다. a&&b

a와 b가 둘중 하나라도 참일 때 1을 출력하고 싶으면 ||(or) 연산자를 사용한다. a||b

a와 b가 참/거짓이 겹치지 않을 때에만 참을 출력하고 싶으면 XOR연산을한다.

- 공식) a&&!b||!a&&b  (1 이면서 0 이거나 0 이면서 1인.)

a와 b가 둘다 참일때에만 참을 출력하고 싶으면 == 연산자를 사용한다. a==b

a와 b가 둘다 거짓일때만 참을 출력하고 싶으면 !a&&!b 공식을 사용하면 된다. (0이면서 0일때.)

 

  1. 논리 AND (&&):
    • 모든 조건이 참일 때만 전체 표현식이 참(True)이 됩니다.
    • A && B는 A와 B가 모두 참일 경우에만 참이 됩니다.
  2. 논리 OR (||):
    • 최소한 하나의 조건이 참일 때 전체 표현식이 참(True)이 됩니다.
    • A || B는 A 또는 B 중 적어도 하나가 참이면 참이 됩니다.
  3. 논리 NOT (!):
    • 조건을 반대로 뒤집습니다.
    • !A는 A가 거짓(False)일 때 참(True)이 되며, A가 참일 때 거짓(False)이 됩니다.
반응형
반응형

1049 : [기초-비교연산] 두 정수 입력받아 비교하기1

답 : 

#include <stdio.h>

int main()
{
int a,b;
	scanf("%d %d",&a,&b);
	printf("%d",a>b);
}

1050 : [기초-비교연산] 두 정수 입력받아 비교하기2

답 : 

#include <stdio.h>

int main()
{
int a,b;
	scanf("%d %d",&a,&b);
	printf("%d",a==b);
}

1051 : [기초-비교연산] 두 정수 입력받아 비교하기3

답 : 

#include <stdio.h>

int main()
{
int a,b;
	scanf("%d %d",&a,&b);
	printf("%d",b>=a);
}

1052 : [기초-비교연산] 두 정수 입력받아 비교하기4

답 : 

#include <stdio.h>

int main()
{
int a,b;
	scanf("%d %d",&a,&b);
	printf("%d",b!=a);
}

해설

더보기

위 문제는 비교연산을 익힐 수 있다.

 

a>b 경우 a가 크면 참(true)=1 b가 크면 거짓(false)=0을 반환한다.

a==b 경우 a와 b의 값이 같으면 참(true)=1 같지 않으면 거짓(false)=0을 반환한다.

b>=a 경우 b가 a와 같은 값을 가지거나 그보다 큰 값을 가지고 있으면 참(true)=1 같지 않으면 거짓(false)=0을 반환한다.

b!=a 경우 b와 a가 다른 값을 가지고 있으면 참(true)=1 같지 않으면 거짓(false)=0을 반환한다.

 

비교 연산 (Comparison Operations):

    • !=: 두 값이 다른지 비교
    • ==: 두 값이 같은지 비교
    • <: 왼쪽 값이 오른쪽 값보다 작은지 비교
    • >: 왼쪽 값이 오른쪽 값보다 큰지 비교
    • <=: 왼쪽 값이 오른쪽 값보다 작거나 같은지 비교
    • >=: 왼쪽 값이 오른쪽 값보다 크거나 같은지 비교
반응형
반응형

1038 : [기초-산술연산] 정수 2개 입력받아 합 출력하기1

답 : 

#include<stdio.h>
int main(){
	long long int a,b;
	scanf("%lld %lld",&a,&b);
	printf("%lld",a+b);	
}

1039 : [기초-산술연산] 정수 2개 입력받아 합 출력하기2

답 : 

#include<stdio.h>
int main(){
	long long int a,b;
	scanf("%lld %lld",&a,&b);
	printf("%lld",a+b);	
}

해설

 

더보기

1038, 1039 문제는 long long int 데이터형을 이용한 큰 숫자 덧셈 문제이다.

 

-2,147,483,648부터 2,147,483,647까지의 범위를 초과하는 덧셈 문제에서는 int가 아닌 long long int 데이터 타입을 사용하여 계산해야한다.

 

long long 자료형 변수의 값을 지정하는 서식 지정자는 lld를 사용한다.

1040 : [기초-산술연산] 정수 1개 입력받아 부호 바꿔 출력하기

답 : 

#include <stdio.h>

int main()
{
	int a;
	scanf("%d", &a);
	printf("%d", -a);

}

해설

 

더보기

위 문제는 변수의 값에 -를 붙여 부호를 바꾸는 방법을 알 수 있다.

 

출력 시 변수 a앞에 -를 붙여주면 -로 변환된 변수의 값이 출력된다.

1041 : [기초-산술연산] 문자 1개 입력받아 다음문자 출력하기

답 : 

#include <stdio.h>

int main()
{
	char a;
	scanf("%c", &a);
	printf("%c", a+1);

}

해설

 

더보기

위 문제는 문자 a를 b로 출력하는 문제이다.

 

문자 a는 10진수로 65의 값을 가지고 있다. 그래서 a+1은 65+1로 연산이 가능하다.

66을 %c로 출력하게 되면 아스키문자표에 b를 출력하게된다.

1042 : [기초-산술연산] 정수 2개 입력받아 나눈 몫 출력하기

답 : 

#include <stdio.h>

int main()
{
	int a,b;
	scanf("%d %d", &a,&b);
	printf("%d", a/b);
}

1043 : [기초-산술연산] 정수 2개 입력받아 나눈 나머지 출력하기

답 : 

#include <stdio.h>

int main()
{
	long long int a;
	long long int b;
  	scanf("%lld %lld" ,&a,&b);
  	printf("%lld",a%b);
}

1044 : [기초-산술연산] 정수 1개 입력받아 1 더해 출력하기

답 : 

#include <stdio.h>

int main()
{
	long long int a;
 	scanf("%lld" ,&a);
  	printf("%lld",++a);

}

1045 : [기초-산술연산] 정수 2개 입력받아 자동 계산하기

답 : 

#include <stdio.h>

int main()
{
	int a;
	int b;
  scanf("%d %d",&a,&b);
  printf("%d\n",a+b);
  printf("%d\n",a-b);
  printf("%d\n",a*b);
  printf("%d\n",a/b);
  printf("%d\n",a%b);
  printf("%.2f\n",(float)a/b);
}

1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 계산하기

답 : 

#include <stdio.h>

int main()
{
	long long int a;
	long long int b;
	long long int c;
  scanf("%lld %lld %lld" ,&a,&b,&c);
  printf("%lld\n",a+b+c);
  printf("%.1f\n",(a+b+c)/3.0);

}

해설

더보기

1042, 1043,1044,1045 문제는 정수를 연산하는 문제이다.

 

산술 연산 (Arithmetic Operations):

  • 덧셈 (+) ++ +1
  • 뺄셈 (-) -- -1
  • 곱셈 (*)
  • 나눗셈 (/)
  • 나머지 구하기 (%)
반응형
반응형

1031 : [기초-출력변환] 10진 정수 1개 입력받아 8진수로 출력하기

답 : 

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%o", n);
}

1032 : [기초-출력변환] 10진 정수 1개 입력받아 16진수로 출력하기

답 : 

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%x", n);
}

1033 : [기초-출력변환] 10진 정수 1개 입력받아 16진수로 출력하기2

답 : 

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%X", n);
}

1034 : [기초-출력변환] 8진 정수 1개 입력받아 10진수로 출력하기

답 : 

#include <stdio.h>
int main()
{
	int n;
	scanf("%o", &n);
	printf("%d", n);
}

1035 : [기초-출력변환] 16진 정수 1개 입력받아 8진수로 출력하기

답 : 

#include <stdio.h>
int main()
{
	int n;
	scanf("%x", &n);
	printf("%o", n);
}

1036 : [기초-출력변환] 영문자 1개 입력받아 10진수로 출력하기

답 : 

#include <stdio.h>

int main()
{
	int n;
scanf("%c",&n);
printf("%d", n);
}

1037 : [기초-출력변환] 정수 입력받아 아스키 문자로 출력하기

답 : 

#include <stdio.h>

int main()
{
	int n;
scanf("%d",&n);
printf("%c", n);
}

해설

 

 

 

 

 

 

더보기

1031,1032,1033,1034,1035,1036 문제는 10진수 8진수 16진수를 나타내는 서식지정자를 활용하여 입출력하는 방법을 익힐 수 있다.

 

%d: 10진수 형태로 출력하는 서식 지정자입니다.

%x: 16진수 형태(소문자)로 출력하는 서식 지정자입니다.

%X: 16진수 형태(대문자)로 출력하는 서식 지정자입니다.

%o: 8진수 형태로 출력하는 서식 지정자입니다.

 

서식지정자

  • %d: 부호 있는 10진수 정수 출력
  • %u: 부호 없는 10진수 정수 출력
  • %o: 부호 없는 8진수 정수 출력
  • %x 또는 %X: 부호 없는 16진수 정수 출력 (소문자 또는 대문자 사용)
  • %f: 부동소수점 수 출력 (기본 소수점 이하 6자리까지)
  • %e 또는 %E: 부동소수점 수를 지수 형식으로 출력 (소문자 또는 대문자 사용)
  • %c: 문자 출력
  • %s: 문자열 출력
  • %p: 포인터 변수의 주소 출력
  • %%: % 문자 그대로 출력
반응형
반응형

1028 : [기초-데이터형] 정수 1개 입력받아 그대로 출력하기2

답 : 

#include <stdio.h>
int main()
{
	unsigned int n;
	scanf("%u", &n);
	printf("%u", n);

}

해설

더보기

위 문제는 데이터타입에 따른 출력값의 변화를 이해할 수 있다.

각 데이터타입에 따라 저장할 수 있는 값의 범위와 메모리 크기가 다르다.

 

문제에서 2147483648 을 출력하려면 

int는 최대 크기가 2147483647임을 고려해서 unsigned int를 사용할 수 있다.

 

  1. int (정수 타입):
    • 크기: 보통 4바이트 (32비트 시스템) 또는 8바이트 (64비트 시스템)
    • 범위: 대략 -2,147,483,648 (-2^31) ~ 2,147,483,647 (2^31 - 1)
  2. unsigned int (부호 없는 정수 타입):
    • 크기: 보통 4바이트 (32비트 시스템) 또는 8바이트 (64비트 시스템)
    • 범위: 0 ~ 4,294,967,295 (2^32 - 1)
  3. long (긴 정수 타입):
    • 크기: 보통 4바이트 (32비트 시스템) 또는 8바이트 (64비트 시스템)
    • 범위: 대략 -2,147,483,648 (-2^31) ~ 2,147,483,647 (2^31 - 1) (32비트) 또는 -9,223,372,036,854,775,808 (-2^63) ~ 9,223,372,036,854,775,807 (2^63 - 1) (64비트)
  4. unsigned long (긴 부호 없는 정수 타입):
    • 크기: 보통 4바이트 (32비트 시스템) 또는 8바이트 (64비트 시스템)
    • 범위: 0 ~ 4,294,967,295 (2^32 - 1) (32비트) 또는 0 ~ 18,446,744,073,709,551,615 (2^64 - 1) (64비트)
  5. long long (더 긴 정수 타입, C99에서 추가):
    • 크기: 8바이트 (64비트 시스템)
    • 범위: 대략 -9,223,372,036,854,775,808 (-2^63) ~ 9,223,372,036,854,775,807 (2^63 - 1)
  6. 부동소수점 타입 (Floating-Point Types):
    • float: 대략 4바이트 (32비트 시스템)
    • double: 대략 8바이트 (64비트 시스템)
    • 범위: 부동소수점 표현에 따라 다양하며, 표현 가능한 유효 숫자 범위가 더 넓습니다.
  7. 문자 타입 (char):
    • 크기: 1바이트
    • 범위: 주로 ASCII 문자 코드에 해당하는 -128 ~ 127 (부호 있는 char) 또는 0 ~ 255 (부호 없는 char)

1029 : [기초-데이터형] 실수 1개 입력받아 그대로 출력하기2

답 : 

#include <stdio.h>
int main()
{
	double d;
	scanf("%lf", &d); 
	printf("%.11lf ", d);

}

해설

더보기

위 문제는 실수 데이터타입에 따른 출력값의 변화를 이해할 수 있다.

 

입력되는 실수 범위가 float데이터형보다 클 때 double형을 사용할 수 있다.

double 데이터형을 이용해 변수를 선언,

scanf 함수 서식지정자에는 lf로 작성해야한다.

printf 함수의 .11.을 기준으로 11자리까지 반올림하여 출력한다.

1030 : [기초-데이터형] 정수 1개 입력받아 그대로 출력하기3

답 : 

#include <stdio.h>
int main()
{
	long long int n;
	scanf("%lld", &n);
	printf("%lld", n);
}

해설

더보기

위 문제는long long int의 사용법을 설명한다.

 

서식지정자에는 lld로 작성해야한다.

 

long long int:

  • 크기: 8바이트 (64비트 시스템)
  • 범위: 대략 -9,223,372,036,854,775,808 (-2^63) ~ 9,223,372,036,854,775,807 (2^63 - 1)
반응형
반응형

1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기

답 : 

#include <stdio.h>
int main(){
	int a,b;
	scanf("%06d-%07d", &a, &b); 
	printf("%06d%07d", a, b);
}

해설

더보기

위 문제는 printf의 형식 문자열에 따라 출력되는 형태가 다름을 이해할 수 있다.

 

scanf("%06d-%07d" 의 형식 문자열을 풀이해보면
0(필드너비 설정), 6만큼의 필드 너비를 지정한 후 10진수 정수를 입력받고 -(하이픈)으로 정수를 구분한다는 뜻이다.

0(필드 너비 설정), 7만큼의 필드 너비를 지정한 후 10진수 정수를 입력받는다.

  예시 주민번호 - 190101-1234567)

  scanf 입력을 받을 때 a변수에 190101를 입력하고 구분을위한 -(하이픈)을 입력한다. b변수에 뒷자리를 1234567입력한다.

  printf 출력시 두 변수를 붙여서 출력하고 싶다면 출력 형식 문자열에 변수 a,b를 붙여주면 된다 ㅡ> "%d%d"

% : 형식 지정자를 시작하는 기호
d : 10진수 정수를 출력할 때 사용하는 형식지정자

1021 : [기초-입출력] 단어 1개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>
int main(){
	char data[51]="";
	scanf("%s",data);
	printf("%s",data);
	
}

해설

더보기

위 문제는 문자 1개가 아닌 문자열, 단어를 출력하는 문제이다.

 

문자 1개를 출력할 때는 

char을 사용하여 변수 생성,

형식 지정자 "%c"를 사용하여 입출력 이였을 때,

 

문자열, 단어의 경우

char을 사용하여 배열변수 data[51] 선언, ="" 으로 빈 문자열 초기화,

형식 지정자 "%s"를 사용하여 입출력을 하게 된다.

 

배열이란.

동일한 데이터 타입을 가진 여러 개의 변수를 하나의 이름으로 묶어서 관리하는 자료구조이다.

배열은 연속적인 메모리 공간에 저장되며, 각 요소는 인덱스를 사용하여 접근할 수 있다.

배열의 인덱스는 0부터 시작하며, 문자열의 경우 마지막의 null값을 가진다.

 

  인덱스 예시)

  int numbers[5] ㅡ> 배열 길이가 5인 int형 배열 선언

  - numbers[0]

  - numbers[1]

  - numbers[2]

  - numbers[3]

  - numbers[4]

 

  문자열 예시)

  char str[6] = "hello" ㅡ> 배열 길이가 6인 문자열 배열 선언

  - 'h'

  - 'e'

  - 'l'

  - 'l'

  - 'o'

  - '\o'

  마지막에는 항상 NULL (\o) 문자가 들어가야 하므로 5개의 문자열을 입력해도 널값이 들어갈 공간까지 +1해서 선언해줘야한다.

 

  \o : 문자열의 끝을 나타내며, 문자열 함수들이 문자열의 끝을 알 수 있게 해주는 역할

1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>
int main(){
	char data[2001]="";
	fgets(data, 2000, stdin);
	printf("%s",data);
	
}

해설

더보기

위 문제는 문장을 출력하는 문제이다.

 

문장을 출력할 때는 

char을 사용하여 배열변수 생성, 배열 초기화 ="" ,

fgets 함수를 이용하여 stdin(표준입력=키보드)로 문자열을 입력받는다.

  fgets(변수,배열크기,stdin) 

"%s" 형식 지정자로 문장을 출력한다.

 

문장은 함수가 문장의 끝을 알 수 있게 \o이 들어갈 공간까지  n+1 공간을 설정해준다.

2000개의 문자를 입력받고 싶을 때 2001의 배열 공간을 선언해야한다.

1023 : [기초-입출력] 실수 1개 입력받아 부분별로 출력하기

답 : 

#include <stdio.h>
int main()
{
    int a, b;
    scanf("%d.%d", &a, &b);
    printf("%d\n%d", a, b);
    
}

해설

더보기

위 문제는 .을 기준으로 앞, 뒤의 숫자를 출력하는 문제이다.

 

예시로 1.23을 1,23으로 출력하고싶다면

a 변수에 1을 담고, b 변수에 23을 담은 후 .으로 구분하여 입력받는다.

printf 함수로 "%d,%d",a,b를 출력하게 되면 1,23으로 출력된다.

 

문제에 맞게 줄바꿈으로 구분하고 싶으면 \n 이스케이프 문자를 사용하여 출력해주면 된다.

1024 : [기초-입출력] 단어 1개 입력받아 나누어 출력하기

답 : 

#include <stdio.h>
int main()
{
    char d[31];
    scanf("%s", d);
    for(int i=0; d[i]!='\0'; i++) {
    	printf("\'%c\'\n",d[i]);
	}
    
}

해설

더보기

위 문제는 문자열을 for문을 통해 나누어 출력하는 문제이다.

 

단어 Boy를 입력받기 위해 배열변수 char 변수이름[배열길이]를 선언한다.

scanf 함수로 "%s" 변수 안에 'Boy'를 입력한다.

 

이제 배열 안에는 d[0]='B' , d[1]='o' , d[2]='y'...  가 지정되어 있는 상태이다.

 

for 문을 사용하여 배열의 인덱스 별 값을 출력하는 코드를 작성할 차례이다.

for 초기값; 조건식; 증감식 구조를 가지고 있다.

초기값 : index를 나타낼 변수 i를 선언한 후 배열의 index는 0부터 시작하니 초기값을 0으로 설정해준다.

조건식 : 문자열의 끝을 나타내는 \o 을 만나면 배열이 종료되게 선언한다. != (비교연산자)는 같지않음을 나타낸다.

증감식 : 0부터 1씩 증가하며 배열의 인덱스를 가져올거기 때문에 i ++(증감연산자)을 입력한다.

 

for문의 순서는 초기값->조건식 ->참이면 함수실행 -> 증감식실행 ->조건식 ->참이면 함수 실행 ... 이다.

 

i= 0일때 d [0]은 'B'이기 때문에 '\o'과 같지 않다-> 함수를 실행한다. 

d [0]=B를 가져온 후 이스케이프 문자 \' %c \' \n 이기 때문에 출력은 'B' 줄바꿈이 된다.

 

연산자

  1. 산술 연산자 (Arithmetic Operators):
    • +: 덧셈
    • -: 뺄셈
    • *: 곱셈
    • /: 나눗셈
    • %: 나머지 연산 (모듈로 연산)
  2. 할당 연산자 (Assignment Operators):
    • =: 변수에 값을 할당
    • +=: 덧셈 후 할당
    • -=: 뺄셈 후 할당
    • *=: 곱셈 후 할당
    • /=: 나눗셈 후 할당
    • %=: 나머지 연산 후 할당
  3. 비교 연산자 (Comparison Operators):
    • ==: 같음
    • !=: 다름
    • <: 작음
    • >: 큼
    • <=: 작거나 같음
    • >=: 크거나 같음
  4. 논리 연산자 (Logical Operators):
    • &&: 논리 AND (그리고)
    • ||: 논리 OR (또는)
    • !: 논리 NOT (부정)
  5. 증감 연산자 (Increment/Decrement Operators):
    • ++: 변수를 1 증가
    • --: 변수를 1 감소
  6. 비트 연산자 (Bitwise Operators):
    • &: 비트 AND
    • |: 비트 OR
    • ^: 비트 XOR
    • ~: 비트 NOT
    • <<: 왼쪽 시프트
    • >>: 오른쪽 시프트
  7. 조건(삼항) 연산자 (Conditional (Ternary) Operator):
    • condition ? value_if_true : value_if_false: 조건식이 참이면 첫 번째 값, 거짓이면 두 번째 값 반환
  8. sizeof 연산자:
    • sizeof(variable_type): 변수 또는 데이터 타입의 크기를 바이트 단위로 반환
  9. 형변환 연산자 (Type Casting Operator):
    • (new_type) expression: 표현식을 다른 데이터 타입으로 변환
  10. 포인터 연산자 (Pointer Operators):
    • &: 변수의 주소를 얻음

*: 포인터를 통해 변수를 간접적으로 조작

1025 : [기초-입출력] 정수 1개 입력받아 나누어 출력하기

답 : 

#include <stdio.h>
int main()
{
	int a,b,c,d,e;
    scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);
    printf("[%d]\n", a*10000);
    printf("[%d]\n", b*1000);
    printf("[%d]\n", c*100);
    printf("[%d]\n", d*10);
    printf("[%d]\n", e*1);
}

해설

더보기

위 문제는 산술연산자를 사용하는 문제이다.

 

12345를 입력받았을 때 

10000

  2000

   300

    40

     5

를 출력하려한다.

 

12345=10000*1+1000*2+100*3+10*4+1*5 로 풀이할 수 있다.

 

scanf 로 숫자 5개를 붙여서 입력받은 후 각 자리 숫자에 * 를 하면 되는 문제이다.

 

printf는 아래 구조로 입력해주면 된다.

printf(형식지정자,변수)

변수 위치에 원하는 연산자를 추가하여 값을 도출해낼 수 있다.

  예시

  a=1 ,b=2

  printf("%d", a+b) ㅡ> 1 + 2 = 3

  printf("%d", a-b) ㅡ> 1 - 2 = -1

  printf("%d", a*b) ㅡ> 1 * 2 = 2

  printf("%d", a/b) ㅡ> 1 / 2 = 0

  printf("%d", a%b) ㅡ> 1 % 2 = 1

1026 : [기초-입출력] 시분초 입력받아 분만 출력하기

답 : 

#include <stdio.h>
int main()
{
	int h, m, s;
    scanf("%d:%d:%d", &h, &m, &s);
    printf("%d", m);
}

해설

더보기

위 문제는 여러 번수를 입력받아도 원하는 변수만 출력할 수 있다는 것을 이해할 수 있다.

 

scanf 함수로 3개의 변수에 :로 구분을 두어 값을 저장하였다.

printf 함수로 특정 한 변수만 출력해보인다.

1027 : [기초-입출력] 년월일 입력받아 형식 바꿔 출력하기

답 : 

#include <stdio.h>
int main()
{
	int y,m,d;
    scanf("%d.%d.%d", &y, &m, &d);
    printf("%02d-%02d-%04d", d,m,y);
}

해설

더보기

위 문제는 입력받은 변수를 원하는 형식으로 출력하는 방법을 익힐 수 있다.

 

printf 함수의 소스를 확인해보면 %02d-%02d-%04d의 형태 지정을 확인할 수 있다.

%02d 하나를 풀어보면 2개의 최소너비를 가진 후 값이 없으면 그부분은 0으로 채운 10진수의 정수를 출력한다. 의 의미를 가지고있다.

반응형
반응형

1010 : [기초-입출력] 정수 1개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", n);

    return 0;
}

해설

더보기

위 문제는 변수 선언과 scanf 함수를 익힐 수 있다.

 

int n; : 정수(int)형으로 n이라는 이름을 가진 변수를 생성한다.

scanf() ; : stdio.h의 내장함수로 입력값을 변수안에 저장할 때 사용한다.

"%d" : "%d"는 형식지정자로 10진수 정수를 입력받는다.

&n : &는 변수의 주소를 나타내는 기호이며, n의 변수의 주소를 뜻한다.

 

*변수란

 -프로그래밍에서 데이터를 저장하고 참조하기 위한 식별자이다. C언어에서 변수는 데이터를 저장하는 메모리 공간을 나타내며, 프로그램 안에 데이터를 임시적으로 보관하는 역할을 한다.

-변수는 선언 시 데이터 타입을 지정해야 하며 그 데이터에 따라 형태와 크기가 결정된다.

  1. 정수형 데이터 타입:
    • int: 일반적인 정수 데이터를 표현합니다. 보통 4바이트 크기를 가지며, 대부분의 정수 계산에 사용됩니다.
    • short: 짧은 정수 데이터를 표현합니다. 2바이트 크기를 가집니다.
    • long: 긴 정수 데이터를 표현합니다. 4바이트 이상의 크기를 가지며, 플랫폼에 따라 크기가 다를 수 있습니다.
    • long long: 매우 긴 정수 데이터를 표현합니다. 8바이트 크기를 가집니다.
  2. 부동소수점 데이터 타입:
    • float: 단정도 부동소수점을 표현합니다. 보통 4바이트 크기를 가지며, 근사치로 실수를 표현합니다.
    • double: 배정도 부동소수점을 표현합니다. 8바이트 크기를 가지며, 더 정확한 실수 계산에 사용됩니다.
  3. 문자형 데이터 타입:
    • char: 하나의 문자를 표현합니다. 1바이트 크기를 가지며, ASCII 코드에 따라 문자를 저장합니다.
  4. 포인터 데이터 타입:
    • pointer: 메모리 주소를 저장하는 데이터 타입으로, 다른 변수나 데이터에 대한 간접적인 접근을 가능하게 합니다.
  5. 복합 데이터 타입:
    • struct: 여러 개의 다른 데이터 타입을 하나의 논리적인 그룹으로 묶어 표현하는 사용자 정의 데이터 타입입니다.
    • union: 여러 개의 다른 데이터 타입을 동일한 메모리 위치에서 공유하여 표현하는 사용자 정의 데이터 타입입니다.
    • enum: 열거형 상수를 정의하는 데이터 타입으로, 상수의 집합을 나타내는 데 사용됩니다.
  6. 다른 데이터 타입:
    • void: 값을 가지지 않는 데이터 타입으로, 주로 함수의 반환 타입이나 포인터 타입으로 사용됩니다.

-변수의 이름규칙

  • 변수 이름은 알파벳, 숫자, 밑줄(_)로 구성됩니다.
  • 변수 이름은 숫자로 시작할 수 없습니다.
  • 대소문자를 구분합니다.
  • 예약어(키워드)는 변수 이름으로 사용할 수 없습니다.

1011 : [기초-입출력] 문자 1개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>

int main()
{
    char n;
    scanf("%c", &n);
    printf("%c", n);

    return 0;
}

해설

더보기

*문자 1개를 입력받아 출력하는 경우

- char 데이터 타입을 사용하여 변수를 선언한다.
- "%c" : 문자 한개를 출력하는 형식지정자를 사용한다.

1012 : [기초-입출력] 실수 1개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>

int main()
{
    float n;
    scanf("%f", &n);
    printf("%f", n);

    return 0;
}

해설

더보기

*실수 1개를 입력받아 출력하는 경우

float 데이터 타입을 사용하여 변수를 선언한다.
"%f" : 실수 한개를 출력하는 형식지정자를 사용한다.

1013: [기초-입출력] 정수 2개 입력받아 그대로 출력하기

답 : 

#include <stdio.h>

int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d", a, b);
}

해설

더보기

*정수 2개를 입력받아 출력하는 경우

- int 데이터 타입을 사용하여 변수를 2개 선언한다.
"%d %d" : 정수형 데이터를 공백을 두어 두번 입력한다.

 

함수에 따른 형식 지정자의 역할

- scanf : 입력받을 데이터 타입과 구분할 기호를 지정한다.

- printf : 입력받은 데이터를 출력할 때 형태를 지정한다.

  두 함수 예시)

  "%d,%d" ㅡ> 10,20

  "%d-%d" ㅡ> 10-20

입력 또는 출력에 지정된 형식에 맞게 입력,출력이 된다.

1014: [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기

답 : 

#include <stdio.h>

int main()
{
char x, y;
scanf("%c %c", &x, &y);
printf("%c %c", y, x);
}

해설

더보기

*문자 2개를 입력받아 순서를 바꾸어 출력하는 경우

- char 데이터 타입을 사용하여 변수를 2개 선언한다.
"%c %c" : 정수형 데이터를 공백을 두어 두번 입력한다.

 

printf 함수 안에 출력할 변수의 순서를 변경해주면 변경된 순서로 변수안에 값이 출력된다.

1015: [기초-입출력] 실수 입력받아 둘째 자리까지 출력하기

답 : 

#include <stdio.h>

int main()
{
float x;
scanf("%f", &x);
printf("%.2f", x);
}

해설

더보기

*실수를 입력받아 n번째까지 출력하는 경우

- float 데이터 타입을 사용하여 변수를 1개 선언한다.
"%f" : 실수형 데이터를 입력한다.

 

printf의 출력 형식을 지정하는 출력 문자열에 "%.nf"를 입력하면 된다.

%.2f의 경우 . (소수점의 기준)으로 2번째까지 반올림하여 출력한다는 의미이다.
  예시)

  1.1234 입력 ㅡ> %.2f ㅡ> 1.12 출력

  1.1234 입력 ㅡ> %0.7f ㅡ> 1.1234000 출력

1017: [기초-입출력] 정수 1개 입력받아 3번 출력하기

답 : 

#include <stdio.h>

int main()
{
int a;
scanf("%d", &a);
printf("%d %d %d", a, a, a);
}

해설

더보기

*정수 1개를 입력받아 n번 출력하는 경우

- int 데이터 타입을 사용하여 변수를 1개 선언한다.
"%d" : scanf 형식에 정수형 데이터를 입력한다.

- "%d %d %d" : printf 형식에 출력하고싶은 정수형의 맞게 입력한 후 변수도 같은 개수로 선언해준다.

 

printf 함수 안에 출력할 형식과 변수를 여러번 입력하면 그대로 출력된다.

1018: [기초-입출력] 시간 입력받아 그대로 출력하기

답 : 

#include <stdio.h>
int main(){
	int h,m;
	scanf("%d:%d", &h, &m); 
	printf("%d:%d",h,m);
}

해설

더보기

*정수 2개를 입력받아 그대로 출력하는 경우

- int 데이터 타입을 사용하여 변수를 2개 선언한다.
"%d:%d" : scanf 형식에 정수형 데이터를 입력한다. 이때 입력받을 형식에 맞춰 :로 구분해준다.

- "%d:%d" : printf 형식에 출력하고싶은 정수형의 맞게 :로 구분해서 입력한다.

1019: [기초-입출력] 연월일 입력받아 그대로 출력하기

답 : 

#include <stdio.h>
int main(){
	int y,m,d;
	scanf("%04d.%02d.%02d", &y, &m, &d); 
	printf("%04d.%02d.%02d", y,m,d );
}

해설

더보기

*정수 3개를 입력받아 그대로 출력하는 경우

- int 데이터 타입을 사용하여 변수를 3개 선언한다.
"%d.%d.%d" : scanf 형식에 정수형 데이터를 입력한다. 이때 입력받을 형식에 맞춰 .로 구분해준다.

  정해진 정수의 길이가 있을 경우 필드 너비를 나타내는 0을 사용한다.

 

%03d 형식 지정자는 다음과 같은 의미를 가진다.

  • %: 형식 지정자를 시작하는 기호입니다.
  • 0: 출력 너비를 나타냅니다. 여기서는 출력 너비를 3로 설정했습니다.
  • 3: 필드 너비를 나타냅니다. 여기서는 필드 너비를 3로 설정하였습니다.
  • d: 10진수 정수를 출력할 때 사용하는 형식 지정자입니다. 
    예시) %02d 는 10의자리까지 필드 너비를 지정하되 값이 없을 경우 0으로 채운다는 의미이다.
반응형

+ Recent posts