본문내용
time : 1011425364
elapsed time : 0
time for each call : 0.0000000000
24.rand() 함수는 [0,RAND_MAX] 구간의 값을 리턴한다. (연습문제 20번을 참조하여라.) double 의 변수 median을 선언하고 초기 값을 RAND_MAX / 2.0 으로 하여라. 연속해서 rand()를 호출하면, 어떨 때에는 median보다 큰 값을 리턴하고, 어떨 때에는 작은 값을 리턴할 것이다. 평균적으로 median보다 클 경우와 적을 경우의 확률은 같을 것이다. 이 가설을 시험해 보아 라. for 루프를 사용하여 rand()를 500번 호출하고, rand()의 리턴 값이 median보다 크면 above_cnt 변수를 증가시키고, 작으면 below_cnt값을 증가시키는 프로그램을 작성하여라. 그 리고 for루프를 수행할 때마다 above_cnt와 below_cnt 값의 차를 출력하여라. 그 값은 0 주위 에서 진동해야한다. 그러한가?
☞ 1 #include
2 #include
3
4 int main(void)
5 {
6 double median = RAND_MAX/2;
7 int i,value;
8 int above_cnt=0,below_cnt=0;
9
10 for(i=0; i<=500; i++) {
11 value = rand();
12 if(value > median)
13 above_cnt++;
14 else
15 below_cnt++;
16 if ( i%2 == 0)
17 putchar ('\n');
18 printf("above_cnt 와 below_cnt의 차는 %d입니다.",above_cnt-below_cnt);
19 }
20 printf("\n");
21 printf("above_cnt = %d\n",above_cnt);
22 printf("below_cnt = %d\n",below_cnt);
23 return 0;
24 }
26.++a + a++ 와 a += ++a 같은 수식의 값은 시스템에 종속적이다. 왜냐하면 증가 연산자 ++ 의 부작용이 각각 다른 시점에서 일어날 수 있기 때문이다. 이것은 C의 강점이자 동시에 약 점이기도 하다. 한 쪽 면으로 보면, 컴파일러는 기계 수준에서 가장 적합한 것을 할 수 있다. 그리고 다른 면으로 보면, 수식이 시스템 종속적이기 때문에 서로 다른 컴퓨터에서는 다른 값 을 갖게 될 것이다. 경험이 많은 C 프로그래머들은 이와 같은 수식이 잠재적인 위험성을 내 포하고 있음을 알기 때문에 이러한 표현은 사용하지 않는다. a를 0으로 초기화한 후에 ++a + a++이 어떤 값을 갖는지 각자의 컴퓨터에서 실험해 보아라. 불행히도, 많은 컴파일러들은 이 러한 수식의 위험성을 경고하지 않는다. 각자의 시스템은 어떠한가?
☞ 우리 학교 시스템도 역시 경고하지 않는다.
1 #include
2
3 int main(void)
4 {
5 int a=0;
6
7 printf("++a + a++ = %d\n",++a + a++);
8 printf("a += ++a = %d\n",a += ++a);
9 }
결과==>++a + a++ = 2
a += ++a = 6
27.UNIX 시스템에서 라이브러리는 "archive"를 의미하는 .a로 끝나고, Windows98/NT 시스템에 서 라이브러리는 일반적으로 .lib로 끝난다. 자신의 시스템에서 표준 C 라이브러리를 찾아보 아라. 이들 라이브러리는 읽을 수가 없다. UNIX 시스템에서 다음과 같은 명령어를 입력하면, 라이브러리에 포함된 모든 파일의 이름을 볼 수 있을 것이다.
ar t/ usr/lib/libc.a
출력된 이름 중에 수학 함수를 찾을 수 없다면, 수학 라이브러리는 표준 라이브러리와 분리되 어 있는 것이다. 이런 경우 다음 명령을 사용하여라.
ar t/ usr/lib/libm.a
☞ 우리 시스템에서는 두가지 명령어가 다 사용가능하다.
28.ANSI C와 전통적인 C에서, 문자열 상수의 마지막에 \가 오면 문자열이 다음 행으로 이어진 다는 것을 나타낸다.
"by using a backslash at the end of the line \
a string can be extended from one line to the next"
이것을 포함하는 프로그램을 작성하여라. 보통 화면의 한 행에는 80개의 문자를 쓸 수 있다. 만일 80자 이상의 문자열을 출력하면 어떤 일이 발생하겠는가?
☞80자 이상의 문자열을 출력하면 다음과 같은 경고 메시지가 나타난다.
▶ 28.c:5:16: warning: multi-line string literals are deprecated
29.ANSI C에서 각 행의 끝의 \는 이 행을 다음 행으로 계속 연결시켜 주는 효과를 낸다. 이러 한 \의 효과는 문자열 상수와 매크로 정의에서 사용할 수 있다. 그러나, 모든 ANSI C 컴파일 러가 일반적인 방법으로 이를 제공하는 것은 아니다. 결국, 매크로 정의를 제외하면, 이 방버 은 거의 사용되지 않는다. 사용자의 C컴파일러는 일반적인 방법으로 이것을 제공하는가? 다 음 프로그램을 실행하여 보아라.
1 #inc\
2 lude
3
4 int mai\
5 n(void)
6 {
7 pritf("Will this work?\n");
8 ret\
9 urn 0;
10 }
☞ 컴파일 되지 않는다.
30.컴파일러를 호출하면, 시스템은 먼저 전처리기를 호출한다. 이 연습문제에서는 어떤 일이 일 어나는지 알아보기 위해 일부러 전처리 오류가 발생하도록 하였다. 다음 프로그램을 실행하여 보아라.
1 #incl/* two errors on this line */
2
3 int main(void) {
4
5 printf("Try me.\n");
6 return 0;
7 }
☞ 30.c:1:2: invalid preprocessing directive #incl
만일 #incl을 #include 로 수정하면 어떻게 되겠는가?
☞ 30.c:1:49: stdixx.h: 해당 파일이나 디렉토리가 없음
elapsed time : 0
time for each call : 0.0000000000
24.rand() 함수는 [0,RAND_MAX] 구간의 값을 리턴한다. (연습문제 20번을 참조하여라.) double 의 변수 median을 선언하고 초기 값을 RAND_MAX / 2.0 으로 하여라. 연속해서 rand()를 호출하면, 어떨 때에는 median보다 큰 값을 리턴하고, 어떨 때에는 작은 값을 리턴할 것이다. 평균적으로 median보다 클 경우와 적을 경우의 확률은 같을 것이다. 이 가설을 시험해 보아 라. for 루프를 사용하여 rand()를 500번 호출하고, rand()의 리턴 값이 median보다 크면 above_cnt 변수를 증가시키고, 작으면 below_cnt값을 증가시키는 프로그램을 작성하여라. 그 리고 for루프를 수행할 때마다 above_cnt와 below_cnt 값의 차를 출력하여라. 그 값은 0 주위 에서 진동해야한다. 그러한가?
☞ 1 #include
2 #include
3
4 int main(void)
5 {
6 double median = RAND_MAX/2;
7 int i,value;
8 int above_cnt=0,below_cnt=0;
9
10 for(i=0; i<=500; i++) {
11 value = rand();
12 if(value > median)
13 above_cnt++;
14 else
15 below_cnt++;
16 if ( i%2 == 0)
17 putchar ('\n');
18 printf("above_cnt 와 below_cnt의 차는 %d입니다.",above_cnt-below_cnt);
19 }
20 printf("\n");
21 printf("above_cnt = %d\n",above_cnt);
22 printf("below_cnt = %d\n",below_cnt);
23 return 0;
24 }
26.++a + a++ 와 a += ++a 같은 수식의 값은 시스템에 종속적이다. 왜냐하면 증가 연산자 ++ 의 부작용이 각각 다른 시점에서 일어날 수 있기 때문이다. 이것은 C의 강점이자 동시에 약 점이기도 하다. 한 쪽 면으로 보면, 컴파일러는 기계 수준에서 가장 적합한 것을 할 수 있다. 그리고 다른 면으로 보면, 수식이 시스템 종속적이기 때문에 서로 다른 컴퓨터에서는 다른 값 을 갖게 될 것이다. 경험이 많은 C 프로그래머들은 이와 같은 수식이 잠재적인 위험성을 내 포하고 있음을 알기 때문에 이러한 표현은 사용하지 않는다. a를 0으로 초기화한 후에 ++a + a++이 어떤 값을 갖는지 각자의 컴퓨터에서 실험해 보아라. 불행히도, 많은 컴파일러들은 이 러한 수식의 위험성을 경고하지 않는다. 각자의 시스템은 어떠한가?
☞ 우리 학교 시스템도 역시 경고하지 않는다.
1 #include
2
3 int main(void)
4 {
5 int a=0;
6
7 printf("++a + a++ = %d\n",++a + a++);
8 printf("a += ++a = %d\n",a += ++a);
9 }
결과==>++a + a++ = 2
a += ++a = 6
27.UNIX 시스템에서 라이브러리는 "archive"를 의미하는 .a로 끝나고, Windows98/NT 시스템에 서 라이브러리는 일반적으로 .lib로 끝난다. 자신의 시스템에서 표준 C 라이브러리를 찾아보 아라. 이들 라이브러리는 읽을 수가 없다. UNIX 시스템에서 다음과 같은 명령어를 입력하면, 라이브러리에 포함된 모든 파일의 이름을 볼 수 있을 것이다.
ar t/ usr/lib/libc.a
출력된 이름 중에 수학 함수를 찾을 수 없다면, 수학 라이브러리는 표준 라이브러리와 분리되 어 있는 것이다. 이런 경우 다음 명령을 사용하여라.
ar t/ usr/lib/libm.a
☞ 우리 시스템에서는 두가지 명령어가 다 사용가능하다.
28.ANSI C와 전통적인 C에서, 문자열 상수의 마지막에 \가 오면 문자열이 다음 행으로 이어진 다는 것을 나타낸다.
"by using a backslash at the end of the line \
a string can be extended from one line to the next"
이것을 포함하는 프로그램을 작성하여라. 보통 화면의 한 행에는 80개의 문자를 쓸 수 있다. 만일 80자 이상의 문자열을 출력하면 어떤 일이 발생하겠는가?
☞80자 이상의 문자열을 출력하면 다음과 같은 경고 메시지가 나타난다.
▶ 28.c:5:16: warning: multi-line string literals are deprecated
29.ANSI C에서 각 행의 끝의 \는 이 행을 다음 행으로 계속 연결시켜 주는 효과를 낸다. 이러 한 \의 효과는 문자열 상수와 매크로 정의에서 사용할 수 있다. 그러나, 모든 ANSI C 컴파일 러가 일반적인 방법으로 이를 제공하는 것은 아니다. 결국, 매크로 정의를 제외하면, 이 방버 은 거의 사용되지 않는다. 사용자의 C컴파일러는 일반적인 방법으로 이것을 제공하는가? 다 음 프로그램을 실행하여 보아라.
1 #inc\
2 lude
3
4 int mai\
5 n(void)
6 {
7 pritf("Will this work?\n");
8 ret\
9 urn 0;
10 }
☞ 컴파일 되지 않는다.
30.컴파일러를 호출하면, 시스템은 먼저 전처리기를 호출한다. 이 연습문제에서는 어떤 일이 일 어나는지 알아보기 위해 일부러 전처리 오류가 발생하도록 하였다. 다음 프로그램을 실행하여 보아라.
1 #incl
2
3 int main(void) {
4
5 printf("Try me.\n");
6 return 0;
7 }
☞ 30.c:1:2: invalid preprocessing directive #incl
만일 #incl을 #include 로 수정하면 어떻게 되겠는가?
☞ 30.c:1:49: stdixx.h: 해당 파일이나 디렉토리가 없음
키워드
추천자료
[C 프로그래밍] C로 배우는 프로그래밍 기초 3장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 4장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 5장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 6장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 7장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 1장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 11장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 12장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 13장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 14장 이해점검 및 프로그램문제 풀이
[C 프로그래밍] C로 배우는 프로그래밍 기초 16장 이해점검 및 프로그램문제 풀이
C언어의 원리, C언어의 장단점, C언어의 시작, C++의 추가된 사항, C++의 데이터선언, C++의 ...
ICC(F.P.A) VS ICC(C) - ICC(F.P.A)조건과 ICC 2009(C)조건의 비교 (ICC(F.P.A)조건, ICC(C)...
소개글