Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си

Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си, страница 6

PDF-файл Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си, страница 6 Операционные системы (37427): Книга - 3 семестрН.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си: Операционные системы - PDF, страница 6 (37427) - 2019-05-08СтудИзба

Описание файла

PDF-файл из архива "Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 6 страницы из PDF

Написать функцию, которая вычисляет и распечатываетсумму элементов каждого столбца вещественной матрицы 5х6.void sum(double (*p)[6]){ int i,j;double s,(*pp)[6];for(i=0;i<6;i++) {pp=p;for(j=0,s=0.0; j<5; j++) {s+=*(*pp+i);pp++;}printf(“%f\n”,s);}}Аргументы командной строкиКак правило, в операционной системе имеется возможностьпередавать аргументы запускаемой программе при помощи командной строки. Стандарт Си-программа может получить к ним доступпосредством аргументов функции main():main(int argc, char *argv[])В первом (argc) передается количество аргументов командной строки, во втором (argv) – адрес массива указателей на строкиаргументы. По соглашению argv[0] всегда содержит адрес строки,в которой записано имя работающей программы. Поэтому, еслизначение argc равно 1, это означает, что в командной строке послеимени программы никаких аргументов нет. Кроме того, всегда выполняется соглашение argv[argc]=NULL.Стандарт POSIX.1 также определяет третий аргумент функцииmain() 8:стандарт POSIX.1 также рекомендует доступ к окружению программы через глобальную переменную environ:extern char ** environ;имеющую аналогичное содержимое835main(int argc, char *argv[], char *envp[])Массив envp[] содержит указатели на переменные окружения, пе-редаваемые программе.

Каждая переменная – это строка видаимя_переменной=значение_переменнойУпражнения91. Написать функцию конкатенации строк (аналог функции strcat).2. Написать функцию сравнения строк (аналог функции strcmp).3. Присвоить переменной единицу, если одна строка содержится вконце другой, и ноль в противном случае.4. Поменять местами первый отрицательный элемент вещественного массива m1 с последним положительным элементом вещественного массива m2.5. Изменить знак у всех отрицательных элементов вещественногомассива X.6.

Определить, у скольких элементов целочисленного массива Xравные соседи(предыдущий и последующий элементы). Записатьответ в переменную n.7. Написать функцию проверки на равенство строк s1 и s2 при условии, что пробелы не учитываются.8. Написать аналог функции strstr , которая возвращает указатель напервое вхождение одной строки в другую и нулевой указатель впротивном случае. Используя функцию strstr, найти последнеевхождение строки “end” во введенной строке. Распечатать символы, которые следуют за этим вхождением.9. Функции передаются 2 Си-строки:char s[], t[];Все цифры строки s записать в начало строки t, а остальные символы – в конец (в любом порядке).10.Дано множество точек на плоскости, заданных координатами(x,y).

Написать функцию, возвращающую минимальное расстояние между двумя точками.11.Написать функцию обработки вещественной матрицы (50x20).Функция должна находить строку, содержащую наибольшее количество отрицательных элементов и распечатывать все элементы этой строки. Если таких строк несколько, то печатать все такие строки.12.Написать функцию, осуществляющую умножение двух матрицпорядка MxN и NxK.Задачи №13 и №14 взяты из первого издания книги Б.Керниган, Д.Ритчи «Язык программирования Си»93613.Что будет выведено на печать?int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};int *pa[3]={a[0],a[1],a[2]};int *p=a[0];main(){ int i;for(i=0;i<3;i++)printf(“%d %d %d %d %d\n”,a[i][2i],*a[i],*(*(a+i)+i),*pa[i],p[i]);}14.Что будет выведено на печать?char *c[]={“ENTER”,”NEW”,”POINT”,”FIRST”};char **cp[]={c+3,c+2,c+1,c};char ***cpp=cp;main(){ printf(“%s”,**++cpp);printf(“%s”,*--*++cpp+3);printf(“ %s”,*cpp[-2]+3);printf(“%s\n”,cpp[-1][-1]+1);}15.Упорядочить вещественный массив х по неубыванию, используяметод сортировки выбором (найти максимальный элемент массива и переставить его с последним элементом; затем применитьэтот же метод ко всем элементам, кроме последнего).16.

Упорядочить вещественный массив х по неубыванию, используяметод сортировки обменом ("метод пузырька") (последовательносравнивать пары соседних элементов: x1 с x2, х2 с х3 и т.д., и если первый элемент пары больше второго, то переставлять их –наибольший элемент окажется в конце массива; затем применитьэтот же метод ко всем элементам, кроме последнего).17.Упорядочить вещественный массив х по неубыванию, используяметод сортировки вставками (пусть первые k элементов уже упорядочены по неубыванию; взять (k+1)-ый элемент и разместитьего между первыми k, не нарушая порядок).18.Дан массив, содержащий заданное количество вещественных чисел. Написать функцию, возвращающую максимальное значениеэтого массива.19.Даны целочисленные массивы X и Y , содержащие по 20 элементов. Написать функцию, которая возвращает значение u.15 20 2x,приxi y i > 0∑∑ii =1U =  i =1 202yi , иначе∑i =103720.Описать функцию, определяющую, сколько элементов вещественного массива X из n элементов равны числу у.21.Написать функцию, которой передаются 2 100-элементных целыхмассива, определяющую, составлены ли эти 2 массива из одних итех же чисел без учета порядка их следования, но с учетом повторяющихся чисел (функция возвращает 1 в случае положительногоответа).22.Написать функцию, которая за 1 просмотр циклически сдвигаетполученный вещественный массив на 20 позиций влево (функциядля работы должна использовать вспомогательный массив).23.Написать функции, которым в качестве параметра передаетсямассив указателей на строки.

Признак конца – нулевой указатель.a) Написать функцию, которая распечатывает первые три символа из каждой строки.b) Написать функцию, которая печатает самую длинную строку.c) Написать функцию, которая печатает строки, включающие всебя строку “begin”.24.Распечатать все аргументы командной строки ( без имени вызываемой программы ).25.Если среди параметров командной строки, есть строки, содержащие “end” более одного раза, то распечатать символы этих строк,находящиеся после второго вхождения “end”.26.Написать программу, печатающую имена и значения всех переменных окружения.38ТЕМА 5. Препроцессор10Стандартная схема трансляции Си-программы состоит из двухэтапов: препроцессирование и собственно компиляция.Препроцессор представляет собой предварительную стадиюобработки исходного текста программы, по окончании работы которой модифицированный исходный текст поступает на вход компилятору.Одной из примитивных задач препроцессора является удаление комментариев, а также «склеивание» строчек, последним символом которых является «\», со следующей за ними строкой (эта особенность позволяет программисту осуществлять «перенос» слишкомдлинных строк, например, длинных строковых литералов) и конкатенация рядом стоящих строковых литералов.

Кроме того, препроцессор выполняет макроподстановку, условную компиляцию, подключение файлов.Программный файл может содержать специальные директивыпрепроцессору. Директивам препроцессору предшествует знак #.Например:#include <stdio.h> /* подключение файла */#define a “max=%d\n” /* макроподстановка */int x=15;max(int);main(){ int y, u;scanf(“%d”,&y);u=max(y);printf(a,u);}max(int f){ int k;k=(x>f)?x:f;return k;}Включение файловНа место директивы #include препроцессор подставляет содержимое указанного в ней файла. Порядок поиска подключаемогофайла зависит от реализации Си.

Если имя файла заключено в < >,то он ищется в стандартном каталоге подключаемых файлов (например, в некоторой UNIX-системе это может быть каталог/usr/include), как, например, в случае директивы:Мы не рассматриваем особенности функционирования конкретных трансляторов, аописываем наиболее часто используемые возможности препроцессора.1039#include <stdio.h>Если же имя файла заключено в кавычки и не является полным(абсолютным) путевым именем файла, то препроцессор рассматривает его как относительный путь от местонахождения того файла, вкотором встретился #include. Например:#include “myfile.h”#include “/usr/stuff/myfile.h”Включаемые файлы, в свою очередь, могут содержать#include-директивы.МакроподстановкаОписание макроподстановки имеет вид:#define имя подставляемый_текстНачиная от места появления #define и до конца файла, везде,где встречается имя, указанное в #define, вместо него препроцессорподставляет заданный подставляемый текст (кроме случаев, когдаэто имя встречается внутри текста в кавычках, т.е.

внутри строкового литерала).Примеры:#define NUMBER 10#define DOUBLED_NUMBER NUMBER*2 /*в #defineопределении можно использовать более ранниеопределения11 */#define PrintHello printf(“Hello,\world”); /* “\” используется для продолженияопределения на следующей строке */Можно определить макроподстановку с параметрами, что позволяет изменять подставляемый текст в зависимости от фактических параметров. Например:#define SQR(x) ((x)*(x))#define Print(x) printf(#x “ = %d\n”, x)/* имя формального параметра, встретившееся в “”, незаменяется на фактический параметр, но если передименем формального параметра стоит #, то вмакрорасширении #имя_формального_параметра будетзаменено на строку “фактический_параметр”, послечего в нашем примере строки конкатенируются */main(){int n = 4;Print(n);/* выводит на печать: n = 4 */Print(SQR(n)); /* SQR(n) = 16 */при этом в текст программы вместо DOUBLED_NUMBER подставится 10*2,а не 201140/* следующие два примера демонстрируют необходимостьскобок в определении SQR(x) для обеспечения нужногопорядка вычислений */Print(SQR(n+2));/* SQR(n+2) = 36 */Print(256/SQR(n)); /* 256/SQR(n) = 16 */}Оператор ## позволяет «склеивать» аргументы в макроподстановке, например:#define bond(left, right) left##rightТаким образом для bond(name, 123) будет сгенерированоname123Примечание.

Повторный #define для того же имени являетсяошибкой, если подставляемые тексты не совпадают с точностью доразделяющих пробельных символов. Препроцессору можно датьуказание «забыть» определенное имя с помощью директивы#undef имя(если имя не было ранее определено, ошибки не произойдет).Важно понимать, что любая макроподстановка, в отличие отвызова функции, обрабатывается не во время выполнения программы, а на этапе ее компиляции (а точнее, препроцессирования). Приэтом никакие вычисления не производятся, а происходит лишь модификация исходного текста программы.Использование в качестве аргументов макроподстановки выражений с побочными эффектами (например, выражений вида x++)может привести к нежелательным последствиям, т.к.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5258
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее