< 2020.01.05 2장 변수와 자료형

프로그래밍 공부/C

2020.01.05 2장 변수와 자료형

Rocketbabydolls 2020. 11. 3. 23:31

  모든 예시들은 실전C프로그래밍(21세기사, 나중채_김도년_김영갑_박천수_박태순_양효식_임필옥_장문정_장 윤_한동일 공저)에 수록되어 있는 것들입니다.


 


 

 


p.58

[문제 1] 두 정수를 입력 받고 합을 계산해주는 프로그램을 작성하시오.

실행 예시에서 밑줄 친 굵은 글씨는 사용자가 입력하는 값

이하 실습문제에서 동일하게 적용

실행 예시

첫 번째 정수 : 4

두번째 정수 :  5

합 : 9

 

int main(void) {
int a,b;
printf("첫 번째 정수: ");
scanf("%d",&a);
printf("두 번째 정수: ");
scanf("%d",&b);
printf("합: %d",a+b);
return 0;
}

 

[문제 2] 두 개의 부동소수형 변수를 선언하고 다음과 같이 초기화 한 후, 두 수의 합을 계산해주는 프로그램을 작성하시오.

부동소수 초기화 값 4.2와 5.1

실행 결과

첫 번째 수 : 4.200000

두 번째 수:  5.100000

합:  9.300000

 

int main(void) {
double a=4.2,b=5.1;
printf("첫 번째 수: ");
scanf("%lf",&a);
printf("두 번쨰 수: ");
scanf("%lf",&b);
printf("합: %lf",a+b);

return 0;
}

 

[문제 3] 사용자에게 정수를 입력받아 int형 변수에 저장하고, 이를 char형 변수에 복사 한 후 , 두 값을 %d 서식을 사용하여 출력하는 프로그램을 작성하시오.

아래의 입력 값을 이용해 실행시켜 보시오.( 각 자료형의 표현 범위 이해하기)

10, -10, 100, -100, 200, -200, 500, -500

실행 예시

입력 : 10

 

출력(int)->10

출력(char)->10

 

int main(void) {
int input;
char c;
printf("입력: ");
scanf("%d",&input);
c=input;
printf("출력(int)->%d\n출력(char)->%d",input,c);
return 0;
}

 

[문제 4] 위 문제를 char형 변수 대신 unsigned char형 변수를 이용하여 작성하고, 동일한 값을 입력하여 실행시켜 보시오. (자료형의 표현 범위 이해하기)

 

int main(void) {
int input;
unsigned char c;
printf("입력: ");
scanf("%d",&input);
c=input;
printf("출력(int)->%d\n출력(char)->%d",input,c);
return 0;
}

 

[문제 5] 화면에 다음과 같이 출력하시오. (이스케이스 시퀀스 이용)

실행 결과

큰 따옴표는 "입니다.

작은 따옴표는 '입니다.문자 A는 'A' 입니다.큰 따옴표의 이스케이프 시퀀스는 \"입니다.

 

 

int main(void) {
printf("큰 따옴표는 \" 입니다.\n작은 따옴표는\'입니다.\n문자 A는 \'A\'입니다.\n큰 따옴표의 이스케이프 시퀀스는 \\\"입니다.");
return 0;
}

 

[문제6] 0~9 사이의 숫자를 서식 '%c'로 입력 받은 후, 서식 '%c'와 '%d' 를 이용하여 아래와 같이 출력하는 코드를 작성하시오. (문자의 실체 이해하기 응용)

정수로 출력하기 위해 숫자 '0'~'9'의 아스키 코드 값이 연속되어 있음을 이용하시오.

각 숫자의 아스키 코드 값을 알 필요는 없다.

실행 예시

문자형 입력(%c)  : 4

 

문자로 출력(%c) :  4

정수로 출력(%d) : 4

 

int main(void) {
char c;
printf("문자형 입력(%%c) : ");
scanf("%c",&c);

printf("문자로 출력(%%c) : %c\n정수로 출력(%%d) : %d",c,c-48);
}

%를 출력하기 위해서 %%사용

 

[문제 7-1]영어 소문자 a~z의 아스키 코드 값은 문자 순으로 연속되어 있다. 이 성질을 이용하여 입력받은 소문자가 알파벳에서 몇 번째 문자인지 출력하는 프로그램을 작성하시오.

a를 0번째 문자, z는 25번째 문자로 가정하라.

각 문자의 아스키 코드 값을 알 필요는 없다.

실행 예시

소문자 입력 : b

b는 1번째 영어 소문자

 

int main(void) {
char c;
int num;
printf("소문자 입력: ");
scanf("%c",&c);
printf("\n%c는 %d번째 영어 소문자",c,c-'a');
}

 

[문제 7-2] 0~25 사이의 정수를 입력 받아, 해당 번째의 영어 대문자가 무엇인지 출력하는 프로그램을 작성하시오

0번째 문자는 A, 25번째 answksms Z로 가정하라

각 문자의 아스키 코드 값을 알 필요는 없다.

실행 예시정수 입력(0~25) : 11번째 영어 대문자는 B

 

int main(void) {
char c;
int num;
printf("정수 입력: ");
scanf("%d",&num);
printf("\n%d번쨰 영어 대문자는 %c",num,'A'+num);
}

 

[문제 7-3]영어 소문자를 입력받아 이를 대문자로 변환하는 프로그램을 작성하시오.

hint) 문제 7-1번과 7-2번을 결합하면 됌

int main(void) {
char c;
printf("소문자 입력: ");
scanf("%c",&c);
printf("\n대문자 출력: %c",c-'a'+'A');
}

[문제 8]반대로 영어 대문자를 입력받아 이를 소문자로 변환하는 프로그램을 작성하시오

실행 예시

대문자 입력: B

소문자 출력 : b

int main(void) {
char c;
printf("대문자 입력: ");
scanf("%c",&c);
printf("\n소문자 출력: %c",c-'A'+'a');
}