МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Запорізький національний технічний університет
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторних та контрольних робіт
з дисципліни "Основи програмування"
для студентів заочної форми навчання
з напряму 6.050102 "Комп’ютерна інженерія"
2011
Методичні вказівки до лабораторних та контрольних робіт з дисципліни "Основи програмування" для студентів заочної форми навчання з напряму 6.050102 "Комп’ютерна інженерія". / Укл.: Н.В. Луценко, O.В. Польська. – Запоріжжя: ЗНТУ, 2011. – 30 с.
Укладачі: Н.В. Луценко, ст.викладач
O.В. Польська, асистент
Рецензент: О.І. Вершина, к.т.н., доцент
Відповідальний
за випуск O.В. Польська, асистент
Затверджено:
на засіданні кафедри
"Комп’ютерні системи та мережі"
Протокол № 9 від 22.06.2010 р.
ЗМІСТ
Порядок виконання лабораторних та контрольних робіт 4
Загальні відомості 5
ЛАБОРАТОРНІ РОБОТИ 14
Лабораторна робота №1 Базові типи змінних. Елементарні введення-виведення 14
Лабораторна робота №2 Умовні оператори. Оператори-перемикачі 16
Лабораторна робота №3 Оператори циклу 18
Лабораторна робота №4 Масиви і покажчики 20
КОНТРОЛЬНІ РОБОТИ 23
Завдання 1 23
Завдання 2 24
Завдання 3 25
Завдання 4 27
КОНТРОЛЬНІ ПИТАННЯ 28
ЛІТЕРАТУРА 30
Порядок виконання лабораторних та контрольних робіт
Лабораторні роботи складаються з декількох програм, завдань до них. Студент повинен створити, налагодити і зберегти у робочому каталозі програми в точній відповідності з приведеними в лабораторних роботах текстами програм (вихідні програми), проробити і проаналізувати результати їхньої роботи. Розробити для кожної вихідної програми самостійне завдання. Продемонструвати викладачу роботу програм.
Контрольна робота складається з декількох завдань з варіантами. Студент повинен створити, налагодити і зберегти програми згідно заданого варіанту, проробити і проаналізувати результати їхньої роботи та дати відповіді на контрольні питання.
Зміст контрольної роботи:
Титульний лист з номером варіанту.
Тексти завдань згідно варіанту.
Тексти програм.
Відповіді на контрольні питання.
Диск з відлагодженими програмами.
Рекомендації:
Використовуйте для зберігання файлу клавішу F2, для відкриття файлу F3, для закриття файлу Alt+F3
Використовуйте для копіювання комбінації клавіш Ctrl+Insert - зберегти в буфері, Shift+Insert - вставити з буфера
Використовуйте для виправлення останніх помилок у наборі тексту комбінації клавіш Alt+Backspace
Для переходу між вікнами використовуйте клавішу F6, або Alt+N (N-номер вікна), або вибір після натискання Alt+0
Для видалення рядків користуйтеся комбінацією клавіш Ctrl+Y
Для одержання контекстної довідки установіть маркер на лексему, яка цікавить Вас, і натисніть комбінацію клавіш Ctrl+F1
Загальні відомості
Програма мовою Сі – це послідовність препроцесорних директив, описів та визначень глобальних змінних та функцій.
Базові типи змінних. Для визначення змінних цілого типу даних використовують ключові слова char, int, short, long. Слова signed, unsigned позначають знакове чи беззнакове ціле число, за умовчанням всі числа є знакові. Для визначення змінних дійсного типу даних використовують ключові слова float, double, long double.
Змінні і константи цілого типу
Тип
Розмір
Діапазон
Специфікатори
char
1 байт (8 біт)
-128 ÷ 127
(- 27 ÷ 27-1)
%с %d %o %x
unsigned char
1 байт (8 біт)
0 ÷ +255
(0 ÷ 28-1)
%с %d %o %x %u
short
2 байти (16 біт)
-32768÷32767
(-215 ÷ 215-1)
%d %o %x
unsigned short
2 байти (16 біт)
0 ÷ +65535
0 ÷ 216-1
%d %o %x %u
int
2 байти (16 біт)
-32768÷32767
(-215 ÷ 215-1)
%d %o %x
unsigned int
2 байти (16 біт)
0 ÷ +65535
0 ÷ 216-1
%d %o %x %u
long
4 байти (32 біти)
-2147483648 ÷ 2147483647
(-231 ÷ 231-1)
%ld %lo %lx
unsigned long
4 байти (32 біти)
0÷4294967295
(0 ÷ 232-1)
%ld %lo %lx %lu
У компіляторі ВС5 типи int і unsigned int займають в пам'яті 4 байти і співпадають з типами long та unsigned long.
Константи цілого типу за умовчанням мають тип int.
Для завдання констант типу long дописується символ L|l (234L, 456l), для завдання типу unsigned – символ U|u (5634U, 23456u), для завдання типу unsigned long – символи U|u та L|l (478ul, 9876UL, 23456Lu), для завдання констант цілого типу в 8-ій системі числення (СЧ) спочатку числа приписується 0 (020, 075), а в 16-ій СЧ – 0х (0х20, 0х93а).
Змінні і константи дійсного типу
Тип
Розмір
Діапазон
Специф.
float
4 байт (32 біт)
±3.4∙10-38 ÷ ±3.4∙10+38
%f %e
double
8 байт (64 біт)
±1.7∙10-308 ÷ ±1.7∙10+308
%lf %le
long double
10 байт (80 біт)
±3.4∙10-4932 ÷ ±3.4∙10+4932
%Lf %Le
Константи дійсного типу за умовчанням мають тип double.
Для завдання констант типу float дописується символ F|f (23.4E-2f, 876.123F), для завдання типу long double дописується символ L|l: (4.56L, 2.459E-2L) .
Препроцесорні директиви. Директиви препроцесора – це записані в тексті програми інструкції, які починаються з нового рядку зі знаку #. Ці директиви виконуються препроцесором до компіляції програми, доповнюючи вхідний текст програми.
Директива #include включає в текст програми зміст зазначеного файлу. Ця директива має дві форми:
#include "ім'я_файлу"
#include <ім'я_файлу>
Директива #define виконує заміну ідентифікаторів константтами або будь-якою послідовністю операторів (виразів), що найчастіше використовуються. Синтаксис директиви #define такий:
#define ідентифікатор рядок_заміни
Заміни в тексті можна відмінити за допомогою директиви:
#undef ідентифікатор
Наприклад, перша директива замінить у тексті програми кожний символ W на число 80, а друга директива відмінить цю заміну.
#define W 80
#undef W
Елементарні виведення та введення даних. Виведення та введення даних може бути форматованим та неформатованим.
Форматоване виведення даних здійснюється функцією:
printf(рядок_формату, список_виведення);
Cписок_виведення може містити константи, змінні та будь-які вирази, розділені комами. Рядок_формату записується в подвійних лапках і може містити: послідовність звичайних символів, що виводяться на екран; спеціальні символи, що керують розміщенням даних на екрані (ESC–послідовності); спеціфікатори формату даних.
Спеціфікатори формату – це наступна послідовність:
%[-][довжина поля][.точність][l або L] специфікація_типу
де [-] – зсув виведених даних до лівого краю поля; [довжина поля] – кількість позицій для виведення; [.точність] – кількість дробових цифр для дійсних чисел, чи кількість виведених символів для рядків; l або L – позначка для чисел типу long, double, long double.
Для виведення даних використовують такі специфікатори типів:
%c – ціле число типу char, int, short у вигляді символу;
%d – ціле число типу char, int, short у 10-ій системі числення;
%u – беззнакове ціле число у 10-ій системі числення;
%o – ціле число у 8-ій системі числення;
%x – ціле число в 16-ій системі числення;
%ld – ціле число типу long int у 10-ій системі числення;
%lo – ціле число типу long int у 8-ій системі числення;
%lx – ціле число типу long int у 16-ій системі числення;
%f – дійсне число типу float;
%e – дійсне число типу float в експоненціальній формі;
%lf – дійсне число типу doublе;
%le – дійсне число типу doublе в експоненціальній формі;
%Lf – дійсне число типу long double;
%Le – дійсне число типу long double в експоненціальній формі;
%s – рядок;
%p – адреса.
Форматоване введення даних здійснюється функцією:
scanf(рядок_формату, список_введення);
Список_введення повинний містити адреси змінних, раніш визначених у програмі. Рядок_формату записується в подвійних лапках і може містити тільки специфікатори типів даних, що наведені вище.
Функція scanf() здійснює введення чисел, символів та рядків з клавіатури до натискання клавіші <Enter> або до виявлення першого неприпустимого символу у вхідному потоці.
int a; float b; char с; char st[20];
scanf("%d %f %c",&a,&b,&c);
printf("a=%d, b=%f, c=%c\n",a,b,c);
scanf("%s",st); //форматоване введення рядка без прогалин
printf("st=%s \n",st); //форматоване виведення рядка
Неформатоване введення символів здійснюється функціями getchar(), getch(), getche(), а неформатоване виведення символів – putchar(), putch().
char c1,с2,с3;
c1=getchar(); //введення символу з натисненням клавіші Enter
c2=getch(); //введення символу без клавіші Enter і без виводу на екран
c3=getche(); //введення символу без клавіші Enter і з виводом на екран
putchar(c1); //виведення символу на екран
putch(c2); //виведення символу на екран
Неформатоване введення рядків виконується функцією gets(), а неформатоване виведення рядків – puts().
char st1[20];
gets(st1); //введення рядка з прогалинами
puts(st1); //виведення рядка
Введення-виведення даних в С++. Введення даних здійснюється за допомогою функції cin>>, а виведення даних – за допомогою функції cout<< без завдання спеціфікаторів формату.
int a; cin>>а;//введення з клавіатури значення змінної а
cout<<a; // виведення на екран введеного значення
ESC-послідовності (керуючі послідовності). Це послідовності символів, які використовують для запису неграфічних та деяких інших символів в рядках. ESC-послідовність складається з нахиленої риски вліво (зворотній слеш), після якого записується буква або знак.
Символ Найменування
\n новий рядок;
\t горизонтальна табуляція;
\' одиночні лапки;
\" подвійні лапки;
\\ нахилена вліво риска;
\? знак питання.
Умовний оператор if…else обирає один з двох варіантів виразів обчислень та має такий синтаксис:
if(умова) вираз_1 else вираз_2
Якщо умова – істина, то виконується вираз_1, інакше – вираз_2. Будь-яке значення умови, крім 0, вважається істиною. Умова – арифметичний вираз. Вираз_1, 2 – це простий або складений оператор. Наприклад:
if(x>y) {max=x; min=y;} else {max=y; min=x;}
Допустима скорочена форма умовного оператору, в якій відсутня конструкція else вираз_2. В цьому разі при хибності умови, що перевіряється, ніяких дій не виконується. Наприклад:
if(x<0) x=-x;
abs=x; // завжди виконується
Вираз_1 та вираз_2 також можуть бути умовними. В цьому випадку отримуємо вкладені умовні оператори. Причому, кожне else відповідає найближчому if.
Оператор-перемикач switch() дозволяє обрати один з декількох (більш 3-х) варіантів обчислень та повідомлень.
Синтаксис цього оператора такий:
switch(перемикаючий_вираз)
{case константний_вираз_1: оператори_1; break;
case константний_вираз_2: оператори_2; break;
. . .
default: оператори_n;}
Оператор switch порівнює значення перемикаючого_виразу, який може приймати тільки цілі значення, з константними_виразами та передає керування тому оператору, константний_вираз якого співпадає зі значенням перемикаючого_виразу. Якщо такі оператори відсутні, то виконуються оператори, що позначені міткою default. Якщо оператор default відсутній, то виконуються вихід з перемикача. Оператор break здійснює примусовий вихід з оператору switch. Якщо оператор break відсутній, то виконуються не тільки оператори відповідної гілки case, а й усі інші гілки до кінця оператора switch.
Наприклад:
unsigned int a;
scanf("%u",&а);
switch(а)
{case 0: printf("це нуль"); break;
case 1: printf("це одиниця"); break;
case 2: printf("це двійка"); break;
default: printf("це більше двох");}
Оператори циклу. Мова Сі (Сі++) має три оператори, за допомогою яких можна організувати цикли: for, while, do…while.
Цикл з оператором for частіше використовується у випадку, коли відома точна кількість повторів. Цей оператор має синтаксис:
for(ініціалізація_циклу; умова; список_виразів) тіло_циклу
Ініціалізація_циклу – це послідовність визначень та виразів, розділених комами, що виконуються один раз перед початком виконання циклу. Потім перевіряється умова. Якщо значення умови не дорівнює 0, тобто є істиною, то виконуються тіло_циклу, а потім список_виразів та знову перевіряється умова. При хибному значенні умови цикл завершується. Наприклад:
for(int i=0,sum=0,pr=1; i<3; i++) // і =1, 2, 3
{sum+=5; pr*=(i+1);} // sum =5, 10, 15 pr=1, 2, 6
Цикл з оператором while використовується в тому випадку, коли невідомо точне число повторів. Синтаксис оператору наступний:
while(умова) тіло_циклу
Спочатку перевіряється умова, якщо умова є істиною, то виконується тіло_циклу та знову перевіряється умова. При хибному значенні умови цикл завершується. Наприклад:
int a=0, sum=0;
while(sum<20)
{a+=2; sum+=a; } // а=2, 4, 6, 8 sum =2, 6, 12, 20
Цикл з оператором do…while використовується в тих випадках, якщо тіло_циклу повинно бути виконано, хоча б, один раз. Синтаксис оператору наступний:
do тіло_циклу while(умова);
Спочатку виконується тіло_циклу, потім перевіряється умова. Якщо умова є істиною, то знову виконується тіло_циклу. При хибному значенні умови цикл завершується. Наприклад:
int m=0,n=0;
do {m+=4; n++;} while(n<3); // m =4, 8, 12 n =1, 2, 3
Оператори циклу можуть мати оператори continue, break, return. Оператор continue пропускає залишок тіла циклу та починає виконання наступної ітерації (повторення). Оператор break завершить виконання усього циклу. Оператор return завершить виконання функції або всієї програми.
int n1=0,n2=0,a,sum=0;
while((n1+n2)<20) // перевірка кількості парних та непарних а
{scanf("%d",&a); // введення 20 значень змінної а
if((a%2)==0) // перевірка парності а
{n2++; continue;} // перехід до наступної ітерації, якщо а парне,
if(a==99) break; // закінчення циклу, якщо а=99
if(a==100) return; // закінчення програми, якщо а=100
n1++; // обчислення кількості непарних змінних а
sum+=a; } // обчислення суми непарних змінних а
Оператор безумовного переходу goto передає керування на будь-який позначений міткою оператор в тілі функції. При використанні оператора goto не можна входити усередину умовного оператора, перемикача, циклу. Наприклад:
if (n==n_max) goto M1; // перехід на М1 при n==n_max
n++;
M1: printf("n=%d", n);
Одновимірний масив. Це сукупність змінних одного типу, що мають одне ім'я. При визначенні масиву задають його розмір. Значення розміру повинно бути константним цілочисловим виразом.
Три способи завдання розміру масиву :
цілою числовою константою або цілочисельним виразом;
int a1[10]; //масив елементів з 10 елементів типу int
пойменованою константою - із службовим словом const;
const int M=4;
float f1[M];// масив з 4-х елементів типу float
за допомогою препроцесорної директиви #define.
#define N 20
char c1[N]; // масив з 20 символів.
Доступ до елементів масиву здійснюється через індекси. Перерахування елементів масиву починається з нуля. Індекси мають бути цілочисельними виразами. Наприклад:
int a[3];
a[0]=2; a[1]=6;
a[2]=a[0]+a[1]*5; // а[2]=32
Масиви бувають різного класу пам'яті. Масиви, визначені поза функціями, у тому числі поза функцією main(), є глобальними (зовнішніми). Масиви, які визначені усередині функції, можуть бути статичними (зі словом static) або автоматичними. Наприклад:
int a1[5];// масив зовнішній, глобальний
void main()
{float b1[4]; // масив автоматичний
static long c1[3]; // масив статичний
… }
Ініціалізація масивів. Це привласнення початкових значень елементам масивів при його визначенні. Ініціалізація масивів може здійснюватися за умовчанням та явно.
За умовчанням глобальні і статичні масиви ініціалізуються нулями, автоматичні – довільними даними. Явна ініціалізація буває повна (з явним завданням кількості елементів і початкових значень усіх елементів масиву) та неповна (з явним завданням кількості елементів, але початкові значення задаються не усіх елементів масиву):
int a[5]={2,5,7,9,1}; // повна ініціалізація
int b[7]={5,7,9}; // неповна ініціалізація
У останньому рядку інші чотири елементи масиву b будуть мати або нульові значення (для глобального і статичного масивів), або їхні значення будуть невизначені (для автоматичного масиву).
При повній явній ініціалізації одновимірного масиву можливо не задавати розмір масиву. Компілятор визначає кількість елементів масиву за списком ініціалізації:
int c[]={5,7,9,8}; // Масив із чотирьох елементів
Покажчики. Це цілі беззнакові змінні, що можуть містяти адреси пам'яті якого-небудь об'єкту програми. Покажчик може містити адресу змінної, масиву, структури, іншого покажчика і т.п. Розмір покажчика 4 байти: 2 байта – сегмент і 2 байта – зсув в сегменті.
Тип покажчика – це тип змінної, адреса якої може знаходитися в покажчику. Покажчик можна ініціалізувати та йому можна привласнювати адресу визначеної змінної, значення раніш визначеного іншого покажчика або явно задану адресу пам’яті (з перетворенням типу). Наприклад:
int a=1;
int *ptra, *ptrb;
ptra =&a; // адреса змінної а
ptrb =ptra; // покажчик ptra
int *ptrс=(int*)0xB8000000;// явна адреса пам’яті
Над покажчиками можна виконувати наступні операції:
узяття адреси & &ptra;
розіменування * *ptra;
визначення розміру покажчика sizeof(ptra);
перетворення типів (char*) ptra;
привласнення ptra=&a;
складання і віднімання цілих чисел ptra+=3; ptra-=2;
інкремент, декремент ptra++; ptra--;
віднімання покажчиків int n=ptra-ptrb;
операції відношення == != > >= < <= ptra>ptrb;.
Операція розіменування покажчика * використовується для доступу (звернення) до об'єкту, адресу якого містить цей покажчик.
Значення покажчика збільшується (при додаванні цілого числа N) або зменшується (при відніманні цілого числа N) на відповідну кількість змінних того типу, адресу яких вмістить покажчик. Значення покажчика завжди змінюється на кількість байтів, рівне N*sizeof(*ім'я_покажчика) або N*sizeof(тип_покажчика).
Різниця покажчиків показує, скільки змінних відповідного типу може розміститися між цими покажчиками.
Ім'я масиву – це покажчик-константа, значення якого є адреса нульового елемента масиву. Це значення не можна змінити. Наприклад, якщо визначити int arr[10], то при цьому виділиться пам'ять для 10 елементів масиву, а ім'я arr стане покажчиком-константою на цей масив. При визначенні розміру покажчика arr визначається розмір усього масиву. Ім'я масиву можна привласнювати іншим покажчикам. З елементами масивів, зв'язаними з покажчиками, можна працювати за допомогою індексів і операції розіменування.
Наприклад, доступ до останнього елементу масиву можна виконати таким чином:
int arr[10]; // визначення масиву arr
int *ptr=arr; // визначення покажчика ptr на масив arr
arr[9]=2; *(arr+9)=2; *(9+arr)=2; 9[arr]=2;
ptr[9]=2; *(ptr+9)=2; *(9+ptr)=2; 9[ptr]=2;
Рядок. Це послідовність елементів типу char, останнім елементом якої завжди є '\0'. Ініціалізується рядок послідовністю символів у парних подвійних лапках. Адреса першого символу може використовуватися для ініціалізації масиву типу char, у цьому випадку ім'я масиву й адреса першого символу стають синонімами. Наприклад:
char str1[5]="name";
char str2[]="name";
char str3[5]={'n','a','m','e', '\0'};
Адреса першого елемента рядка може використовуватися для ініціалізації покажчика типу char, наприклад:
char *strptr="name" ;
У цьому випадку змінна–покажчик str3 (але не покажчик-константа) одержує значення адреси символу 'n', а сам рядок розташовується в сегменті даних завантажувального модуля програми.
ЛАБОРАТОРНІ РОБОТИ
Лабораторна робота №1Базові типи змінних. Елементарні введення-виведення
Мета роботи – ознайомитися з основними типами даних, які використовуються в мові Сі, засвоїти елементарні функції введення-виведення.
Програма 1.1 Програма визначає код символу за кодовою таблицею ASCII та визначає розмір типу даних у байтах.
#include<stdio.h>
#include<conio.h>
void main()
{clrscr(); //очищення екрану
puts("Моя перша програма"); //виведення повідомлення
char s='a';
printf("Cимвол %c в 10СЧ=%d, в 8СЧ=%#o, ",s,s,s);
printf("в 16СЧ=%#x розмip char=%d байт\n",s,sizeof(s));
int a=78; float b=56.23;
printf("a=%d розмip int=%d байт\n",a,sizeof(a));
printf("b=%f розмip float=%d байт\n",b,sizeof(b));
puts("натисніть будь-яку клавішу");
getchar(); } //чекання натискання будь-якої клавіші з <Enter>
Завдання до програми 1.1
Доповніть програму: виведіть на екран своє прізвище та першу літеру Вашого імені з кодами; визначить змінні типу long, double, long double з будь-якими значеннями та виводить на екран їх значення та розмір в байтах; замініть getchar(); на getch();
Програма 1.2 Програма виконує прості арифметичні дії.
#include <stdio.h>
#include <conio.h>
void main()
{clrscr();
int a1=9, a2=2, b1, b2, b3;
float f1=3.6, f2=0.5, r1, r2;
a2+=a1; // a2=2+9=11
b1=a2/4; // b1=11/4=2
b2=a2%4; // b2=11%4=3
b3=b1>b2; // b3=(2>3)? нi 0
r1=f1/f2; // r1=3.6/0.5=7.2
r2=(f2>f1)?f1+2:--f2; // r2=(0.5>3.6)? нi (0.5–1)=–0.5
printf("a2=%d b1=%d b2=%d b3=%d\n",a2,b1,b2,b3);
printf("r1=%5.2f r2=%5.2f\n",r1,r2);
puts("\nНатисніть будь-яку клавішу"); getch(); }
Завдання до програми 1.2
Розробіть програму, що обчислює задані вирази. Значення змінних задає викладач. Результати поясніть.
1. a2-=a1; b1=a1+2*a22; b2=!a1; b3=b2++;
r1=f1*f2; r2=(f2!=f1)?f1-0.5:f2+0.5;
2. a2*=10; b1=a13+a2; b2=a1>a2; b3=++b2;
r1=2*f1-f2; r2=(f2==f1)?f1*0.5:f2*0.5;
3. a2/=5; b1=5*a1+a22; b2=a1>a2; b3=--b2;
r1=f1+4*f2; r2=(f2<=f1)?f1-2.5:f2+5.5;
Програма 1.3 Програма за введеними з клавіатури значеннями радіусу та висоти обчислює та виводить на екран об’єм циліндра.
#include <stdio.h>
#include <conio.h>
void main()
{clrscr();
float h,r,V;
const float Pi=3.14159;
puts("Введіть радіус циліндра");
scanf("%f", &r);
puts("Введіть висоту циліндра");
scanf("%f", &h );
V=h*Pi*r*r;
printf("Об’єм циліндра=%8.3f\n",V);
puts("натисніть будь-яку клавішу");
getch();
}
Завдання до програми 1.3
Розробіть програму, що виконує задані дії та виводить результат в заданому форматі (перша цифра в специфікаторі формату – загальна кількість позицій для виведення даних, включаючи крапку та знак числа).
1. Введіть з клавіатури змінні x,z (типу float), обчисліть вираз res=(x*z)2/3 та виведіть на екран результат з трьома цифрами цілої частини і двома – дробової.
2. Введіть з клавіатури змінні a,b,c (типу double), обчисліть вираз res=a+2*b-c та виведіть на екран результат з двома цифрами цілої частини і трьома – дробової.
3. Введіть з клавіатури змінні k,g (типу double), обчисліть вираз res=k2+g*k/2 та виведіть на екран результат з чотирма цифрами цілої частини і трьома – дробової.
Лабораторна робота №2Умовні оператори. Оператори-перемикачі
Мета роботи – ознайомитися з умовними операторами (if…else) та операторами-перемикачами (switch), навчитися програмувати найпростіші алгоритми, які розгалужуються.
Програма 2.1 Програма визначає, чи є введене число парним.
#include<stdio.h>
#include<conio.h>
void main()
{clrscr();
int n;
puts("Введіть число:");
scanf("%d",&n);
if(n%2==0) printf("Число %d парне ", n);
else printf("Число %d непарне ", n);
puts("\nPress any key..."); getch(); }
Завдання до програми 2.1
Розробіть програму, яка виконує задані обчислення та виводить на екран відповідні повідомлення.
1. Перевірте, чи більше 100 введене з клавіатури ціле число.
2. Перевірте, чи закінчується на 0 введене з клавіатури ціле число.
3. Перевірте, чи ділиться на 5 введене з клавіатури ціле число.
Програма 2.2 Програма визначає, чи є введене число додатним та більшим чи меншим заданого числа.
#include<stdio.h>
#include<conio.h>
void main()
{clrscr();
float x;
puts("Введіть число:");
scanf("%f",&x);
if(x>0)
if(x>100) printf("Число %.2f додатне і більше 100",x);
else printf("Число %.2f додатне і не більше 100",x);
else
if(x<-100)
printf("Число %.2f не додатне і менше -100",x);
else printf("Число %.2f не додатне і не менше -100",x);
puts("\nPress any key...");
getch(); }
Завдання до програми 2.2
Розробіть програму, яка виконує задані обчислення, використовуючи вкладений умовний оператор, та виводить на екран чотири відповідні повідомлення.
1. Введіть з клавіатури ціле число, якщо воно парне, перевірте чи є додатним, якщо – непарне, чи більше 25.
2. Введіть два числа, для більшого з них числа перевірте, чи знаходиться воно в діапазоні от 5 до 150.
3. Введіть з клавіатури ціле число, якщо воно більше 50, перевірте, чи кратне воно 4, інакше – чи кратне воно 3.
Програма 2.3 Програма в залежності від введеного знаку визначає результат виконання дії за допомогою оператору switch() із застосуванням оператору break.
#include <stdio.h>
#include <conio.h>
void main()
{clrscr();
float a,b;
char s;
puts("Введіть два числа:");
scanf("%f %f",&a,&b);
fflush(stdin);
puts("Введіть знак:");
s=getch();
switch(s)
{case '-': printf("%.2f-%.2f=%.2f\n",a,b,a-b); break;
case '+': printf("%.2f+%.2f=%.2f\n",a,b,a+b); break;
case '*': printf("%.2f*%.2f=%.2f\n",a,b,a*b); break;
case '/': printf("%.2f/%.2f=%.2f\n",a,b,a/b); break;
default: printf("Error\n");
}
puts("\nPress any key...");
getch(); }
Завдання до