C언어 강좌 설계 점수 처리 프로그램
C 언어의 가장 중요한 지식 포인트에 대한 자료를 검토하십시오! 배우고 싶은 모든 것을 보러 오세요. 꼭 합격하세요!
일반적으로 명확해야 합니다.
1) 프로그램 구조에는 순차 구조, 루프 구조(3개의 루프 구조), 선택 구조(if 및 스위치)의 세 가지 유형이 있습니다.
2) 프로그램을 읽을 때에는 반드시 main()부터 입력한 뒤 위에서 아래로 순차적으로 읽어야 한다. (루프가 나오면 루프를 하고, 선택을 만나면 선택을 한다) .
3) 컴퓨터 데이터는 바이너리 형식으로 컴퓨터에 저장됩니다. 데이터가 저장되는 위치는 주소입니다.
4) 비트는 0 또는 1을 의미하는 비트입니다. . 바이트는 바이트를 의미하며, 1바이트 = 8비트입니다.
5) 이진수를 십진수로 나누는 방법을 꼭 기억하세요.
자주 테스트되는 개념:
1. 컴파일 전처리는 C 언어의 일부가 아니며 더 이상 실행되지 않습니다. C 언어로 컴파일된 프로그램을 소스 프로그램이라고 하며, ASCII 값으로 텍스트 파일에 저장됩니다.
2. 모든 C 언어 프로그램에는 단 하나의 주요 기능이 있습니다.
3. 함수 내에서는 함수를 정의할 수 없습니다.
4. 알고리즘에는 출력이 있어야 하며 입력은 필요하지 않습니다.
5. Break는 루프 구조와 스위치 문에서 사용할 수 있습니다.
6. 쉼표 연산자의 수준이 가장 낮습니다.
1장
1) 법적 사용자 식별자 테스트:
법적 요구사항은 문자, 숫자, 밑줄로 구성됩니다. 다른 요소는 잘못된 것입니다.
그리고 첫 번째는 문자나 밑줄이어야 합니다. 첫 번째는 잘못된 숫자입니다.
키워드는 사용자 식별자로 사용할 수 없습니다. main 정의 scanf printf는 키워드가 아닙니다. 혼란스러운 점은 If가 사용자 식별자로 사용될 수 있다는 것입니다. If의 첫 글자는 대문자이므로 키워드가 아닙니다.
2) 실제 데이터의 법적 형식:
2.333e-1이 합법적이며 데이터는 2.333×10-1입니다.
시험 팁: e 앞뒤에는 숫자가 있어야 하며, e 뒤에는 정수가 있어야 합니다. .
3) 문자 데이터의 합법적인 형식::
'1'은 문자가 1바이트를 차지함을 의미하고, "1"은 문자열이 2바이트를 차지함을 의미합니다(끝 기호 포함).
ASCII 값 '0'은 48, 'a'의 ASCII 값은 97, 'A'의 ASCII 값은 65입니다.
4) 정수형은 일반적으로 2바이트, 문자형은 1바이트, 더블형은 일반적으로 4바이트를 사용합니다.
시험 중에는 일반적으로 다음과 같이 말합니다. 16비트 컴파일 시스템 또는 32비트 시스템. 이런 일이 발생하면 걱정하지 말고 동일한 질문을 하십시오. 정수형은 일반적으로 2바이트, 문자형은 1바이트, 배정밀도는 일반적으로 4바이트라는 점을 이해하세요.
5) 이스케이프 문자 검사:
프로그램에서 int a = 0x6d는 변수 a에 16진수 숫자를 제공하는 것입니다. 여기서는 0x가 반드시 존재해야 합니다.
프로그램에서 int a = 06d는 8진수 형식입니다.
이스케이프 문자 중 '\x6d'는 유효하며 0은 쓸 수 없으며 x는 소문자입니다.
'\141'은 유효하며 0은 쓸 수 없습니다.
'\108'은 8이 허용되지 않으므로 불법입니다.
6) 산술 연산 기호의 우선 순위:
동일한 수준 중 일부는 왼쪽에서 오른쪽으로, 일부는 오른쪽에서 왼쪽으로 나타납니다.
7) 강제 유형 변환:
int (a)가 아닌 (int)여야 합니다. 유형에 대괄호가 있어야 합니다.
(int) (a b)와 (int) a b의 차이점에 유의하세요. 전자는 a와 b를 변환하는 것이고, 두 번째는 a를 변환하고 b를 더하는 것이다.
8) 수식 검토:
수식인 경우 숫자 값이 있어야 합니다.
할당식: 표현식 값은 가장 왼쪽 값이고, a=b=5이며, 상수에는 값을 할당할 수 없습니다.
자기 증가 및 자기 감소 표현식: a=5, a(is 6), a(is 5)라고 가정합니다.
연산 메커니즘: a는 첫 번째 변수입니다. 그런 다음 얻은 값을 변수 a에 넣은 다음 이것을 사용하십시오
수식 a의 값은 6이고 a는 수식의 값을 5로 먼저 사용하고 그 다음 그런 다음 a 값에 1을 더해 6을 얻은 다음
변수 a에 넣습니다. a와 a를 사용한 후 다음 프로그램에서 다시 a를 사용하면 변수 a에는 6이 됩니다.
시험 팁: 사용하기 전에 먼저 추가하고, 사용 후 추가하기 전에 먼저 사용하세요.
쉼표 표현식: 우선순위가 가장 낮습니다. 표현식 값은 쉼표 오른쪽에 있는 표현식 값입니다.
(2, 3, 4)라는 수식의 값은 4입니다.
9) 비트 연산 테스트:
하나 또는 두 개의 테스트 문제가 있습니다.
일반적인 처리 방법: 거의 모든 비트 연산 문제는 이 프로세스에 따라 처리되어야 합니다(먼저 10진수를 2진수로 변환한 다음 10진수로 변환).
예 1: char a = 6, b;
b = lt; 이 문제의 계산은 먼저 a의 10진수 6을 이진수로 변환하는 것입니다. 그런 다음 비트 작업을 수행하십시오.
예 2: 꼭 기억하세요.
예 3: 데이터가 반올림되지 않은 경우 lt;lt;한 비트를 왼쪽으로 이동하는 것은 2;gt를 곱하는 것을 의미합니다. gt; 오른쪽으로 한 자리 이동한다는 것은 2로 나누는 것을 의미합니다.
10) 018의 값은 8진법에 8이 없습니다. 8마다 1이 입력됩니다.
11) 기호의 양쪽은 모두 정수여야 합니다. 정수가 아니면 잘못된 것입니다.
12) 반올림 및 소수 누락의 세 가지 경우:
1. int a =1.6
2. (int)a
< p> 3.2장
1) printf 함수의 형식 검사:
d는 정수 유형에 해당하고, f는 문자에 해당합니다. 정밀성 등 너비, 왼쪽 정렬 및 기타 수정 사항.
ld는 long int에 해당하고 lf는 double에 해당합니다.
2) scanf 함수의 형식 검사:
함수의 두 번째 부분은 a가 아니라 a와 같은 주소입니다. p> Scanf( "dd*dd",amp;a,amp;b,amp;c); 세 번째 입력 데이터를 건너뜁니다.
3) putchar 및 getchar 함수 검사:
char a = getchar()에는 매개변수가 없습니다. 키보드에서 입력한 문자를 가져와 변수 a에 제공합니다.
putchar('y')는 문자 y를 화면에 출력합니다.
4) 두 변수 x와 y의 값 교환을 구현하는 방법(기억해야 함)
필요한 x=y, y=x를 넣을 수 없습니다. 중간 변수 t =x=y=t를 사용합니다.
5) 소수점 세 자리를 유지하고 네 번째 자리로 반올림하는 프로그램을 구현하는 방법(암기 필요)
이것은 일반화의 의미가 있습니다. x = (int ) x 이렇게 소수 부분을 제거하세요.
3장
특별한 주의가 필요합니다: C 언어에서는 0이 아닌 것은 논리적으로 참을 나타내는 데 사용되고 0은 논리적으로 거짓을 나타내는 데 사용됩니다.
1) 관계식:
표현식의 값은 1(참을 나타냄) 또는 0(거짓을 나타냄)만 가능합니다.
관계식의 경우 표현식이 참이면 1을 얻습니다. 예를 들어 9gt; 8은 true이므로 표현식의 값은 1입니다.
2) 논리 표현식:
1(true를 의미) 또는 0( 거짓을 나타냄)
a) ***has amp; 세 개의 논리 연산 기호.
b)! gt;amp;amp;gt;|| 우선순위 수준.
c) 단락 현상에 주의하세요. 나는 시험에 합격하는 것을 선호합니다.
d) x가 0보다 크고 10보다 작다는 것을 표현하기 위해. 0lt;xlt;10은 허용되지 않습니다(기억해야 함). 방법은 먼저 0lt를 계산하는 것입니다. 따라서 0보다 크고 10보다 작음을 의미하려면 (0lt; x)amp; (xlt; 10)을 사용해야 합니다.
3) if 문
else는 else가 없는 가장 가까운 if 문과 결합됩니다.
4) 조건식 :
수식 1? 수식 2: 수식 3
참고로 0이 아닌 경우 수식 2의 값, 0인 경우 수식 2의 값입니다.
시험 공식: false 이전에는 true이고 그 다음에는 false입니다.
5) switch 문:
a) 책(34페이지)에 나온 두 가지 예의 경우 중단이 있는 경우와 중단되지 않은 경우의 차이점에 주의하세요. 중단은 없습니다. 대소문자가 일치하면 나머지는 실행됩니다. 중단이 있으면 스위치 문이 직접 점프됩니다.
b) 스위치는 계속할 수 없고 중단에만 사용할 수 있습니다.
4장
1) 세 가지 유형의 루프 구조:
a) for() while();
b) for 루프에는 두 개의 세미콜론이 있어야 합니다. 이를 잊지 마십시오.
c) 프로그램을 작성할 때 루프에는 종료 조건이 있어야 한다는 사실에 주의해야 합니다. 그렇지 않으면 무한 루프가 됩니다.
d) do-while() 루프의 마지막 while()에 있는 세미콜론은 손실되어서는 안 됩니다. (컴퓨터에서 실수를 수정하도록 주의하세요)
2) break와 continue의 차이점
메모리 방식:
break: break를 의미합니다. (break 전체 사이클) 따라서 break가 표시되면 전체 루프를 종료합니다.
계속: 계속(루프 작업을 계속함)을 의미하지만 이 루프를 끝내려면 루프 본문의 나머지 문이 더 이상 실행되지 않고 루프의 시작 부분으로 점프한 다음 루프를 결정합니다. 조건을 설정하고 새로운 작업을 수행합니다.
3) 중첩 루프
루프 내부에는 루프가 더 복잡하며 레이어별로 인내심을 갖고 계산해야 합니다. 일반적으로 두 레이어가 2차원 배열을 처리한다는 점을 기억하세요.
4) while((c=getchar())!='\n')과 while(c=getchar() !='\n')의 차이점
먼저 a = 3 != 2 및 (a=3)을 살펴보세요! =2의 차이점은 다음과 같습니다.
(!= 부호는 = 부호보다 수준이 높으므로 첫 번째 a의 값은 3을 먼저 계산합니다!=2) 첫 번째 a의 값은 1입니다. ㄷ 3이에요.
시험 주의 사항: 여기서 괄호의 중요성.
5장
함수: 특정 기능을 포함하는 프로그램 블록입니다.
1) 함수 매개변수 및 반환 값(개략도):
main()
{
int a = 5, b=6, c
c = add(a, b); p>
printf("d", c);
}
함수 호출
a, b는 실제 매개변수입니다
< p>전체 함수는 Add 함수의 반환 값인 값을 얻습니다.
int add (int x, int y)
{
int z;
z=x y;
< p> return z;}
호출된 함수
x, y는 형식 매개변수입니다.
함수 반환 값은 정수입니다< /p>
z는 이 add 함수에 의해 계산된 결과이며, 이 함수가 주 프로그램에 반환하는 반환 값입니다.
프로그램은 위에서 아래로 순차적으로 실행됩니다. add 함수를 만나면 a와 b의 값이 호출 함수에 전달되고 프로그램은 일시적으로 중단되어 대기합니다. 반환 값. 반환 값을 받은 후 순차적으로 실행
2) 매개변수 전달에 꼭 주의하세요
실제 매개변수와 형식 매개변수 간의 값 전달, 주소 차이 전달 . (시험의 핵심)
값이 통과되면 형식 매개변수가 변경되어도 실제 매개변수가 변경되지는 않습니다.
주소가 전달되면 형식 매개변수가 변경되면 실제 매개변수도 변경될 수 있습니다.
3) 함수 선언 검토:
함수 이름, 함수 반환 유형, 함수 매개변수 유형을 포함해야 합니다.
반드시 그런 것은 아닙니다: 형식 매개변수의 이름입니다.
6장
포인터 변수의 본질은 주소를 유지하는 반면 일반 변수는 값을 유지하는 것입니다.
int *p에서 *p와 p의 차이점:
*p는 변수로 사용될 수 있습니다. *의 기능은 다음 주소 p<에서 값을 취하는 것입니다. /p>
p는 주소로 사용됩니다.
*p와 (*p)의 차이점: 오류 수정 질문에서 매우 중요합니다.
*p 예, 주소가 변경됩니다.
(*p) 값이 변경됩니다.
삼항식: (시험의 초점)
배열 이름: 첫 번째 요소의 주소를 나타냅니다. 배열 이름은 단독으로 추가할 수 없으며 주소 상수 이름입니다. (테스트를 여러번 했습니다.)
함수 이름 : 함수의 진입 주소를 나타냅니다.
문자열 상수 이름: 첫 번째 문자의 주소를 나타냅니다.
7장
1 1차원 배열의 중요한 개념:
배열 a[10]에 대해 논의합니다.
1. a는 첫 번째 요소의 주소인 배열 이름을 나타내며 요소 a[10]의 주소입니다.
2. a는 주소 상수이므로 a가 나타나거나 a=a 2가 할당되면 잘못된 것입니다.
3. a는 1차원 배열의 이름이므로 열 포인터이므로 1이 한 열을 점프한다는 의미입니다.
a[3][3]에 대한 토론.
1. a는 첫 번째 요소의 주소인 배열 이름을 나타내며 요소 a[10]의 주소입니다.
2. a는 주소 상수이므로 a가 나타나거나 a=a 2가 할당되면 잘못된 것입니다.
3. a는 2차원 배열의 이름이므로 행 포인터입니다. 즉, 1이 한 행을 점프한다는 의미입니다.
4. a[0], a[1] 및 a[2]도 주소 상수이며 동시에 할당 작업을 수행할 수 없습니다. [0] 1, a[1] 1 및 a[2] 1 모두 한 열을 점프합니다.
5. a는 a[0], a[1], a[2]와 다르며 기본 유형도 다릅니다. 전자는 요소의 행이고, 후자의 세 개는 요소의 열입니다.
2차원 배열 문제 해결 팁:
a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9 }그런 질문이네요.
1단계: 다음과 같이 작성합니다: 첫 번째 열 두 번째 열 세 번째 열
a[0]à 1 2 3 -gt; 첫 번째 행
a[1 ]à 4 5 6 —gt; 두 번째 줄
a[2]à 7 8 9 —gt; 세 번째 줄
2단계: 다음과 같이 질문을 작성하세요. < /p>
*(a[0] 1) 첫 번째 행의 첫 번째 요소가 한 열 뒤로 이동한 다음 여기에 a[0][1] 요소가 있으므로 1 입니다.
*(a[1] 2) 두 번째 행의 첫 번째 요소가 두 열 뒤로 이동한다는 것을 알고 있습니다. 여기 a[1][2] 요소가 있으므로 6입니다.
기억하세요: 2차원 배열 문제라면 문제를 풀기 전에 위 형식으로 작성해야 합니다.
1차원과 2차원 배열의 초기화, 첫 번째 차원은 쓸 필요가 없지만 두 번째 차원은 2차원으로 써야 합니다
int a[]={1, 2}는 유효합니다. int a[][4]={2, 3, 4}는 유효합니다. 그러나 int a[4][]={2, 3, 4}는 불법입니다.
2차원 배열의 행 포인터
int a[1][2]
a가 이제 행 포인터인 경우 1은 한 행을 점프합니다. 배열 요소의 (*)p[2] 포인터
a[0]를 사용하면 a[1]이 이제 열 포인터가 됩니다. a[0] 1은 하나의 배열 요소를 점프합니다. *p[2] 포인터 배열과 함께 사용하세요.
옷을 벗는 규칙도 기억하세요:
a[2]는 *(a 2) a[2][3]이 됩니다. *(a 2)[3] 그리고 나서 *(*(a 2) 3)
이 아이디어는 매우 중요합니다