프로그램 기초 프로그래머 필수: C / C + 면접 문제

다음으로 이동:http://edu.gamfe.com/tutor/d/14818.html
 1. n 을 입력 하고 화면 에 NxN 의 행렬 을 출력 합 니 다!
    예컨대
    3 을 입력 하면
    1 2 3
    8 9 4
    7 6 5
    4 를 입력 하면
    1    2  3  4
    12 13 14 5
    11 16 15 6
    10  9  8  7
    참고 답안:
#include 
#include 
#define N 10 

void printCube(int a[][N],int n); 

void main() 
{ 
  int a[N][N],n; 
  printf("input n:
"); scanf("%d",&n); printCube(&a[0],n); getch(); } void printCube(int a[][N],int n) { int i,j,round=1; int m=1; for(i=0;i=n/2;i--) { for(j=round;j<=i;j++) a[j]=m++; for(j=i;j>=round;j--) a[j-1]=m++; for(j=i;j>round;j--) a[j-1][round-1]=m++; for(j=round;j

2. 랑 신 면접 문제:
    There are two int variables: a and b, don‘t use “if”, “? :”, “switch” or other judgement statements, find out the biggest one of the two numbers.
    참고 답안:
    방안 1
int max = ((a+b)+abs(a-b)) / 2
    방안 2
int c = a -b; char * strs [2] = {"a 대", "b 대"};c = unsigned(c) >> (sizeof(int) * 8 - 1);
3. 랑 신 면접 문제: 현재 원본 파일 의 파일 이름과 원본 파일 의 현재 줄 번 호 를 어떻게 인쇄 합 니까?
    참고 답안:
보통 사용 하 는 것 은FILE__, __LINE__ ,디 버 깅 함수 에서 "% s", "% ld" 를 이용 하여 인쇄 하면 됩 니 다.
4. 랑 신 면접 문제: main 주 함수 가 실 행 된 후에 코드 를 한 단계 더 실행 하여 설명 할 수 있 습 니까?
    참고 답안:
crt 는 다른 코드 를 실행 하여 처리 합 니 다. main 종료 후 실 행 된 코드 를 추가 하려 면 atexit () 함 수 를 사용 하여 함 수 를 등록 할 수 있 습 니 다. 문법: \ # include int atexit (void (* function) (void); \ # include \ # include void fn1 (void), fn2 (void), fn3 (void), fn4 (void), int main (void) {  atexit( fn1 );   atexit( fn2 );   atexit( fn3 );   atexit( fn4 );   printf( "This is executed first." ); } void fn1() {   printf( "next." ); } void fn2() {   printf( "executed " ); } void fn3() {   printf( "is " ); } void fn4() {   printf( "This " ); }
    5. 랑 신 면접 문제: 프로그램 이 C 컴 파일 러 인지 C + 컴 파일 러 로 컴 파일 된 지 어떻게 판단 합 니까?
    참고 답안:
c + + 컴 파일 시 cplusplus c 컴 파일 시 STDC 정의
    6. 다음 면접 문 제 는 어떻게 풀 까요?
{int c [3] [3] [3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; for (int i = 0; i < 3; i + +) for (int j = 0; j < 3; j + +) printf ("% ld", & c [j]); printf ("--------------- - -"); printf ("% ld", (c + 1)); printf ("% ld", ("% ld", (* c + 1)); printf ("% ld"% ld "); printf ("% ld "% ld", (* c + 1)); printf ("% ld"% ld ", & c", & c [0]]]]] C [0 0]]]]; printf ("% ld", * * c); printf ("% ld", * c [0]); if (int (c) = = int (* c)) printf ("equl");} 왜 c, * c 의 값 이 같 습 니까?(c + 1), (* c + 1) 의 값 이 같 지 않 은 c, * c, * * c 는 무슨 뜻 입 니까?
    참고 답안:
c 는 첫 번 째 요소 의 주소 입 니 다. * c 는 첫 번 째 줄 요소 의 첫 번 째 주소 입 니 다. 사실 첫 번 째 줄 요소 의 주 소 는 첫 번 째 요소 의 주소 입 니 다. 쉽게 이해 할 수 있 습 니 다. * c 는 첫 번 째 요 소 를 가 져 옵 니 다. 왜 c, * c 의 값 이 같 습 니까? int c 는 c 로 배열 c [0] [0] printf ("% ld", * c [0]) 를 직접 표시 하기 때 문 입 니 다. 문 구 는 이미 배열 머리 로 지침 을 옮 겼 습 니 다. int (* c)c0 의 값 이 1 이 므 로 같 음 을 나타 낸다. 배열 c 의 저장 공간 은 다음 과 같다.c 는 2 차원 배열 이름 입 니 다. 실제 적 으로 지침 상수 입 니 다. 자체 추가, 자체 감소 연산 을 할 수 없습니다. 즉, c +, c -, + c, - c 는 모두 허용 되 지 않 습 니 다. c:   배열 이름, 2 차원 포인터 입 니 다. 그 값 은 배열 의 첫 번 째 주소, 즉 첫 번 째 줄 요소 의 첫 번 째 주소 (* c 와 같 음) 입 니 다.     첫 번 째 줄 의 첫 번 째 요소 의 주소 (& c [0] [0]) 와 같 습 니 다. 2 차원 배열 의 줄 지침 이 라 고 할 수 있 습 니 다. * c: 첫 번 째 줄 요소 의 첫 번 째 주소, 1 차원 지침 으로 2 차원 배열 의 열 지침 이 라 고 할 수 있 습 니 다. * * c: 2 차원 배열 의 첫 번 째 요소 의 값, 즉 c [0] [0] 그래서:    c 와 * c 의 값 은 같 지만 그들 둘 은 서로 값 을 부여 할 수 없다. (유형 이 다르다)     (c + 1): c 는 줄 지침 이 고 (c + 1) 는 c 를 바탕 으로 2 차원 배열 한 줄 의 주소 길 이 를 더 한 것 이다. 즉, & c [0] [0]     바 뀌 었 습 니 다 & c [1] [0];    (* c + 1): * c 는 열 포인터 이 고 (* c + 1) 는 * c 를 바탕 으로 2 배열 의 한 요소 가 차지 하 는 길이 입 니 다. 즉,    &c [0] [0] 이 & c [0] [1] 로 바 뀌 었 어 요.     따라서 (c + 1) 와 (* c + 1) 의 값 은 같 지 않다.
    7. int * * a [3] [4] 를 정의 하면 변수 가 차지 하 는 메모리 공간 은:
    _____참고 답안:
int * * p; / * 16 비트 하 sizeof (p) = 2, 32 비트 하 sizeof (p) = 4 * / 총 3*4*sizeof(p)
 
    8. 함 수 를 작성 하여 년 월 일 시 분 초 를 입력 하고 이 년 월 일 시 분 초의 다음 초 를 출력 해 야 합 니 다. 2004 년 12 월 31 일 23 시 59 분 59 초 를 입력 하면 2005 년 1 월 1 일 0 시 0 분 0 초 를 출력 합 니 다.
    참고 답안:
연도 가 윤년 인지, 달의 대소 월, 월 (12 진법), 일 (윤년, 대소 월 과 관련), 시 (24 진법), 분 (60 진법), 묘 (60 진법) 를 판단 한다.
    9. 다음 코드 의 출력 을 보 여 줍 니 다.
float a = 1.0f; cout < < < (int) a < < < endl; cout < < < (int &) a < < < < endl; / / (int &) a, a 는 무슨 뜻 이 며, a 에 대한 인용 을 생 성 하 는 것 입 니까? cout < < < < booalpha < < < < (int) a = = (int &) a) < < < endl; float b = 0.0f; cout < < (int) b < < < endl; cout < < < < < (int &) b < < < < < < endl; cout < < < < < < < < < < endl; cout < < < < < < booolalpha < < < < < (int) b = = (int &) b = (int & b) b) < < < < < endl & & &
    출력 결 과 는:
1 1065353216 false 0 0 true
 

좋은 웹페이지 즐겨찾기