.


:




:

































 

 

 

 


.

6

.

 

 

.

 

. .

, , . (), "" () . .

() . ( ). , Arr , i - (0 i < 10) : *(Arr + i). Arr , i . (Arr + i) i - , ( *) .

.

: , . .

, , Arr 10 :

int Arr[10];

ptr, Arr:

int *ptr;

( int) .

, ptr ( ) Arr, :

ptr = Arr;

:

ptr = &Arr[0];

.

: char, float, double .

ptr ( ) Arr, :

ptr = &Arr[1];

ptr += 1;

, *(ptr+1) , Arr[1].

ptr += n;

*ptr , n , , , . , n .

"++" "". , , .

. ">", ">=", "!=", "==", "<=", "<". NULL, . NULL -, , . - . .

, .

char:

char *ptr = "hello, world";

*ptr , . "hello, world" *ptr. , . , , . . , . , , "hello, world" , *ptr .

, , . .

:

*_ [];

*_ [ ] = ;

*_ [] = ;

, ;

_ , ;

, ;

(.. ).

:

int data[7]; //

int *pd[7]; //

int *pi[ ] = { &data[0], &data[4], &data[2] };

pd pi int.

pd[j] pi[k] int. 6 pd . pi , data.

, , , . . , , . , .. . , .

. , .

char *ptr[ ] = {

"Surname", //

"Name", //

"group", //

"ACOUY" //

};

. () .

, . . :

int **ptr2;

**ptr2 int. , . :

int x = 88, *ptr, **ptr2;

ptr = &x;

ptr2 = &ptr;

printf("%d", **ptr2);

( ) 88. *ptr , **ptr2 . , ( 88), **ptr2.

. 3 5, .. 3 5 , :

int M[3][5]= {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

int *ptr;

( ) :

M[0][0], M[0][1], M[0][2], M[0][3], M[0][4], M[1][0], M[1][1], M[1][2], M[1][3], M[1][4],

M[2][0], M[2][1], M[2][2], M[2][3], M[2][4].

, , . , 5 .

. :

ptr == &M[0][0]; //?1- , 1-

ptr + 1 == &M[0][1]; // 1- , 2-

ptr + 2 == &M[0][2]; // 1- , 3-

ptr + 3 == &M[0][3]; // 1- , 4-

ptr + 4 == &M[0][4]; // 1- , 5-

ptr + 5 == &M[1][0]; // 2- , 1-

ptr + 6 == &M[1][1]; // 2- , 2-

ptr + 7 == &M[1][2]; // 2- , 3-

ptr + 8 == &M[1][3]; // 2- , 4-

ptr + 9 == &M[1][4]; // 2- , 5-

ptr + 10 == &M[2][0]; // 3- , 1-

ptr + 11 == &M[2][1]; // 3- , 2-

ptr + 12 == &M[2][2]; // 3- , 3-

ptr + 13 == &M[2][3]; // 3- , 4-

ptr + 14 == &M[2][4]; // 3- , 5-

, , , , :

ptr = &M[0][0];

*(ptr + i*n + j);

i , j , n .

 

 

1. .

:

#include <stdio.h>#include <conio.h> int main (void){ int i, n; char *ptr[ ] = {"one", "two", "three", "four", "five",\ "six", "seven", "eight", "nine", "ten"}; n = sizeof(ptr)/sizeof(ptr[0]); printf("\n\t Strings of various length:\n"); for (i = 0; i < n; ++i) printf("\n%12d) %s", i+1, ptr[i]); printf("\n\n Press any key: "); _getch(); return 0;}

. printf() %s . , . "\" ( ). sizeof() . , , .

. , , , , .

. 8.1.


. 8.1.

1

1. .

2. .

3. , , , , , .

4. , .

5. for while.

2. , 10 [8; 8], .

:

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h> #define N 10 int main (void) { double a = -8.0, b = 8.0; double arr[N], *pmin[N], *temp; int i, j; long int T; T = (long)time(NULL); // srand((unsigned int) T); // for(i = 0; i < N; ++i) arr[i] = a + (b - a)*(double)rand()/RAND_MAX; printf("\n\t The initial array of [%1.4f, %1.4f]:\n", a, b); for (i = 0; i < N; ++i) printf("\n\t%2d) %8.4f", i+1, arr[i]); // // , for (i = 0; i < N; ++i) pmin[i] = &arr[i]; // for (i = 0; i < N-1; ++i) for (j = i+1; j < N; ++j) { if (*pmin[i] < *pmin[j]) {temp = pmin[i];pmin[i] = pmin[j]; pmin[j] = temp; }} // printf("\n\n\t Assorted array of descending:\n");for (i = 0; i < N; ++i)printf("\n\t%2d) %8.4f", i+1, *pmin[i]); printf("\n\n Press any key: "); _getch(); return 0; }

, , .. , .

. 8.2.


. 8.2.

2

1. .

2. . : [8; 2*X], , .

3. N , N . . .

3. .

:

#include <stdio.h>#include <conio.h> #define n 15 int main(void) {int i = 1, I, j, k, p = n/2; int M[n][n], *ptr[n*n]; // for (I = 0; I < n; ++I)for (j = 0; j < n; ++j){ M[I][j] = 0; ptr[I*n + j] = &M[I][j];} for (k = 1; k <= p; k++) // {// for (j = (k-1); j < (n-k+1); j++)*ptr[(k-1)*n + j] = i++; // for (j = k; j < (n-k+1); j++) *ptr[j*n + (n-k)] = i++; // for (j = (n-k-1); j >= (k-1); --j) *ptr[(n-k)*n + j] = i++; // for (j = (n-k-1); j >= k; j--) *ptr[j*n + (k-1)] = i++; }if (n % 2) *ptr[p*n + p] = n*n;printf("\n\t Spiral matrix of dimention (%d x %d):\n\n",n,n); for (i = 0; i < n; ++i)for (j = 0; j < n; ++j){ if (n*n < 20*20){ printf("%4d", *ptr[i*n + j]); if (j == (n-1)) printf("\n");} else if (n*n >= 20*20) goto mes;} mes: if (n > 19)printf("\n\t It is a large matrix. Can not to see on display.\n"); printf("\n Press any key: "); _getch(); return 0; }

. 8.3.


. 8.3.

goto, , .

3

1. 3 19 .

2. M[n][n]. .

3. : , [n][n]. ( ). .

4. .

5. , , .

6. . .

7. . .

8. . .

. () .

4. 15 14 [12; 12] .

:

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h> #define N 15#define M 14const int Left = -12;const int Right = 12; int main(void) {int i, j, n, m;int matr[N][M];time_t t; // srand((unsigned)time(&t)); printf("\n Enter the number of lines of the matrix is not more than %d: ", N);scanf_s("%d", &n);printf(" Enter the number of columns of the matrix is not more than %d: ", M);scanf_s("%d", &m); // if (n > N || m > M || n < 1 || m < 1){ printf("\n\t Data error! Repeat please.\n");printf("\n Press any key: ");_getch(); return 0; } for (i = 0; i < n; ++i)for (j = 0; j < m; ++j)*(*(matr + i) + j) = 0; for (i = 0; i < n; ++i)for (j = 0; j < m; ++j)*(*(matr + i) + j) = (rand() % (2*Right+1)) + Left; printf("\n The matrix of random whole numbers from the entire [%d, %d]:\n", Left, Right); for (i = 0; i < n; ++i) {printf("\n "); for (j = 0; j < m; ++j)printf("%5d", *(*(matr + i) + j));} printf("\n\n Press any key: "); _getch(); return 0; }

const . srand() , .. . time(&t), .

. 8.4.


. 8.4.

4

1. .

2. n m ?.

3. . .

4. , rand(), .

5. .

5. .

. n k, k m. n m. :

 

:

, :

:

#include <stdio.h>#include <conio.h>#define n 7#define k 12#define m 4 int main(void) {int i, j, p;int A[n*k], B[k*m];long int *C[n*m]; // for (i = 0; i < n; ++i)for(j = 0; j < m; ++j)C[i*m + j] = 0; for (i = 0; i < n; ++i)for (j = 0; j < k; ++j)A[i*k + j] = 0; for (i = 0; i < k; ++i)for (j = 0; j < m; ++j)B[i*m + j] = 0; // for (i = 0; i < n; ++i)for (j = 0; j < k; ++j)A[i*k + j] = i + j - 6; for (i = 0; i < k; ++i)for (j = 0; j < m; ++j)B[i*m + j] = i + j - 11; // for (i = 0; i < n; ++i)for (j = 0; j < m; ++j) { C[i*m + j] = 0;for (p = 0; p < k; ++p)C[i*m + j] += (A[i*k + p] * B[p*m + j]);}printf("\n\t The result of multiplying the two matrices:\n\t\t C = A*B (%dx%d = %dx%d * %dx%d)\n", n, m, n, k, k, m);for (i = 0; i < n; ++i) {printf("\n\t");for (j = 0; j < m; ++j)printf("%6ld", C[i*m + j]); } printf("\n\n Press any key: "); _getch(); return 0; }

. ld.

. 8.5.


. 8.5.

5

1. k 5*, , . .

2. .

3. , .. .

4. ( ).

5. .

6. , 4 8, . . , .

3 4 8 , 3, 4, 8, *PTR[3*4*8].

:

#include <stdio.h>#include <conio.h>#define p 3 // "" #define n 4 // #define m 8 // int main (void){ int i, j, k, r; int *PTR[p*n*m], *M2[n*m]; // for (i = 0; i < p*n*m; ++i)PTR[i] = (int*)(i + 1); printf("\n An array of dimension %dx%dx%d:\n", p, n, m);puts("===========================================");// for (k = 0; k < p; ++k){ printf("\n"); for (i = 0; i < n; ++i) { printf(" "); for (j = 0; j < m; ++j){ printf(" %3d ",PTR[k*n*m + i*m + j]); } printf("\n"); } } puts("===========================================");printf("\n Select the number of arrays of a series of numbers (%d...%d): ",1, p); scanf_s("%d", &r);printf("\n Matrix number %d from three-dimensional array:\n", r);// 3- for (k = 0; k < p; ++k) for (i = 0; i < n; ++i) for (j = 0; j < m; ++j) if (k == (r-1)) {M2[i*m + j] = PTR[k*n*m + i*m + j];} for (i = 0; i < n; ++i) { printf("\n "); for (j = 0; j < m; ++j)printf(" %3d ", M2[i*m + j]); } printf("\n\n Press any key: "); _getch(); return 0; }

( p = 3), ( n = 4) ( m = 8). () "". *PTR , . puts() \n.

. 8.6.


. 8.6.

6

1. , .. r [1;3].

2. , ***ptr3, **ptr2. .

3. n = 2*, , .

4. , [3*X; 3*X], , .

5. . (k,i,j) . .

7. , 15 , strstr(). .

strstr() string.h.

:

#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>#include <time.h> int main (void) { int i, k = 0, n, in; int numSTR; int N = 1000; int numA, numZ; char str[16]; char sub[4]; char *ptr; srand((unsigned)time(NULL)); numA = (int)'a'; numZ = (int)'z'; printf("\n Enter the three letters: "); in = scanf_s("%s", sub, sizeof(sub)); if (in == 0) { printf("\n Error input. Press any key: "); _getch(); exit(1); } printf("\n\t substring is \"%s\"\n", sub); for (n = 0; n < N; n++) {for (i = 0; i < 15; i++)str[i] = numA + rand() % (numZ - numA) + 1; str[i] = '\0'; ptr = strstr(str, sub);if (ptr!= NULL) { numSTR = (int)(ptr - str +1); k++; break; }} if (k == 0) printf("\n\t Substring \"%s\" not found", sub); else printf("\n\t Substring \"%s\" found at positions %d, %d, %d", \ sub, numSTR, numSTR+1, numSTR+2); puts("\n"); for (i = 0; i < 15; i++) printf(" %3d)", i+1); puts(""); for (i = 0; i < 15; i++) printf(" %3c ", str[i]); printf("\n\n... Press any key: "); _getch(); return 0;}

. , strstr() .

. 8.7.


. 8.7.

7

1. numSTR.

2. for while.

3. ( 15 ), (, ).

4. .

5. , . , , .

 

4.

1. ,

2. .

3. .

 

 

1. ?

2. ?

3. ?

4. ?

5. ?

6. () ?

7. ?

8. ?

 

 

 

6

 

.

 



<== | ==>
, | :
:


: 2016-11-02; !; : 371 |


:

:

- , .
==> ...

1947 - | 1742 -


© 2015-2024 lektsii.org - -

: 0.098 .