본문 바로가기

컴퓨터/C 언어

배열없이 3개 정수 정렬하기 3개의 정수에서만 사용할 수 있는 트릭을 사용한 코드이다.최솟값과 최댓값을 알면 나머지 한 값도 알 수 있는 방식이다. #include #include int main(int argc, char const *argv[]) { int m, M, val, i, t; m = INT_MAX, M = INT_MIN, t = 0; for(i = 0; i < 3; ++i) { scanf("%d", &val); if(m > val) m = val; if(M < val) M = val; t ^= val; } t ^= m ^ M; printf("정렬한 결과 : %d %d %d\n", m, t, M); return 0; }
삼중자(Trigraph) C언어에서 기본으로 사용하는 문자집합(Character set)은 ASCII입니다.하지만 일부 국가들에서 ISO/IEC 646를 기준으로 하는 키보드를 사용하는데, 우리나라도 여기에 포함됩니다. 여기서 ISO/IEC 646이란 7비트로 문자를 표기하는 방식을 선언해놓은 것으로 미국의 체계인 ASCII를 기반으로 합니다. 숫자나 알파벳은 공통적인 부분과 일부 문장부호(!, ", #, $, &, :, ?, @, [, \, ], ^, _, `, {, |, }, ~)에 대해서 각 나라의 상황에 맞게 변경할 수 있는 부분으로 구성되어 있습니다. 한국의 경우 백슬래시(\)가 원화(\)로 표기됩니다. 그래서 일부 C언어 책자에서 처음에 등장하는 Hello, World!를 출력하는 과정에서 \가 등장하는데 이 문자를 ..
int형 변수를 이진수로 출력하기 int 형 변수를 이진수로 출력하는 함수를 만들면 아래와 같다. 아이디어 자체는 간단하다. 입력받은 정수를 Shift 연산을 이용해서 비트 이동을 시켜서 우리가 원하는 비트를 LSB에 오도록 만들고, 이 숫자를 1과 &연산을 하면 LSB의 숫자가 나오기 때문에 그 때의 값을 출력하는 방식이다. void print32bit(int a){ int i; for( i=31; i>=0; --i){ printf("%d", (a>>i)&1); if(i%4==0) printf(" "); } } 그리고 if 문의 경우에는 4bit씩 끊어서 출력을 하기 위해 추가한 내용이다.
[입력-형성평가5] 입력 - 형성평가5 Time Limit : 1000MS 실수의 yard(야드)를 입력받아 cm(센티미터)로 환산하여, 입력값과 환산한 값을 출력 예와 같이 소수 둘째자리에서 반올림하여 첫째자리까지 출력하는 프로그램을 작성하시오. (단, 1야드 = 91.44cm로 한다.) 실수는 "double"로 하세요. 몇 야드인지 입력하시오. 10.1 10.1야드 = 923.5cm 정올에서는 입력을 받기 위한 지문 뒤에는 꼭! 공백을 넣어야한다. printf("... 입력하시오. "); #include int main(void){ double a; printf("몇 야드인지 입력하시오. "); scanf("%lf",&a); printf("%.1lf야드 = %.1lfcm\n",a,a*91.44); return 0; }
[입력-형성평가4] 입력 - 형성평가4 Time Limit : 1000MS 세 개의 정수를 입력받아 합과 평균을 출력하는 프로그램을 작성하시오. (단, 평균은 소수 이하를 버림하여 정수 부분만 출력한다.) 20 50 100 합 = 170 평균 = 56 정수를 정수로 나눈 몫은 소수 이하를 버린 정수가 된다. #include int main(void){ int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("합 = %d\n평균 = %d", a+b+c, (a+b+c)/3); return 0; }
[입력-형성평가3] 입력 - 형성평가3 Time Limit : 1000MS 정수형 변수 한 개를 선언하여 50을 대입하고 실수형 변수 한 개를 선언하여 100.12를 대입한 후 다음과 같이 출력되는 프로그램을 작성하시오. 100.12 * 50 = 5006 #include int main(void){ int a = 50; float b = 100.12f; printf("%.2f * %d = %.f", b, a, a*b); return 0; }
[입력-형성평가2] 입력 - 형성평가2 Time Limit : 1000MS 실수형 변수를 2개 선언한 후 각각에 80.5, 22.34를 대입한 후 두 수의 합을 구하여 각각의 숫자를 10칸씩 오른쪽에 맞추어 소수 둘째자리까지 출력하는 프로그램을 작성하시오. 80.50 22.34 102.84 공백을 넣을 경우 1칸을 차지한다. #include int main(void){ float a, b; a=80.5f; b=22.34f; printf("%10.2f%10.2f%10.2f",a,b,a+b); return 0; }
[입력-형성평가1] 입력 - 형성평가1 Time Limit : 1000MS 세 개의 정수형 변수를 선언하고 각 변수에 10, 20, 30을 대입한 후 그 변수를 이용하여 출력 예와 같이 출력하는 프로그램을 작성하시오. 10 + 20 = 30 #include int main(void){ int a, b, c; a=10; b=20; c=30; printf("%d + %d = %d", a, b, c); return 0; }