Лабораторная работа № 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. Организация строки в языке С.