《프로그래머 면접보전》 - 상해의 모 대학교 시험 문제 모집(제3장)

2485 단어
제3장
1. 한 귀속이 끝나면 이 함수는 반드시 BC
A. 로컬 변수를 사용했습니다.국부 변수는 한 번의 호출 국부 범위에서만 유효하며, 이번 호출 범위에서 나오면 무효이며, 귀속의 끝을 제어할 수 없습니다.(국부 변수의 생명주기/유효 범위를 고찰하는 문제) 주의해야 할 것은 국부 변수가 국부 정태 변수가 아니라는 것이다.
B. 자신을 호출하지 않는 지점이 있습니다.만약 하나의 지점이 자신을 호출하지 않는다면, 귀속은 끝나지 않을 것이다.(이것은 귀속의 정의를 고찰하는 것이다)
C. 전역 변수를 사용하거나 하나 이상의 매개 변수를 사용했습니다----------------------------- 전역 변수를 사용하거나 하나 이상의 매개 변수를 사용하면 확실히 귀속의 끝을 제어할 수 있지만 그 외에 국부 정적 변수도 가능합니다.국부 정적 변수는 창고가 아닌 더미에 저장되고 함수 내에서만 접근되며 값은 초기화되거나 지난번 처리된 내용입니다.
2. C 언어에서 바늘 변수를 가감할 수 있습니까? 의미는 무엇입니까?
C 언어에서 포인터 변수는 0x200000000과 같은 주소를 저장합니다.
바늘 변수는 한 수를 줄일 수 있다. 더하면 높은 주소로 이동하고, 빼면 낮은 주소로 이동한다.그러나 가감된 단원은 바이트 수가 아니라 데이터 형식과 관련이 있으며, int형 바늘이라면 바늘+2는 주소 값에sizeof(int)*2를 추가한 것을 나타낸다.
바늘 변수의 자가와 자감은 사실상 정수 1과의 가감 연산이다.
같은 유형의 바늘 사이에는 크기를 비교할 수 있지만, 다른 유형의 바늘 크기는 의미가 없다.
포인터 사이를 줄일 수 있지만 추가할 수 없습니다. 감쇠는 포인터 사이가 가리키는 메모리 위치의 간격이 얼마나 되는지 나타냅니다.
3.c 언어에서.c와.h 파일의 곤혹은 본질적으로 아무런 차이가 없다.그저h 파일은 헤더 파일로 함수 성명, 매크로 정의, 구조체 정의 등 내용을 포함한다
.c 파일은 프로그램 파일로 함수 구현, 변수 정의 등 내용을 포함한다.그리고 어떤 접두사도 상관없지만, 컴파일러는 기본적으로 어떤 접두사 파일에 대해 어떤 동작을 취합니다.
너는 컴파일러가 모든 접두사 파일을 c 파일로 편집하도록 강요할 수 있다.
4. 흔히 볼 수 있는 시간 복잡도
수량급에 따라 점차적으로 배열하면 흔히 볼 수 있는 시간 복잡도는 다음과 같다.
상수 단계 O(1), 대수 단계 O(log2n), 선형 단계 O(n), 선형 대수 단계 O(nlog2n), 제곱 단계 O(n^2), 입방 단계 O(n^3),...k차방 단계 O(n^k), 지수 단계 O(2^n).
그중에서
(1).O(n), O(n^2), 입방 단계 O(n^3),...,k 차방 단계 O(n^k)는 다항식 단계 시간 복잡도로 각각 1 단계 시간 복잡도, 2 단계 시간 복잡도라고 부른다...
(2).O(2^n), 지수 단계 시간 복잡도, 실용적이지 않음
(3).대수 단계 O(log2n), 선형 대수 단계 O(nlog2n), 상수 단계 이외에 이 종류의 효율이 가장 높다
5. 바늘
#include <stdio.h> 
void foo(int* a, int* b){
	*a = *a + *b;
	*b = *a - *b;
	*a = *a - *b;
}
int main()
{           
	int a=1, b=2, c=3;
	foo(&a, &b);
	foo(&b, &c);
	foo(&c, &a);
	printf("%d,%d,%d", a,b,c);
	return 0;
}
함수의 작용은 두 개의 바늘이 변수를 가리키는 값을 교환하는 것이다. 출력 결과: 1, 3, 2.
6. 두 개의 N*N 행렬의 곱셈을 실현하고 행렬은 1차원 그룹으로 표시한다
7. 단방향 체인 시계 가운데 하나를 찾고 두 개가 있으면 앞에 하나를 가져간다
8. 길이가 n인 정수 그룹을 찾아서 그 중 임의(n-1)의 곱셈이 가장 큰 그룹을 찾아내면 곱셈만 사용할 수 있고 나눗셈은 사용할 수 없다
이 문제는 N개의 정수에서 하나를 제거하고 나머지 수의 곱셈을 최대로 하는 것과 같다.
이 N개수를 순서대로 a1, a2,...,an,P=a1*a2*...*an,
(1) P<0의 경우 가장 큰 음수 정수를 제거하면 됩니다(즉, 절대값이 가장 작은 음수).
(2) P=0의 경우
2.1 이 N개수에서 하나만 "0"인 경우만약 다른 수의 적체가 정이라면'0'을 제거한다.그렇지 않으면 임의의 비영수를 제거한다.
2.2 만약 이 N개수 중 적어도 두 개가'0'이면 아무거나 하나를 제거하면 된다.
(3) P>0의 경우 가장 작은 양의 정수를 제거하면 됩니다.
시간 복잡도는 O(n)입니다.

좋은 웹페이지 즐겨찾기