Министерство Образования Республики Беларусь
Гомельский Государственный Технический университет им. П. О. Сухого
Кафедра «Промышленная электроника»
Лабораторная работа №26 “Программирование на языке Си”
по курсу МПТ
Выполнили ст. гр. ПЭ-41:
М.
В.
Принял преподаватель:
ГОМЕЛЬ 2003
Часть №1. Программирование на языке Си
1. Цель работы
Изучить основы программирования на языке Си. Овладеть навыками разработки и отладки программ на персональном компьютере с использованием программного пакета Borland C++.
2.Основные теоретические сведения
Язык Си и созданный на его основе Си++ (от англ. С, С++) является одним из наиболее распространенных языков программирования. Он сочетает в себе достоинства языка ассемблера (доступ к ячейкам памяти, регистрам микропроцессора, портам ввода-вывода; работа с битовыми и символьными величинами и т.д.) и достоинства языков высокого уровня, таких, как Паскаль, Фортран и др. (структурированность программ, использование привычных обозначений при записи формул, операций и т.д.). По объему занимаемой памяти и времени выполнения программы, написанные на языке Си, приближаются к программам, написанным на языке ассемблера.
Задания для самостоятельной работы.
1. Разработайте и выполните программу, которая выводит на экран сообщение:
Моя первая программа на языке Си.
Программу поместите в файл prog1.cpp.
/* Программа №1 */
# include <stdio.h>
main()
{
puts(“Моя первая программа на языке Си”); // Вывод на экран
return 0;
}
2. Разработайте и выполните программу, которая выводит на экран сообщение :
Добро пожаловать в мой мир.
Командовать парадом буду я .
Программу поместите в файл prog2.cpp.
/* Программа №2 */
# include <stdio.h>
main()
{
puts(“Добро пожаловать в мой мир.
Командовать парадом буду я.”); // Вывод на экран
return 0;
}
3. Наберите текст программы inout2.cpp и выполните ее. Внимательно посмотрите результаты работы программы. Обратите внимание, что программа правильно работает до момента выполнения последнего оператора scanf(). Эта строка программы выполняется без ожидания ввода данных с клавиатуры. Эта аномалия объясняется тем, что функция scanf() выполняет буферизированный ввод. Во входном буфере после ввода значения переменной х останется символ перевода строки, который передается в программу в качестве значения для ch при следующем обращении к функции scanf(). Исправить ошибку просто - следует очистить входной буфер (обозначается как stdin) перед обращением к функции scanf(), например, с помощью функции fflush(stdin). В общем случае, когда в программе имеется несколько операторов с функцией scanf(), рекомендуется очищать входной буфер перед каждым обращением к scanf().
/* inout2.cpp Программа, иллюстрирующая ввод-вывод*/
#include<stdio.h>
main()
{
char ch, name[80];
int i, j;
float x, x2;
printf(“Введите ваше имя: ”);
scanf(“%s”,name);
printf(“Здравствуйте,%s!Вас приветствует звонком компьютер\a\n”, name);
printf(“Введите любое целое число: ”);
scanf(“%d”,&i);
j=i+4;
printf(“%d+4=%d, верно?\n”, i, j);
printf(“Введите число с плавающей точкой: ”);
scanf(“%f”,&x);
x2=x*x;
printf(“%f в квадрате =%f, верно?\n”x, x2);
printf(“Введите любой символ: ”);
scanf(“%c”,&ch);
printf(“ASCII-код символа %c=%d(%#x)\n”, ch, ch, ch);
return 0;
}
4. Исправьте текст программы inout2.cpp, введя строки с функцией fflush(stdin) перед всеми операторами с функцией scanf() (за исключением первого). Запустите программу и убедитесь в корректности ее работы.
/* inout2.cpp Программа, иллюстрирующая ввод-вывод*/
#include<stdio.h>
main()
{
char ch, name[80];
int i, j;
float x, x2;
printf(“Введите ваше имя: ”);
scanf(“%s”,name);
printf(“Здравствуйте,%s!Вас приветствует звонком компьютер\a\n”, name);
printf(“Введите любое целое число: ”);
fflush(stdin);
scanf(“%d”,&i);
j=i+4;
printf(“%d+4=%d, верно?\n”, i, j);
printf(“Введите число с плавающей точкой: ”);
fflush(stdin);
scanf(“%f”,&x);
x2=x*x;
printf(“%f в квадрате =%f, верно?\n”x, x2);
printf(“Введите любой символ: ”);
fflush(stdin);
scanf(“%c”,&ch);
printf(“ASCII-код символа %c=%d(%#x)\n”, ch, ch, ch);
return 0;
5. При выводе чисел с плавающей точкой компьютер обычно выводит 6 знаков после точки. Можно изменить это количество, используя указатель %.nf, где число n определяет количество знаков. Так, для вывода двух знаков после точки нужно в исследуемой программе написать:
printf(“%.2f в квадрате =%.2f, верно?\n”, x, x2);
Внесите изменения в программу inout2.cpp и проверьте результат.
/* inout2.cpp Программа, иллюстрирующая ввод-вывод*/
#include<stdio.h>
main()
{
char ch, name[80];
int i, j;
float x, x2;
printf(“Введите ваше имя: ”);
scanf(“%s”,name);
printf(“Здравствуйте,%s!Вас приветствует звонком компьютер\a\n”, name);
printf(“Введите любое целое число: ”);
fflush(stdin);
scanf(“%d”,&i);
j=i+4;
printf(“%d+4=%d, верно?\n”, i, j);
printf(“Введите число с плавающей точкой: ”);
fflush(stdin);
scanf(“%f”,&x);
x2=x*x;
printf(“%2f в квадрате =%2f, верно?\n”x, x2);
printf(“Введите любой символ: ”);
fflush(stdin);
scanf(“%c”,&ch);
printf(“ASCII-код символа %c=%d(%#x)\n”, ch, ch, ch);
return 0;
6. Программа, иллюстрирующая работу оператора switch…
Задание№1. Наберите текст программы switch.cpp и выполните её при различных значениях к, например 1, 3, 5.
Задание№2. Закомментируйте строки программы с оператором break. Выполните программу при значении k=1, 3, 5.
Объясните полученные результаты.
Задание№1:
/*switch.cpp Программа, иллюстрирующая работу оператора switch… */
#include<stdio.h>
main()
{
int k;
printf(“Введите целое число в пределах 1…4 для выбора: ”);
scanf(“%d”,&k);
switch(k)
{
case 1: printf(“Выбор 1\n”);
break;
case 2: printf(“Выбор 2\n ”);
break;
case 3: printf(“Выбор 3\n ”);
break;
case 4: printf(“Выбор 4\n ”);
default : printf(“Ошибка\a\n”);
}
return 0;
}
Задание№2:
/*switch.cpp Программа, иллюстрирующая работу оператора switch… */
#include<stdio.h>
main()
{
int k;
printf(“Введите целое число в пределах 1…4 для выбора:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.