C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[12672] 김선희님과 다른 분들께...
박지훈.임프 [cbuilder] 1165 읽음    2001-11-15 02:53
시삽 임프랍니다.
질문을 쓰셨던 김선희님과, 리플 글을 쓰셨던 분들 보세요.

일단, 김선희님께는 운영자로서 죄송하다는 말씀을 드립니다.
여러 리플 글들을 보시면서 실수한 거 같다는 생각은 드셨겠지만 그래도 상당히 불쾌하셨을 것 같습니다.
나름대로 복잡하고 개인적인 사정이 있으실 수 있는데도 좀 일방적으로 몰아붙인 거 같다는 생각이 듭니다.

그래도 처음 글을 올리실 때 문제지 파일을 그대로 첨부로 올리신 것은 아무래도 실수하신 것 같습니다.
보기에 따라서는, 최소한의 노력으로 최대한 빨리 레포트를 하겠다는 의미로 보여질 수도 있었습니다.
답변하시는 분들이 대부분 직장인인 이곳에서 다들 업무 시간을 쪼개어 답변을 올려주시고 있기 때문에,
그렇게 느껴졌다면 답변을 하려고 질문을 읽어보시는 분께도 불쾌감을 주셨을 수 있답니다.
이런 사정이 있다는 것을 이해해 주시길 바라구요.

그리고 이 글을 보시는 다른 모든 bcbdn을 아껴주시는 분들께.
일단, 제가 훑어보니 그렇게 말 그대로 '책만 찾아보면 다 답할 수 있는' 수준은 아니더군요.
뭐 절대로 그렇지 않다고 말할 수도 없겠지만, '수능시험은 교과서만 열심히 공부하면 만점받는다'라는 말과
같은 꼴입니다. 적어도 지금 C를 공부하기 시작한 분에게 아주! 쉬운 문제들은 아니었습니다.
처음 프로그래밍을 공부할 때는 단계별로 편차가 있지 않습니까. 초기에 아주 속도를 내는 사람도 있고,
일단 기초를 끝내구 나면 다음 단계에서 개인적인 능력을 발휘하는 사람도 있구요.

일반적으로, 질문/답변 게시판에 레포트로 보이는 질문들이 자주 올라오는 경우가 있으니까, 진력이 나신
분들도 많이 있으실 거라고 생각합니다. 질리도록 레포트 글들을 보고 나면, 레포트로 조금만 의심이 되는
질문이 올라오면 일단 거부감부터 들기도 하구요. 다른 사이트에서는 '또다시 레포트의 계절이 돌아왔네'
하는 빈정대는 듯한 글을 수없이 봐왔습니다.

여기서 답변을 해주시는 분들은 이미 상당한 수준에 오른 분들이 많습니다.
통상 중급 이상이라고 자부하는 분들이지요. (말할 필요도 없이 아주 고마운 일입니다.)

그런데 프로그래밍이라는 것이 그렇지 않습니까. 입문 수준에서 대단히 어려움을 느끼면서 뚫고 나와서
중급 이상에서 본색(?)을 드러내며 실력을 발휘하는 분도 있긴 하지만, 중급 수준 이상으로 오신 분들의
대다수는 입문/초급 수준에서 '이야~! 역쉬 프로그래밍이야 말로 내 천직이야!' 할 정도로 비교적 쉽게
지나오신 분들이 많습니다.

중급까지 올라오기까지는, 처음에 프로그래밍을 같이 공부하기 시작했던 동료들이 많이 포기하고 떨어져
나가는 것을 보셨을 겁니다. 그런 '다수'의 분들에게는, 입문이라고 볼 정도의 간단한 수준도 아주
어려울 수 있습니다. 혼자서 열심히 파도 잘나가는 동료의 진도의 1/10도 못따라가는 분들이 더 많습니다.

답변하시는 중급 이상의 분들이, 스스로의 과거 경험에 아무리 열심히 비추어봐도 이런 분들의 어려움을
이해하기는 쉽지 않을 겁니다. 그런 분들이 더 많다는 것을 염두에 두시고 대해주셨으면 좋겠습니다.

가끔 질문의 내용 자체가 너무 단순한 질문이 올라오는 경우가 있지 않습니까?
...가 뭐예요, 하는 그런 질문요. 물론 저도 황당합니다. 하지만 적어도 가끔은, 그것이 성의가 없어서
그렇게 쓴 것이 아닌 경우도 있습니다. 도대체가 아무것도 모르기 때문에 그렇게 외에는 다르게 질문할
방법조차 알 수 없는 경우가 있지요.

레포트 성격의 질문에 대해... 제가 시삽이니까 제 맘대로 끌고 나가는 식으로 결정하고 싶지는 않습니다.
하지만 입문자, 초보자가 고수의 상식을 벗어나는 것은 당연한 것 아니겠습니까.
아무래도 이건 이해갸 안될 수준이다, 라는 것도 고수의 상식일 뿐이란 생각도 좀 해주셨으면 좋겠습니다.

김선희님께는 다시 한번 죄송하다는 말씀을 드리구요,
늦은 나이에 직장과 학교를 함께 다니신다니 다른 분이 겪지 못할 사정을 많이 겪으시느라 어려움을 이해해
주시는 분도 많지 않을 거고, 상당히 힘드시겠지만, 늦은 나이에 학교를 선택하던 시기의 결심을 다시
상기하시면서 기운내셔서 건투하시길 바랍니다.

문제에 대해서는, 성의를 많이 들이지는 못했지만 대략 답을 달아봤습니다.
좀 장난스럽게 쓴 것도 있지만...

그리고.. 한가지 말씀드릴 것은, 뭐 대부분의 교수라는 사람들이 다 그렇지만, 문제 자체에도 문제가
많이 있구요, 이런식으로 배운 프로그래밍은 별로 도움이 안됩니다. 문제를 볼 때, 가르치는 사람에게
문제가 많은 거 같기도 하구요.

제가 권하고 싶기로는... 컨닝을 하시든 레포트를 베껴서 내시든, 일단 학점을 따는 데만 신경을 쓰시고,
프로그래밍 자체는 교과시간이 아니라 따로 시간을 많이 내셔서 공부하셔야 실무에서 남들을 따라가거나
앞서갈 수 있습니다.

그럼 이만...


김선희 님이 쓰신 글 :
: 시긴아 다급하여 그럽답니다.
: 책을 보면 다 나와 있겠지요.
:
: 그러나 여러가지 사정으로 인하여...
: 물론 그 입장의 표현의 어려움이 있지만...
:
: 부탁합니다.
: 높은 지식을 부족한 사람에게 베풀어 주시기를...
:
:
: 1. 다음의 c언어의 입출력 함수에서 사용하는 자료형식에 관한 인자이다.
:    이 중 성격이 다른 하나는 ?
:    ① %f       ② %d     ③ %o     ④ %x
%f는 부동소수점 숫자를 표시합니다.
%d는 10진수로 표시합니다.
%o는 8진수로 표시합니다.
%x는 16진수로 표시합니다.
문제의 의도를 정확히 파악하기 힘들긴 합니다만, %f를 제외하고 나머지는 모두 int형에 쓰입니다.
:
: 2. 입출력 함수의 표현이 잘못된 것은?
:    ① printf(" %3d" , x)       ② getchar(" %c" , x)
:    ③ putchar(x)               ④ scanf(" %d" , &x)
getchar() 함수는 표준 입력장치(기본으로는 키보드)로부터 한글자를 입력받는 함수로서,
인자는 없고 int형으로 입력받은 한 문자를 리턴합니다.
:
: 3. 다음 중 실수형 상수의 표현으로 옳은 것은 ?
:    ① -28,325       ② 0.
:    ③ 12.5D02       ④ 24.3E+
1번은 컴마땜시 틀렸습니다. 3번은 D라는 문자땜시 틀렸습니다. 4번은 + 이후 지수가 빠졌습니다.
:
: 4. int형이 2바이트인 경우 unsigned int의 표현범위로 맞는 것은?
:    ① -128 ~ 128               ② -32768 ~ 32767
:    ③ 0 ~ 65535                ④ 0 ~ 256
int형은 해당 C/C++ 컴파일러가 구동되는 OS 환경의 동작 비트수에 따라 크기가 달라집니다.
예를 들어 16비트 OS인 도스나 윈도우 3.0, 3.1의 경우 16이 되고 윈95 이상은 32입니다.
16비트를 가지고 표현할 수 있는 숫자의 범위 가지수는 2의 16승으로, 65536개가 됩니다.
그러므로 signed int의 경우 -32768~32767의 범위를 가지고, unsigned int의 경우엔 0~65535가 됩니다.


: 5. 다음 중 'a'와 'abc'의 차이점에 대해 바르게 설명한 것은 ?
:    ① 문자상수 'a'는 1byte, 문자열 상수 ' abc'는 4byte
:    ② 문자상수 'a'는 2byte, 문자열 상수 ' abc'는 2byte
:    ③ 문자상수 'a'는 1byte, 문자열 상수 ' abc'는 2byte
:    ④ 문자상수 'a'는 2byte, 문자열 상수 ' abc'는 4byte
당연히 1번이지요. 문자의 갯수가 1개이고 4개이니까요.
하지만 이건 도스나 윈도우즈 NT 이하일때 디폴트이고, 비교적 최근에 유니코드가 일반화되어가는 상황에서는
답이 달라질 수 있습니다. 문제에 문제가 있군요.
:
: 6. 1부터 100까지 자연수 합을 구하는 프로그램이 아닌것은 ?
:    ① while(a<100){
:          ++a;
:          sum += a;
:      }
:    ② for(a=1;a<=100;a++ sum+=a;
:    ③ do{
:          ++a;
:          sum +=a;
:       }while(a<=100)
:   ④ for(a=1;a<=100;++a, sum+=a);
문제가 엉터리네요. 1번, 3번은 초기값들이 없으니 보기 자체가 잘못되었습니다.
2번 보기도 잘못되었는데.. 그런데 문제를 낸 사람의 의도를 유추해보면 2번이 답인 듯 합니다.
4번은 2부터 101까지 더하는 거니까요. 2번에 문법적인 오류만 없다면 정답입니다.
2번이 정답이 되려면 다음 두가지 중 하나여야 합니다.
for(a=1;a<=100;a++) sum+=a;
for(a=1;a<=100;a++, sum+=a);
:
: 7. 다음 프로그램의 잘못된 부분을 수정하시오 ?
:   printf("a = %d, b = %d, a+b = %d\n", a, a+b=a);
문자열 내의 포맷 지정자는 세개인데 대응하는 변수는 두개군요.
게다가 a+b=a라는 형태는 변수도 아니지요.
printf("a = %d, b = %d, a+b = %d\n", a, b, a+b);
:
: 8. 다음 프로그래의 잘못된 부분을 수정하시오 ?
:    for(i=2; k%i==0; ++1){
:        sum+=i;
:        i+=2;
:      }
갑자기 등장한 k는 무엇이당가.. 이넘은 무엇에 쓰는 물건인고..
도무지 질문자의 의도를 알 수없는 수수께끼같은 문제군요.
잘못을 찾으라는데, 문법적인 잘못을 찾으란 건지 논리적인 잘못을 찾으란 건지.
그도 아니면 "내 깊은 속을 한번 맞춰봐라" 하는 변태적인 심리인지...
먼저, ++1을 보면, ++ 연산자는 피연산자가 LValue여야 하는, 쉽게 말하자면 상수가 아니라 변수형태여야 합니다.
상수인 1에다 ++을 하면 컴파일 오류입니다.
그리고, 변수 i, k, sum 모두 선언조차 안되었으니 컴파일 오류입니다.
또한 초기값이 없으니 이런 코드의 의미를 알 수 없습니다. sum에 더하는 코드를 보면 합게를 구하겠다는
거 같은데, for문의 조건이 %연산으로, 어떤 조건에서도 합계라고 부를 만한 결과가 나올수가 없습니다.

: 9. print() 함수에서 이중인용부호안에 구성되는 요소는 단순문자와
:    그리고 escape 문자가 있다.
이 한 문장은 무엇입니까? 이것이 문제입니까...
질문자가 혹시 전산과 교수가 아니라 철학과나 심리학과 교수 아닌지...
아무래도 점을 치거나 독심술로 자기 의도를 맞추라는 문제인듯.
:
: 10.c언어에서 자료형이 서로 다른 혼합 연산에서는 의 크기가 큰쪽으로 통일 하는 것을 원칙으로 한다.
이건 또 뭔지...? 9번, 10번 모두 대략 맞는 거긴 한데, 질문자의 의도에 따라 맞는 말일수도 틀린 말일 수도 있습니다.
:
: 11.C언어의 특징을 4가지 이상 기술하시오.
참나. 암기식 교육의 표상 같은 문제군요.
제가 아무리 날고 기는 프로그래머라도, 또 이 문제를 내신 분의 스승이라 하여도,
C언어 문법서를 본지 10년이 다되어가는 지금 기억해낼 방법이 없습니다.
이건 어쩔 수 없이 책을 찾아보셔야 되겠구요.
제가 생각하는 C언어의 특징은, 시스템접근성, 유연성, 간결성 정도입니다.
(꼭 네가지를 채우란 건 모야!! --;;)
:
: 12.식별지의 명명규칙 3가지 이상을 기술하시오
식별자, 아이덴티파이어 말인가요. 금방 생각나는 거로는..
32문자 내로 정해야 한다. 영문자, 숫자, _ 문자를 쓸 수 있다. 숫자가 처음에 올 수 없다. 영문자의 경우 대소문자를 구별한다.
:
: 13.전처리기에 대해서 간단히 설명하시오
:    컴파일 전에 프로그램에 대한 일련의 작업을 수행하라고 지시하는 명령어
:    일반적으로 함수 외부에 기술
:    기계에 코드를 생성하지 않음
:    #기호를 명령어 앞에 붙이고 문장의 마지막에 ;기호를 사용하지 않음
:   프로그램의 확장이 용이하며, 이해가 용이한 프로그램의 작성이 가능
답이 써져 있네요? 이거 문제 맞아요???
그런데 두번째 문장을 틀렸습니다. 전처리기, 즉 프리프로세서는 함수의 내부, 코드의 어디에도 넣을 수 있습니다.
:
: 14.다음 프로그램의 결과는?
:    main()
:    {
:        int a='a';
:        printf("%c",a);
:        printf("%c",a+1);
:        printf("%c",a+2);
:     }
모니터에 abc 라고 찍혀나옵니다.
:
: 15.다음은 sin 값을 계산하여 그래프화하여 출력하는 프로그램이다.
:    정확한 결과를 나타내기 위해 빈 부분을 완성하시오.
:    #define M_PI 3.1415927
:     main()
:     {
:          int i,j, sin_position;
:          printf("-1                 0         1\n");
:          printf(" I---------------- I ------- I\n");
:          for(i=0;i<=360;i+=30){
:              sin_position =
:              printf("   ");
:              for(j=0; j <= 24; j++){
:                 if( ) pintf("*");
:                 else if(j==10) printf("I");
:                 else  printf(" ");
:               }
:               printf("\n");
:           }
:   }
if 문의 조건 외에는 어디가 빈건지 모르겠습니다.
sin_position = 다음에 아무것도 없는데, 여기도 빈 거라면 문제가 성립이 안됩니다.
:
:
: 16.if 문을 이용하여 키보드로부터 한 문자를 입력받아 그 값에 따라 문자열을 출력하는 프로그램을 작성하시오(입력값 a →출력 문자열 'apple', 입력값 b → 출력 문자열 'banana', 그외의 입력값에 대해서는 '???'을 출력하도록 하시오)
쩝...
#include
int main(void)
{
    switch(getchar())
    {
        case 'a': printf("apple"); break;
        case 'b': printf("banana"); break;
        default : printf("???"); break;
    }
    return 0;
}
:
: 17.30과 20의 데이타를 입력하여 이 들의 사칙연산 결과를 아래와 같이 출력하는 프로그램을 작성하시오.( ____의 문자는 반드시 인수에 의한 결과를 출력할 수 있도록 하시오)
:        30+20=50
:        30-20=+10
:        30*20=600
:        30을 20으로 나눈 나머지는 10이다.
#include
int main(void)
{
    int a, b;
    printf("첫번째 숫자를 입력해주쎄용~\n");
    scanf("%d", &a);
    printf("고마워용~ 이번엔 두번째 숫자를 입력해주쎄용~\n");
    scanf("%d", &b);
    printf("정말 고마워용~ 이젠 결과를 보여드리지용~~\n\n");
    printf("%d+%d=%d\n", a, b, a+b);
    printf("%d-%d=%+d\n", a, b, a-b);
    printf("%d*%d=%d\n", a, b, a*b);
    printf("%d을 %d으로 나눈 나머지는 %d이다\n", a, b, a%b);
    return 0;
}
:
: 18.while 문을 이용하여 1에서 100까지 더하는 프로그램을 작성하시오
#include
int main(void)
{
    int i=1, sum=0;
    while(i<=100) sum+=i++;
    printf("1부터 100까지의 합은.. 짜잔~ %d이지용~\n", sum);
    return 0;
}

:
: 19.다음의 실행결과를 얻을 수 있도록 프로그램하시오
:    (제어문은 for와 if만 이용하시오)
:          *
:         * *
:        * * *
:
잘 짠 건 아닌데.. 금방 생각난 게 이 정도 뿐이라서.. 좀 더 멋지게 짜면 좋을텐데..
#include
int main(void)
{
    int i, j;
    for(i=0; i<3; i++)
    {
        for(j=0; j<2-i; j++)
            printf(" ");
        for(j=1; j<=i+1; j++)
            printf("* ");
        printf("\n");
    }
    return 0;
}


+ -

관련 글 리스트
12666 문제풀이(2) 김선희 1053 2001/11/14
12672     김선희님과 다른 분들께... 박지훈.임프 1165 2001/11/15
12682         Re:개인적인 다른 생각들... 이경문 826 2001/11/15
12686             Re:Re:개인적인 다른 생각들... 지나가는 사람 801 2001/11/15
12667     Re:문제풀이(2) 이경문 935 2001/11/14
12668         Re:Re:문제풀이(2) 김선희 969 2001/11/14
12671             Re:Re:Re:문제풀이(2) 문제풀이.. 826 2001/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.