입력을 받는함수
scanf();사용하기
파이썬의 input과 비슷한 함수로 생각한다.
(간단한 차이점을 적자면 파이썬의 input의 기능 == c언어의 printf + scanf의 기능 이다)
복습잠깐
printf 의 서식문자에서 바로 초기화하는 방법과
변수라는 그릇에 담에서 printf에서 선언하는 방식이 있었다.
오늘은 scanf에 대하여 알아본다.
scanf("%d",&어쩌구);
여기서 &라는거는 주소의 개념으로
포인터와 연관되어 있다.
다음은 스캔에프를 이용하여 간단한 평균을 구하는 코드이다
int main()
{
int x,y,z;
int sum;
float avr;
printf("x값 : \n");
scanf("%d",&x);
printf("y값 : \n");
scanf("%d",&y);
printf("z값 : \n");
scanf("%d",&z);
sum=x+y+z;
avr=sum/3;
printf("합은 %d이다 \n",sum);
printf("평균은 %f이다 \n",avr);
return 0;
}
결과로
x값 :
1
y값 :
2
z값 :
3
합은 6이다
평균은 2.000000이다
계속하려면 아무 키나 누르십시오 . . .
요래된다.
만약 \n을 스캔에프 와 있는 프린트에프에서 빼면
int main()
{
int x,y,z;
int sum;
float avr;
printf("x값 : ");
scanf("%d",&x);
printf("y값 : ");
scanf("%d",&y);
printf("z값 : ");
scanf("%d",&z);
sum=x+y+z;
avr=sum/3;
printf("합은 %d이다 \n",sum);
printf("평균은 %f이다 \n",avr);
return 0;
}
x값 : 1
y값 : 2
z값 : 3
합은 6이다
평균은 2.000000이다
계속하려면 아무 키나 누르십시오 . . .
요래 출력된다.
scanf 에서는 값을 입력받고 엔터를 치면 다음단계로 넘어가므로
줄바꿈은 자동적으로 이루어진다.
다음은 원과 과련된 코드이다
int main()
{
double r;
double l;
double s;
printf("반지름 입력 : ");
scanf("%lf",&r);
l=3.14*2*r;
s=3.14*r*r;
printf("둘레길이는 %lf \n",l);
printf("넓이는 %lf \n", s);
return 0;
}
결과는
반지름 입력 : 5
둘레길이는 31.400000
넓이는 78.500000
계속하려면 아무 키나 누르십시오 . . .
요래 나온다.
다음은 팀프로젝트로 몇단을 출력할지 입력받고 출력하는
코드이다
int main()
{
int g;
printf("몇단 출력할래? : ");
scanf("%d",&g);
printf("%d 단을 출력 \n",g);
printf("%dx1=%d \n",g,g*1);
printf("%dx2=%d \n",g,g*2);
printf("%dx3=%d \n",g,g*3);
printf("%dx4=%d \n",g,g*4);
printf("%dx5=%d \n",g,g*5);
printf("%dx6=%d \n",g,g*6);
printf("%dx7=%d \n",g,g*7);
printf("%dx8=%d \n",g,g*8);
printf("%dx9=%d \n",g,g*9);
return 0;
}
결과는 다음과 같다
몇단 출력할래? : 5
5 단을 출력
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
5x9=45
계속하려면 아무 키나 누르십시오 . . .
이번엔 스캔에프로 문자를 넣는 방법이다.
char 을 사용한다%c 로 스캔에프에 쓴다.
스페이스바 또한 문자로 취급한다 이를 방지하기 위한
간단한 팁으로는 "%c" 가 아닌 " %c" 즉 서식문자 앞에
스페이스를 사용해주면 방지할 수 있다.
char 으로 선언된 변수에 숫자를 집어넣어서 초기화를 시키면
아스키코드 표를 반영하여 출력된다 예로 다음 두개는 같다.
char a;
a='A';
a=65;
다음 예제로 본다
int main()
{
char code='A';
char code1=65;
printf("%c \n",code);
printf("%c \n",code1);
printf("\n");
return 0;
}
결과는
A
A
이다.
자료형의 크기를 파악하는 함수는
sizeof 함수를 사용한다
sizeof(int) 이렇게 사용함
다음과 같다
int main()
{
printf("int크기%d 바이트 \n",sizeof(int));
printf("double크기%d 바이트 \n",sizeof(double));
printf("float크기%d 바이트 \n",sizeof(float));
printf("char크기%d 바이트 \n",sizeof(char));
return 0;
}
결과로
int크기4 바이트
double크기8 바이트
float크기4 바이트
char크기1 바이트
가 나오고
변수의 자료형을 선언할때 그 크기를 조절하고 싶을때
만약 음수의 범위가 필요없다면 nusigned를 앞에 붙이고 자료형을 사용한다.
대신 음수의 범위만큼 양수의 범위가 늘어난다.
다음은 간단한 예제이다
문자를입력 받아 변수에 저장하고 다시 출력하는 코드이다.
int main()
{
char code;
printf("문자하나 받아라 : ");
scanf("%c", &code);
printf("받은문자 출력해봐라 : %c \n",code);
printf("\n");
return 0;
}
결과로
문자하나 받아라 : a
받은문자 출력해봐라 : a
가 나온다.
다음은 간단한 형변환이다
그릇이 작은것에 큰것을 담을때 저절로 버리는 부분이 있다 (실수를 담아서 정수로 바꿀때 실수부를 버린다.)
int main()
{
int i;
float f;
f=3.14;
i=f;
printf("%d \n",i);
printf("\n");
return 0;
}
이 결과로
3
가 나온다.
다음도 간단한 예제이다
int main()
{
unsigned int l;
unsigned int r;
float t;
printf("빛의 속도 : ");
scanf("%d km/s",&l);
printf("태양과 지구의 거리 : ");
scanf("%d km",&r);
t=r/l;
printf("빛이 태양에서 지구로오는데 걸리는 시간 : %f sec \n",t);
printf("\n");
return 0;
}
이 결과로
빛의 속도 : 300000km
태양과 지구의 거리 : 149600000km
빛이 태양에서 지구로오는데 걸리는 시간 : 498.000000 sec
가 나오는데 신기한건 명령창에 단위도 쳐야 다음으로 넘어간다는 것이다.
다음은 좀더 숫자를 보완한 코드이다
int main()
{
float l;
float r;
float t;
printf("빛의 속도 : ");
scanf("%f km/s",&l);
printf("태양과 지구의 거리 : ");
scanf("%f km",&r);
t=r/l;
printf("빛이 태양에서 지구로오는데 걸리는 시간 : %.5f sec \n",t);
printf("\n");
return 0;
}
결과로
빛의 속도 : 300000km/s
태양과 지구의 거리 : 149600000km
빛이 태양에서 지구로오는데 걸리는 시간 : 498.66666 sec
와 같이 나온다.
빛이 1년간 가는거리는?
double a;
a=l*60*60*24*365;
printf("빛이 1년간 가는거리 : %lf km \n",a);
이 코드를 위에 추가해주면
빛이 1년간 가는거리 : 9460800000000.000000 km
이와 같이 나온다.
실수형에서 자릿수 제한하는 방법
%f
%.5f 이건 소수5자리까지 나오게하며
printf 에서만 사용하자 scanf에서는 사용하면 오류가난다
왜냐하면 출력할 값을 정제하여 출력하는 과정이기 때문에
넣지도 않은 값에서는 넣으면 오류가 난다.
'관 > 솔직한 c 언어 공부' 카테고리의 다른 글
c언어 기초 공부 06. (0) | 2019.11.06 |
---|---|
c언어 기초 공부 05. (0) | 2019.11.05 |
c언어 기초 공부 04. (0) | 2019.11.04 |
c언어 기초 공부 02. (0) | 2019.11.03 |
c언어 기초 공부 01. (0) | 2019.11.02 |
댓글