728x90
CHAPTER 5. 수식과 연산자
1) 3개의 정수 값을 입력받아 3개의 정수 값 중에서 최대값을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(){
int a, b, c, x;
printf("엔터를 통해 3개의 정수를 입력하세요\n");
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
# x = (a>b?a:b)?(a>c?a:c):(c>b?c:b); <- 이렇게 쓰지 말기
x = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
printf("%d",x);
return 0;
}
2) 100보다 작은 정수를 입력 받아 십의 자리, 일의 자리로 분리하여 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(){
int a;
printf("두 자리 정수를 입력하시오\n");
scanf("%d", &a);
printf("십의 자리: %d\n",a/10);
printf("일의 자리: %d\n",a%10);
return 0;
}
3) int형의 정수를 2의 보수로 변환하는 프로그램을 작성하시오.
#include <stdio.h>
int main(){
int num, complement;
// 사용자로부터 정수를 입력받음
printf("정수를 입력하세요: ");
scanf("%d", &num);
// 전체 비트를 반전시킨 후 1을 더하여 2의 보수를 계산
complement = ~num + 1;
// 결과 출력
printf("%d의 2의 보수는 %d입니다\n", num, complement);
return 0;
}
4) 구의 표면적과 체적을 구하는 프로그램을 작성하시오.
#define PI 3.1415926535
#include <stdio.h>
int main(){
float r;
printf("반지름을 실수로 입력하시오\n");
scanf("%f", &r);
printf("표먼적: %f\n", 4.0/3.0*PI*r*r*r);
printf("체적: %f\n",4.0*r*r*PI);
return 0;
}
#float 연산에서 정수연산을 실행하지 않도록 할 것
5) 조건연산자만을 이용하여 2차원 공간의 x 좌표와 y 좌표를 입력 받아 그 좌표가 속하는 사분 면을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main() {
int x, y;
printf("x 좌표를 입력하시오: ");
scanf("%d", &x);
printf("y 좌표를 입력하시오: ");
scanf("%d", &y);
(x > 0 && y > 0) ? printf("1사분면\n") :
(x < 0 && y > 0) ? printf("2사분면\n") :
(x < 0 && y < 0) ? printf("3사분면\n") :
(x > 0 && y < 0) ? printf("4사분면\n") :
printf("좌표축 위에 있습니다\n");
return 0;
}
6) 비트 이동 연산을 이용하여 문자 4개를 받아서 하나의 unsigned int 형의 변수 안에 저장하 는 프로그램을 작성하시오
#include <stdio.h>
int main() {
unsigned int result = 0;
char ch1, ch2, ch3, ch4;
// 문자 입력 받기
printf("첫번째 문자를 입력하시오: ");
scanf(" %c", &ch1); // 앞에 공백을 추가하여 이전 입력 버퍼를 무시함
printf("두번째 문자를 입력하시오: ");
scanf(" %c", &ch2);
printf("세번째 문자를 입력하시오: ");
scanf(" %c", &ch3);
printf("네번째 문자를 입력하시오: ");
scanf(" %c", &ch4);
// 비트 연산으로 각 문자를 결과 변수에 저장
result = (result | ch1) | (ch2 << 8) | (ch3 << 16) | (ch4 << 24);
// 결과 출력
printf("결과값: %X\n", result);
return 0;
}