Лабораторная работа № 1

Введение в язык С

 

 

Цель работы

Освоить на практике организацию программ на языке С, применение основных функций ввода/вывода, управляющих структур, структур данных типа массив, а так же отладку и выполнение программ в ОС UNIX (Free BSD).

 

 

Домашнее задание

1. Изучить структуру программ на С.

2. изучить синтаксис объявления величин в программе на С.

3. Освоить синтаксис и выполнение управляющих структур языка С: присвоение, разветвление, цикл.

4. изучить организацию ввода/вывода с помощью библиотечных функций С (Scanf, printf, getchar, putchar).

5. изучить команды компиляции программы на С в ОС UNIX (gcc) и запуск исполняемого файла (a.out) .

 

 

Выполнение работы

1. Загрузить версию ОС UNIX – PC BSD 4.0.

2. Открыть терминальное окно для организации режима командной строки.

3. Организовать собственную папку в домашней директории /Home/Student.

4. Войти в редактор Kwrite и файл Noname сохранить в своей папке под собственным именем с расширением .

5. Набрать текст простой программы на С для вывода на экран сообщения:

«Hello, world»:

# include <stdio.h>

Main()

{

printf(“Hello, world”);

}

и сохранить текст в файле с расширением .с .

6. Откомпилируйте программу с помощью команды:

>gcc firle1.c

Если компиляция прошла без ошибок, должен быть сформирован файл исполняемый a.out.

Примените ключ (-о) для получения откомпилированного файла с собственным именем file1.out.

Запустите file1.out на выполнение и проверьте полученный на экране вывод.

7. Измените программу так, чтобы каждое из слов фразы «Hello, world» выводилось с новой строки (ключ (\n)).

8. Наберите в файле file2.c программу для вывода таблицы температур по Фаренгейту и их соответствие по шкале Цельсия (формула 0С=(5/9)(0F-32));

#include <stdio.h>

Main()

{

Int far,cels, lo, up, step;

lo=0;

up=300;

step=20;

far=lo;

while (far<=up){

cels=5*(far-32)/9;

printf(“%d\t %d\n”, far, cels);

far=far+step;}

}

Измените выражение для вычисления след.обр.:cels=5/9*(far-32);

Объясните полученный результат. Измените программу так, чтобы выводились результаты как вещественные числа с фиксированной точкой, и организуйте вывод заголовка над таблицей.

9. Измените программу следующим образом:

а) чтобы вывод таблицы был прежним, но вместо оператора цикла while

используйте оператор:

for (<пар.ц.>=<нач. знач.>; <пар. ц.> <=<кон. знач.>;

<пар.ц.> = <пар.ц.> + <шаг>) {операторы тела цикла};

убедитесь в идентичности выводимой таблицы прежнему варианту;

б) вместо задания значений параметрам с помощью присваиваний

используйте функцию scanf, которая считывает данные из потока ввода.

Например, для ввода даты:

Int day,year;

char month[20];

scanf(“%d %s %d”,&day, month,& year);

Внимание: аргументы функции scanf должны быть указателями.

10. Наберите в редакторе kwrite программу для подсчета символов во входном потоке, который заканчивается специальной константой EOF (это целое число):

#include <stdio.h>

Main()

{

Int nc;

Nc=0;

While (getchar() != EOF)

++nc;

Printf(“%d\n”,nc);

}

11. Напишите и отладьте программу на С для подсчета числа строк во входном потоке (каждая строка заканчивается символом (\n)).

12. Составьте программу на языке С в соответствии с вариантом задания табл. 1, отладьте ее и включите в отчет по лаб. раб.

 

 

Таблица 1

№ вар. Текст задания
Написать программу для подсчета количества каждой из цифр (от 0 до 9) во входном потоке. Результаты сохранить в статическом массиве Ndigit[10] Замечание: значение символа – цифры равно значению ее кода минус код ноля
Ввести массив целых чисел из 10 элементов. Найти среднее арифметическое элементов массива и выяснить есть ли такое значение среди элементов массива
Дан массив N вещественных чисел. Найти max элемент и его номер.
Написать программу для подсчета количества чисел во входном потоке. Числа сохранить в массиве.
Дан массив N целых чисел. Отсортировать его в порядке возрастания методом «пузырька» (прямой обмен)
Дан массив N целых чисел, отсортированных в порядке возрастания. Методом бинарного поиска найти в массиве номер заданного целого х или вывести сообщение о его отсутствии.
Ввести массив N вещественных чисел. Определить сколько раз в массиве происходит смена знака.

 

 

Контрольные вопросы

 

 

1. Структура программы на языке С.

2. Назначение директивы include.

3. Функции для управления вводом / выводом на С.

4. Объясните назначение и использование системной константы EOF.

5. Организация статического и динамического массива в программе на С.

6. Организация строки в языке С.