C
C 2일차 정리
12-9일 일요일
#include<stdio.h> //헤더파일을 입력해야함
----실수를 사용할경우
int main(int argc, char* argv[])
{
printf("%f", 1234.5678);
printf("\n%e", 1234.5678);
printf("\n%4.2f", 1234.5678); //4자리 공간 확보후 소수점아래 2자리 표현
printf("\n%3.1f", 1234.5678); //3자리 공간 확보후 소수점아래 1자리 표현
printf("\n%10.3f", 1234.5678); //10자리 공간 확보후 소수점아래 3자리 표현
printf("\n%10.3e", 1234.5678); //지수형 부동소수점수
}
1234.567800
1.234568e+003
1234.57_//반올림함.칸보다 값이 더 길다면 칸은 무시후 출력
1234.6
_ _1234.568 //칸보다 값이 더 짧다면 빈칸 출력.
1.235e+003
----> -를 활용시 왼쪽부터 일반적으로 오른쪽부터 칸을 채움 예제
큰 실수나 정수는 l이나L을 적어서 표기
int main(int argc, char* argv[])
{
float su1 = 123.456;
float su2 = 12.3456789;
double su3 = 1.23456789;
printf("su1 = %f\n",su1);
printf("su2 = %11.8f\n",su2);
printf("su1 = %6.2f\n",su1);
printf("su3 = %11.8f\n",su3);
printf("su3 = %-11.8lf끝\n",su3);
}
su1 = 123.456001 //가장 가까운 값으로 표기
float은 6자리까지 0.xxxxx1
double은 13자리부터 0.xxxxxxxxxxxx1이 표기되기에 더 정확
su2 = 12.34567928 //28은 쓰레기 값
su1 = 123.46
su3 = _ 1.23456789 //공백이 남음
su3 = 1.23456789 끝 //공백이 뒤쪽에 남음
%3c -> 3칸 확보후 문자 한개 오른쪽부터
%-20s ->
##실수는 정확히 표현 불가능
----->scanf라는 변수 예제
int main(int argc, char* argv[])
{
int num1, num2, sum;
printf("정수 2개를 입력하세요...");
scanf("%d%d",&num1, &num2);
sum=num1+num2;
printf("두 수의 합은 %d 입니디.",sum);
}
정수 2개를 입력하세요... // 1 스페이스 2나 엔터로 구분 가능
12
321
두 수의 합은 333 입니디.
--------->문자열 입력 예제
int main(int argc, char* argv[])
{
char name1[30],name2[30]; //이 공간안에 문자열이 들어간다.
printf("이름을 입력하세요!");
scanf("%s", name1);
printf("이름을 입력하세요!");
scanf("%s", name2);
printf("나의 이름은 %s 입니다.\n", name1);
printf("나의 이름은 %s 입니다.\n", name2);
}
이름을 입력하세요!abc
이름을 입력하세요!def
나의 이름은 abc 입니다.
나의 이름은 def 입니다.
실수%f,정수%d,문자열%s
----->실수, 문자, 연산 문제
int main(int argc, char* argv[])
{
//실수를 입력 하시오
/*
float num1;
printf("실수를 입력하세요...");
scanf("%f", &num1);
printf("입력된 실수 값은 %f 입니디.", num1);
*/
//이니셜을 입력 하시오
/*
char ch1, ch2, ch3;
printf("이니셜을 입력하세요...");
//scanf("%c %c %c", &ch1,&ch2,&ch3); //엔터도 문자로 입력이 된다 해결방법은 fflsush
scanf("%c",&ch1);
fflush(stdin);//fflush로 표준입력버퍼를 지운다
scanf("%c",&ch2);
fflush(stdin);//표준입력버퍼를 지운다
scanf("%c",&ch3);
fflush(stdin);//표준입력버퍼를 지운다
printf("입력된 이니셜은 %c %c %c 입니디.", ch1,ch2,ch3);
*/
//세과목의 성적을 받아 합계와 평균을 구하시오
int s1, s2, s3, sum, avg;
printf("국어 성적을 입력하시오...");
scanf("%d", &s1);
printf("영어 성적을 입력하시오...");
scanf("%d", &s2);
printf("수학 성적을 입력하시오...");
scanf("%d", &s3);
sum = s1+s2+s3;
avg = sum/3;
// printf("과목들의 합계는 %d이고 평균은 %d입니디.", sum, avg);
printf("과목들의 합계는 %d이고 평균은 %f입니디.", s1+s2+s3, (s1+s2+s3)/3.0); //실수로 나타내려고 3.0으로 나눔
}
------->이름과 나이 입력
int main(int argc, char* argv[])
{
char name[20];
int age;
printf("당신의 이름은 무엇입니까?");
scanf("%s",name);
printf("%s님의 나이는 몇 살입니까?", name);
scanf("%d",&age);
printf("%s님의 나이는 %d살입니다.",name,age);
return 0;
}
----->산술연산자
+ 두수의 합
- 두수의 차
* 두수의 곱
/ 나누기 몫 | 정수 2/3 몫0 나머지 2
% 나누기 나머지 (나머지는 정수 나누기 정수시에만 나온다. 실수는 안나옴)
---%사용 예
#짝,홀수 구분
10%2->짝
5%2 ->홀
#배수의 구분
123%3 => 나머지 0이면 3의배수
#숫자의 자리수 구분하기
156/10 = 15 \6
15/10 = 1 \5
1/10 = \1
2->0,1
3->0,1,2
...
50->0,...,49
문자로 출력시 %를 문자로 나타내기위해 %%로 "는 \"로 나타낸다
printf("%d %%%d = %d\n",su1,su2,su1%su2);
-----> 관계연산자
if(a<10)~ ...보다 작다
if(a>10)~ ...보다 크다
if(a<=10)~ ...보다 작거나 같다
if(a>=10)~ ...보다 크거나 같다
if(a==10)~ ...와 같다
if(a!=10)~ ...와 다르다
-----> if 구문
int main(int argc, char* argv[])
{
float su1 =3.01, su2= 3.0;//3.0f로하면 오류안남
printf("변수su1과 su2의 크기 비교 결과:%d\n", su1 <= su2);
printf("변수su1과 su2의 크기 비교 결과:%d\n", su1 >= su2);
printf("변수su1과 su2의 크기 비교 결과:%d\n", su1 == su2);
printf("변수su1과 su2의 크기 비교 결과:%d\n", su1 != su2);
}
변수su1과 su2의 크기 비교 결과:0
변수su1과 su2의 크기 비교 결과:1
변수su1과 su2의 크기 비교 결과:0
변수su1과 su2의 크기 비교 결과:1
-->1은 참 0은 거짓
a+=b a=a+b
a-=b a=a-b
a*=b a=a*b
a/=b a=a/b
---> 연산 예제
int main(int argc, char* argv[])
{
int su1, su2;
su1=su2=5;
printf("su1 + 1 = %d\n",su1+=1);
printf("su1 - 1 = %d\n",su1-=1);
printf("su1 * su2 = %d\n",su1*=su2);
printf("su1 / su2 = %d\n",su1/=su2);
printf("su1 %% su2 = %d\n",su1 %=su2);
return 0;
}
su1 + 1 = 6
su1 - 1 = 5
su1 * su2 = 25
su1 / su2 = 5
su1 % su2 = 0
--->논리 연산자
|| 논리합(OR) if(a>=0||a<=100)~ (파이프:\+shift) or연산, 참||거짓=>참, 둘 중 하나만 참이면 참
&& And연산 if(0<=0&&a<=100)~ O&&O =>O 오직 둘다 참일 때만 참
! 부정 if(!(c%2==1))~
---->And 연산자 예
int main(int argc, char* argv[])
{
int num;
printf("점수를 입력하세요...");
scanf("%d",&num);
if(!((num>0)&&(num <= 100)))
printf("입력 범위를 벗어 났습니다.\n");
return 0;
}
점수를 입력하세요...101
입력 범위를 벗어 났습니다.
증감연산자 ++a, a++(쁠쁠) --a,a--(마마)
전치는 더하기전 +1
후치는 계산후 +1
----> 전치, 후치 연산자 비교
int main(int argc, char* argv[])
{
int su1;
float su2;
su1=5; ++su1; printf("++su1=%d\n",su1);
su1=5; su1++; printf("su1++=%d\n",su1);
su2=12.3; ++su2; printf("++su2=%f\n",su2);
su2=12.3;su2++;printf("su2++=%f\n",su2);
return 0;
}
++su1=6
su1++=6
++su2=13.300000
su2++=13.300000
----->전치, 후치 연산지비교(2)
int main(int argc, char* argv[])
{
int su1, su2, su3;
su1=10; su2=++su1;
su1=10; su3=su1++;
printf("su2=%d\n",su2);
printf("su3=%d\n",su3);
}
su2=11
su3=10 ->출력 뒤에 su3에 11이라는 값이 들어감
-----> 맨붕 예제
int main(int argc, char* argv[])
{
int a=5, b=6, c=10, d;
d=++a*b--;
printf("a=%d,b=%d,d=%d\n",a,b,d);
d=a++ + ++c-b--;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
a=1;
b=0;
d=a++ || ++b*d-- / ++c;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
d=b++ && ++a/++c*d++;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
return 0;
}
a=6,b=5,d=36
a=7,b=4,c=11,d=12
a=2,b=0,c=11,d=1
a=2,b=1,c=11,d=0
-------> (d%2)? 참일때 실행:거짓일때 실행;
비트연산자 - 이진수로 바꿔 연산
|
&
^
~ 0000 0000 0000 1111->1111 1111 1111 0000
<< 값이 두배가 됨
>> 값이 두배로 적어짐
---------------> 변수형의 크기 변형
int main(int argc, char* argv[])
{
int su1 = 123;
char ch ='a';
float su2 = 12.345;
printf("변수su1의 크기 :%d byte\n", sizeof(su1));
printf("문자형 자료형의 크기 :%d byte\n", sizeof(char));
printf("수식(su1+su2)의 크기 :%d byte\n", sizeof(su1+su2));
printf("실수1.23456의 크기 :%d byte\n", sizeof(1.23456));
printf("문자형 상수'a'의 크기 :%d byte\n",sizeof('a'));
}
변수su1의 크기 :4 byte
문자형 자료형의 크기 :1 byte
수식(su1+su2)의 크기 :4 byte //정수+실수=실수
실수1.23456의 크기 :8 byte //double 8byte
문자형 상수'a'의 크기 :1 byte
항목별 우선순위
(),[],->., (가장먼저)
sizeof,(type),&,*,-,+,--,++,~,! 단항 a++(단항이 우선순위 높다) > a+b(이항)
*(곱셈),/,%,+,/ 산술
<<,>> 비트
<,<=,>,>=,==,!= 비교
&,^,|
&&,||
?:
%=,/=,*=,-=,+=,=
, 콤마
----------->
int main(int argc, char* argv[])
{
int num1, num2;
scanf("%d%d",&num1,&num2);
if(num1>num2)
printf("%d",num1>num2);
return 0;
}
2 //num1
1 //num2
1 //참, 거짓은 0으로 출력
--------->참 거짓 확인
int main(int argc, char* argv[])
{
int num1=1, num2=0;
if(num1)
printf("참");
if(num2)
printf("거짓");
return 0;
}
참
-------->참 거짓 확인(2)
int main(int argc, char* argv[])
{
if(1)
printf("참으로 출력");
if(0)
printf("거짓으로 출력안함");
}
참으로 출력
---------->짝수 홀수 판별 프로그램(% mod연산)
int main(int argc, char* argv[])
{
int num1, num2;
scanf("%d",&num1);
num2=num1%2;
if(num2==0) printf("짝수");
if(num2!=0) printf("홀수"); //if(num2)로 표현가능
}
12
짝수
---------->
1.입력한 데이터가 3의 배수인 경우 출력하시오.
int main(int argc, char* argv[])
{
int num1, num2;
printf("입력한 데이터가 3의 배수인 경우 출력하시오.");
scanf("%d",&num1);
if(num1%3 == 0)
printf("%d는 3의 배수가 맞는 듯하오",num1);
else
printf("%d는 3의 배수가 아닌 듯하오",num1);
}
//2.절대값을 구하는 프로그램을 작성하시오
int main(int argc, char* argv[])
{
int num1;
printf("입력한 데이터가 3의 배수인 경우 출력하시오.");
scanf("%d",&num1);
if(num1 < 0)
num1 = num1 * -1, printf("%d",num1);
else
printf("%d\n\n",num1);
}
//3.수를 입력 받아 짝, 홀수를 구분하여 출력하시오
int main(int argc, char* argv[])
{
int num1;
printf("수를 입력 받아 짝, 홀수를 구분하여 출력하시오");
scanf("%d",&num1);
if(num1%2 == 0)
printf("%d는 짝수",num1);
else
printf("%d는 홀수",num1);
}
//4.두수를 입력받아 큰 수를 출력하시오
int main(int argc, char* argv[])
{
int num1, num2;
printf("두수를 입력받아 큰 수를 출력하시오");
scanf("%d%d",&num1,&num2);
if(num1 < num2)
printf("%d",num2);
else
printf("%d",num1);
}
//5.세 수를 입력받아 큰수를 출력하시오
int main(int argc, char* argv[])
{
int num1, num2, num3;
printf("세수를 입력받아 큰 수를 출력하시오");
scanf("%d%d%d",&num1,&num2,&num3);
if(num1 > num2 && num1 > num3)
printf("%d",num1);
else if(num1 < num2 && num2 > num3)
printf("%d",num2);
else
printf("%d",num3);
/*
int num1, num2, num3, max;
printf("세수를 입력받아 큰 수를 출력하시오");
scanf("%d%d%d",&num1,&num2,&num3);
if (num1 > max )
max = n1;
if (num1 > max )
max = n1;
if (num1 > max )
max = n1;
printf("%d\n",max);
*/
}
//6.두수를 입력받아 큰 수가 짝수이면출력하시오
int main(int argc, char* argv[])
{
int num1, num2, num3;
printf("세수를 입력받아 큰 수가 짝수이면 출력하시오");
scanf("%d%d%d",&num1,&num2,&num3);
if(num1 > num2 && num1 > num3 && num1%2 == 0)
printf("%d",num1);
else if(num1 < num2 && num2 > num3 && num2%2 == 0)
printf("%d",num2);
else if(num1 < num3 && num2 < num3 && num3%2 == 0)
printf("%d",num3);
}
//7.두수를 입력받아 합이 짝수이고 3의 배수인 수를 출력하시오
int main(int argc, char* argv[])
{
int num1, num2, sum;
printf("두수를 입력받아 합이 짝수이고 3의 배수인 수를 출력하시오");
scanf("%d%d",&num1,&num2);
sum = num1 + num2;
if(sum %3 == 0 && sum%2 == 0)
printf("%d",sum);
}
'C'의 다른글
- 현재글C 2일차 정리