본문 바로가기

C

박시현 9주차 C프로그래밍 과제

 

C프로그래밍

9주차 과제

 

 

 

 

 

과 목 명 : C프로그래밍

담당교수 : 한성현 교수님

학 과 : 컴퓨터소프트웨어학과

학 년 : 1학년

학 번 : 2024001684

이 름 : 박시현

제 출 일 : 2024 4월 30일

 

---------------------------cast 연산자---------------------------

#include <stdio.h>
int main(void)
{
int x=10,y=4;
double z,z1;
printf("1:%d\n",10/4); //2
printf("2:%f\n",10/4); //0.000000, 컴파일러에 따라 2.500000, 경고
printf("3:%f %f %f\n",10/4.0, 10.0/4, 10.0/4.0);//모두 2.500000
printf("4:%d\n",x/y); // 2
printf("5:%f\n",x/y); // 0.000000, 컴파일러에 따라 2.500000, 경고
z=x/y; //double형인 z에 2를 저장하면 소수점만 더 붙음
printf("6:%f\n",z); // 2.000000
z=(double)x/y; //10.0/4
printf("7:%f\n",z); // 2.500000
z=x/(double)y; //10/4.0
printf("8:%f\n",z); // 2.500000
z=(double)x/(double)y; //10.0/4.0
z1=(double)(x/y); //(double)(10/4)
printf("9:%f %lf %lf\n",z,z,z1);// 2.500000 2.500000 2.000000
return 0;
}

-----------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------sizeof 연산자---------------------------

#include <stdio.h>
int main(void)
{
int x;
int y[10];
printf("%zd ",sizeof("I love you!"));//12
printf("%zd ",sizeof("대한")); // 5(cp949) or 7(utf-8)
printf("%zd ",sizeof(int)); // 4
printf("%zd ",sizeof(x)); // 4, sizeof x라고 써도 됨
printf("%zd\n",sizeof(y)); // 40, sizeof y라고 써도 됨
return 0;
}

-----------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

 

---------------------------기본 자료형의 크기 알아보기---------------------------

#include <stdio.h>
#include <limits.h> //정수형
#include <float.h> //double, float형
int main(void)
{
printf("char 크기 : %zdbyte \n", sizeof(char));
printf("int 크기 : %zdbytes \n", sizeof(int));
printf("int max : %d, int min : %d \n", INT_MAX, INT_MIN);
printf("unsigned int max : %u \n", UINT_MAX);
printf("short 크기 : %zdbytes \n", sizeof(short));
printf("short max : %d, short min : %d \n", SHRT_MAX, SHRT_MIN);
printf("unsigned short max : %u \n", USHRT_MAX);
printf("long 크기 : %zdbytes \n", sizeof(long));
printf("float 크기 : %zdbytes \n", sizeof(float));
printf("double 크기 : %zdbytes \n", sizeof(double));
printf("double max : %g, double min : %g \n", DBL_MAX, DBL_MIN);
printf("long double 크기 : %zdbytes \n", sizeof(long double));
printf("long long int 크기 : %dbytes \n",sizeof(long long int));
return 0;
}

--------------------------------------------------------------------------------------------------

위 소스의 출력
출처:한성현 교수님의 강의자료

---------------------------변수의 주소 알아보기---------------------------

#include <stdio.h>
int main(void)
{
int a=10, b=20;
printf("변수 a의 값=%d, 주소=%p\n",a, &a);
printf("변수 b의 값=%d, 주소=%p\n",b, &b);
return 0;
}
////////
#include <stdio.h>
int main(void)
{
int l=0x12345678;
printf("%x\n", (l >> 16) & 0xFFFF); // >>와 &의 의미는?
return 0;
}
//////////////////////
#include <stdio.h>
int main(void)
{
int i=-2, abs;
abs=
printf("%d\n",abs); // -2의 절댓값인 2 출력
return 0;
}

---------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------실습문제 1---------------------------

#include <stdio.h>
int main(void)
{
int a=1,b=2,c=3,m;
m=(a>b)?a:b;
m=(m>c)?m:c;
printf("%d",m);
return 0;
}

---------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------실습문제 2---------------------------

#include <stdio.h>
int main(void)
{
int i = -2, abs;
abs = (i > 0) ? i : -i;
printf("%d\n", abs);
return 0;
}

-----------------------------------------------------------------------

출처:한성현 교수님의 강의자료

 

--------------------------------------------------------제어문--------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

주로 사용하는건 3번 방식이다.

---------------------------if의 사용1---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요 : ");
scanf("%d",&score);
if(score<60){
printf("60점 미만이므로 재수강해야 합니다.\n");
}
else{
printf("Good!");
}
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------if의 사용2---------------------------

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요=");
scanf("%d", &score);
if (score == 0) printf("0점입니다.\n");
if (score) printf("0점이 아닙니다.\n");
if (!score) printf("0점입니다.\n");
return 0;
}

--------------------------------------------------------------------------

if(score)는 score의 값이 True일때 실행이 된다.

if(!score)는 score의 값이 False일때 실행이 된다.

 

True는 참이므로 0을 제외한 숫자이고

False는 거짓이므로 0만 해당한다.

출처:한성현 교수님의 강의자료

--------------------------if의 사용3---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요 : ");
scanf("%d",&score);
if(score>=90 && score<95) printf("A\n");
//if(90<=score<95) printf("A\n");
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

 

--------------------------if의 사용4---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("주민등록번호 뒷 자리의 첫번째 숫자를 입력하세요 : ");
scanf("%d",&num);
if(num==1 || num==3) printf("당신은 남성이군요!\n");
if(num==2 || num==4) printf("당신은 여성이군요!\n");
return 0;
}

--------------------------------------------------------------------------

주민번호 뒷차리의 첫번째 숫자가 1혹은 3이면 남성 2,4면 여성이다.

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

--------------------------else의 사용1---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num1, num2;
printf("두 개의 다른 수를 입력하고 Enter를 누르세요:");
scanf("%d %d",&num1, &num2);
if(num1>num2){
printf("두 수 중 더 큰 수는 %d입니다.\n",num1);
}
else{
printf("두 수 중 더 큰 수는 %d입니다.\n",num2);
}
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

--------------------------else의 사용2---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요:");
scanf("%d",&score);
if(score<60) printf("60점 미만이므로 재수강해야 합니다.\n");
else printf("60점 이상이므로 Pass입니다.\n");
return 0;
}

--------------------------------------------------------------------------

score<60에 해당하면 재수강이고

해당하지 않는 수는 score>=60이기 때문에 Pass이다.

출처:한성현 교수님의 강의자료

--------------------------else의 사용3---------------------------

 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num1, num2,max;
printf("두 개의 다른 수를 입력하고 Enter를 누르세요:");
scanf("%d %d",&num1, &num2);
if(num1>num2) max=num1;
else max=num2;
//max=(num1>num2) ? num1 : num2;
printf("더 큰 수는 %d입니다.\n",max);
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

--------------------------else의 사용4---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("당신의 주민등록번호 뒷 자리의 첫 번째 숫자를 입력하세요:");
scanf("%d",&num);
if(num==1 || num==3) printf("당신은 남성이군요!\n");
else printf("당신은 남성이 아니군요!\n");
return 0;
}

--------------------------------------------------------------------------

1,3에 해당하면 남성, 해당하지 않으면 남성이 아니라고 출력된다.

출처:한성현 교수님의 강의자료

--------------------------else의 사용5---------------------------

 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char ch;
printf("키보드로 키 하나를 입력하세요=");
scanf("%c",&ch);
if(ch>='a' && ch<='z') printf("영어 소문자입니다.\n");
else printf("영어 소문자가 아닙니다.\n");
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

--------------------------else의 사용6---------------------------

 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int year;
printf("2월이 29일까지 있어서 1년이 366일인 해를 윤년이라고 한다.\n");
printf("연도가 평년인지 윤년인지를 출력해주는 프로그램입니다.\n");
printf("알고 싶은 연도를 입력하세요 : ");
scanf("%d", &year);
if( year%4==0 && year%100!=0 || year%400==0 )
printf("윤년입니다.\n");
else
printf("평년입니다.\n");
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

--------------------------else의 다중 사용1---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("당신의 주민등록번호 뒷자리의 첫 번째 숫자를 입력하세요:");
scanf("%d",&num);
 
if(num==1 || num==3)
printf("당신은 남성이군요!\n");
else if(num==2 || num==4)
printf("당신은 여성이군요!\n");
else
printf("당신은 대한민국 사람이 아니군요!\n");
return 0;
}

--------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

--------------------------마지막 문제---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("당신의 주민등록번호 뒷 자리의 첫 번째 숫자를 입력하세요:");
scanf("%d",&num);
if(num==1 || num==3 || num==9){
printf("당신은 남성이군요!\n");
}
else if(num==2 || num==4 || num==0){
printf("당신은 남성이 아니군요!\n");
}
else if(num==5 || num==6 || num==7 || num==7){
printf("Aren't you Korean?");
}
return 0;
}

--------------------------------------------------------------------------