Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прилож В2 Описание языка С ч 2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
382.46 Кб
Скачать

Void main()

{

float a[3][4], b[5][6], c[4][7], sa, sb, sc, pa, pb, pc;

clrscr();

fmatr(a, 3, 4, 1.9, -3.7, &sa, &pa, ’A’);

printf(“sa=%.1f pa=%.1f\n”, sa, pa);

fmatr(b, 5, 6, 2.5, 4.1, &sb, &pb, ’B’);

printf(“sb=%.1f pb=%.1f\n”, sb, pb);

fmatr(c, 4, 7, 5.3, 3.1, &sc, &pc, ’C’);

printf(“sc=%.1f pc=%.1f\n”,sc,pc);

}

5. Аргументом функции является другая функция

Описание функции. Такой аргумент описывается как указатель на функцию

void f1(тип (*fun)(тип1 арг1,…),…);

Внутри функции записывается вызов этой другой функции:

fun(x, y, z,…);

При вызове функции указывается только имя конкретной функции-аргумента:

f1(f2,…)

где f2 – имя конкретной функции. Функция f2 должна иметь одинаковый список аргументов с функцией fun.

Пример:. Составить программу для вычисления и вывода на экран значений функций:

f1=1.1*x*sin(2.9x) для –5<=x<=5, x=0.2

f2=1.5ecos(1.8y) для 0<=y<=4, y=0.1

f3=3.7tg(4.2z) для 1<=z<=6, z=0.05

Обозначим: xmin=xn, xmax=xk, x=dx

Программа для 5-го варианта:

#include<stdio.h>

#include<math.h>

#include<conio.h>

/* Описание функций f1, f2, f3 */

float f1(float x)

{

return(1.1*x*sin(2.9*x));

}

float f2(float y)

{

return(1.5*exp(cos(1.8*y)));

}

float f3(float z)

{

return(3.7*tan(4.2*z));

}

/* Описание функции ff, которая вычисляет и выводит

значения любой из функций f1, f2, f3 */

void ff(float (*fun)(float x), float xn, float xk, float dx, char fname)

{

float x1 ,f;

printf( “Значения функции f%c для x Є[%.1f, %.1f] dx=%.2f\n”, fname, xn, xk, dx);

for(x1=xn; x1<=xk; x1+=dx)

{

f=fun(x1);

printf(“%.3f “,f);

}

printf(“\n”);

}

/* Главная функция */

Void main()

{

clrscr();

ff(f1, -5, 5, 0.2, ’1’);

ff(f2, 0, 4, 0.1, ’2’);

ff(f3, 1, 6, 0.05, ’3’);

}

7. Работа со строками

В языке С есть тип данных char, который можно использовать как для работы с отдельными символами, так и со строками.

Символодин символ, заключенный в апострофы: 'A', '!', '+', занимает 1 байт памяти

Строкаодин и более символов, заключенных в кавычки "…". При записи в памяти, в конце строки автоматически записывается специальный символ конца строки '\0' – нуль-символ.

"А" – строка в памяти занимает 2 байта: 'A'+'\0'

"ABCDEF" ("ABCDEF\0")

"Results of calculations" В памяти: "Results of calculations\0"

7.1 Способы описания строк в программе

1. Строковая константа. Рассмотрена ранее. Используется в операторах ввода-вывода:

printf("Введите значение А=");

scanf("%f",&a);

2. Строка записывается в виде символьного массива:

char mst[50];

char a[30]=”Ошибка ввода данных”;

/* Ввод строки */

scanf(”%s”,mst); //Ввод с клавиатуры строки в массив mst

Со строкой можно работать в целом, используя ее имя – mst или посимвольно:

a[3]==’б’

a[5]==’a’

С символьным массивом можно работать только по одному символу:

char symb[7]={’a’,’b’,’c’,’d’,’e’,’f’,’g’};

symb[2]==’c’

symb= =&symb[0]

3. Строка записывается как указатель на тип char

char *pstr=”Memory size”;

pstr – имя строки

*(pstr+i) – i-й символ

*(pstr+4)==’r’

4. Массив символьных строк

char arr_str[5][40] ={“хлеб”,

”молоко”,

”картофель”,

”помидоры”,

”яблоки”};

arr_str[i] – имя i-й строки

arr_str[1] – имя строки "молоко"

arr_str[i][j] – j-й символ в i-й строке

arr_str[2][3]= =’т’

5. Массив указателей на тип char

char *pstr_arr[5]={“клубника”,

“вишня”,

“банан”,

“ананас”,

“слива” };

pstr_arr[i] – имя i-й строки

*(pstr_arr[i]+j) – j-й символ в i-й строке

*(pstr_arr[2]+2)==”н”

Здесь память для строк выделяется по их длине.