ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.12.2021
Просмотров: 980
Скачиваний: 3
#include <stdlib.h>
#include <stdio.h>
int main()
{
int day; /* день тижня*/
printf(“Vveditj denj tygnya (1-7)”);
scanf ("%i", & day);
switch( day )
{
case 1: printf("Ponedilok \n"); break;
case 2: printf("Vivtorok \n"); break;
case 3: printf("Sereda \n"); break;
case 4: printf("Chetver \n"); break;
case 5: printf("Pjatnyzzja \n"); break;
case 6: printf("Sybota \n"); break;
case 7: printf("Nedilya \n"); break;
default : printf ("Error! \n");
}
system("PAUSE");
return 0;
}
5.4 Оператор циклу for
Оператор for - це найбільш загальний спосіб організації циклу.
Приклад 8. Синтаксис оператора for
for ( Вираз 1 ; Вираз 2 ; Вираз 3 )
тіло циклу
Вираз 1 як правило використовується для встановлення початкового значення (ініціалізації) змінних, керуючих циклом. Вираз 2 визначає умову, при якій тіло циклу буде виконуватися. Вираз 3 визначає зміну змінних, керуючих циклом після кожного виконання тіла циклу.
Схема виконання оператора for наступна:
1. Обчислюється Вираз 1.
2. Обчислюється Вираз 2.
3. Якщо значення Виразу 2 відмінне від нуля, тобто «істина» (true), виконується тіло циклу, обчислюється Вираз 3 і здійснюється перехід до пункту 2, якщо Вираз 2 дорівнює нулю, «хибність» (false), то управління передається оператору, що іде за оператором for.
Оператор for є циклом з передумовою, тобто перевірка умови завжди виконується на початку циклу. Це значить, що тіло циклу може жодного разу не виконатися, якщо умова виконання відразу буде хибною. Тіло циклу може бути простим чи складеним оператором.
Блок-схема оператора циклу for зображена на рисунку 5.4.
Рисунок 5.4 – Блок-схема оператора циклу for
Приклад 9. Написати програму яка виводить на екран таблицю квадратів перших десяти додатних чисел.
#include <stdlib.h>
#include <stdio.h>
int main(){
int x = 1; /* число*/
int y; /* квадрат числа*/
for(int i=0; i<=10; i++)
{
y = x * x;
printf("%3i\t%4i\n", x, y);
x += 2;
}
system("PAUSE");
return 0;
}
5.5 Оператор циклу while
Оператор циклу while є циклом із передумовою.
Приклад 10. Синтаксис оператора while
while ( Вираз )
тіло циклу
У якості виразу допускається використовувати будь-який вираз мови С, а у якості тіла циклу простий чи складений оператор.
Схема виконання оператора while наступна:
1. Обчислюється вираз.
2. Якщо вираз хибний (false), то виконання оператора while закінчується і виконується наступний оператор. Якщо значення виразу «істина» (true), то виконується тіло циклу.
3. Процес повторюється з пункту 1.
Блок-схема оператора циклу while зображена на рисунку 5.5.
а) б)
Рисунок 5.5 – Блок-схема оператора циклу while
На рисунку 5.5а) зображена загальна блок-схема оператора циклу while, блок-схему на рисунку 5.5б) можна інтерпретувати як розгорнуту блок-схему оператора for.
Приклад 11. Напишіть програму, яка виводить на екран таблицю значень функції у діапазоні від -4 до 4. Крок зміни аргумента 0,5.
#include <stdlib.h>
#include <stdio.h>
int main(){
float xmin=-4, xmax=4; /* xmin, xmax – границі діапазону */
float dx = 0.5; /* dx – крок зміни аргументу */
float y,x;
printf (" x | y \n" );
x=xmin;
while ( x <= xmax )
{
y = 2*x*x - 5*x - 8;
printf ("%.2f | %.2f \n", x, y );
x = x + dx;
}
system("PAUSE");
return 0;
}
5.6 Оператор циклу do while
Оператор циклу do while є циклом із післяумовою і використовується в тих випадках, коли необхідно виконати тіло циклу хоча б один раз.
Приклад 12. Синтаксис оператора do while
do
тіло циклу
while ( Вираз ) ;
Схема виконання оператора do while наступна:
1. Виконується тіло циклу (яке може бути простим чи складеним оператором).
2. Обчислюється вираз.
3. Якщо вираз хибний (false), то виконання оператора do while закінчується і виконується наступний за do while оператор. Якщо значення виразу «істина» (true), то виконання оператора продовжується з пункту 1.
Блок-схема оператора циклу do while зображена на рисунку 5.6.
а) б)
Рисунок 5.6 – Блок-схема оператора циклу do-while
На рисунку 5.6 а) зображена загальна блок-схема оператора циклу do while, на рисунку 5.5б) зображена розгорнута блок-схема оператора циклу do while, в якій «Вираз 1», «Вираз 2» та «Вираз 3» відповідає виразам визначеним для оператора for.
Приклад 13. Написати програму обчислення суми чисел введених з клавіатури, у випадку введення числа «0» припинити обчислення.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int sum=0, ch;
printf(“Vveditj chysla (0 – kinezj vvedennya):”);
do{
scanf("%i",&ch);
sum=sum+ch;
}while(ch!=0);
printf("sum = %i \n", sum);
system("PAUSE");
return 0;
}
5.7 Оператор break
Оператор break - використовується для негайного виходу з інструкцій циклів for, while чи оператора розгалуження switch. При вкладенні циклів інструкція break дозволяє вийти з тіла самої внутрішньої інструкції циклу. Після виконання інструкції break керування передається першій інструкції, що розташована за останньою інструкцією циклу, що перервався.
Приклад 14. Написати код обчислення суми чисел введених з клавіатури, у випадку введення числа «0» припинити обчислення.
int sum = 0,ch;
for(int i=0;i<10;i++)
{
scanf("%i",&ch);
sum=sum+ch;
if(ch==0) break;
}
5.8 Оператор continue
Оператор «переривання ітерації циклу» continue використовується для ігнорування інструкцій в тілі циклу, що залишилися, та переходу до чергової перевірки умов виконання тіла циклу. Тобто на відміну від інструкції break управління передається не на наступну після циклу інструкцію, а на наступний крок ітерації.
Приклад 15. Написати код обчислення суми непарних елементів в послідовності чисел від 0 до 9.
int sum=0;
for(int i=0;i<10;i++)
{
if (i%2==0) continue;
sum=sum+i;
}
6 ВВЕДЕННЯ ТА ВИВЕДЕННЯ ДАНИХ
7.1 Функція виведення printf
Функція printf забезпечує виведення на екран монітору повідомлень і значень змінних. Для використання функції printf потрібно підключити бібліотеку <stdio.h>. Прототип функції printf наступний:
Приклад 1.Синтаксис printf
int printf( стрічка форматування, змінна1, змінна2, ... );
Функція printf може складатися з одного чи декількох параметрів. Першим параметром є стрічка форматування, іншими параметрами можуть бути змінні чи вирази значення яких необхідно вивести на екран.
Стрічка форматування записується в подвійних лапках і може містити такі елементи: символи які потрібно вивести на екран, керуючі послідовності та специфікатори перетворення (табл. 7.1).
Таблиця 7.1 — Специфікатори перетворення для функції printf
Специфікатор перетворення |
Призначення |
Тип даних |
% i |
Для виведення цілих чисел зі знаком |
int, short, long |
% d |
Для виведення цілих чисел зі знаком |
int, short, long |
% u |
Для виведення беззнакових цілих |
insigned int |
% f |
Для виведення дійсних чисел, в форматі числа з плаваючою точкою |
float, double |
% n.mf |
Для виведення дійсних чисел в форматі з фіксованою точкою, де n – кількість цифр цілої частини, m — дробової |
float, double |
%e |
Для виведення дійсних чисел в експоненційному представленні |
float, double |
%g |
Для вибору одного з специфікаторів %f чи %e, який дозволить представити число у більш короткому вигляді |
float, double |
%o |
Для виведення цілих чисел у вісімковій системі числення |
int, short, long |
%x |
Для виведення цілих чисел у шістнадцятковій системі числення |
int, short, long |
%c |
Для виводу символів |
char |
%s |
Для виводу стрічки |
char [] |
%% |
Для виводу знаку % |
|
Функція printf повертає число виведених символів чи від'ємне значення у випадку помилки.
Специфікатори перетворення записуються в те місце у стрічці форматування, в яке потрібно вивести значення змінної, вказаної в наступних параметрах функції printf (рис 7.1).
Рисунок 7.1 – Виведення значень змінних на екран
Як видно з рис. 7.1 значення змінної sum1 буде виведено на місце першого специфікатора перетворення (%i) у стрічці форматування, а значення змінної sum2 відповідно на місце другого специфікатора перетворення. У випадку якщо sum1=3, а sum2 =15 функція printf з рис. 7.1. виведе на екран наступне:
Специфікатор перетворення %n.mf дозволяє здійснювати форматування чисел при виведенні таблиць значень.
Приклад 2. Виведення на екран повідомлень.
printf ("Hello Angeliсa!");
printf ("To be or not to be that is the question");
Приклад 3. Використання специфікаторів перетворення для виведення повідомлень та значень змінних.
int apples = 2, peares = 5;
float cash = 12.4f;
char symbol= ‘F’;
printf (“ Apples = %i”, apples); /*виведення на екран значення змінної apples типу int*/
printf (“ Apples = %i Peares = %i”, apples, peares); /*виведення на екран значень змінних apples та peares типу int*/
printf (“ Cash = %f”, cash); /*виведення на екран значення змінної cash типу float*/
printf (“ Symbol = %c”, symbol); /*виведення на екран значення змінної symbol типу char*/
У стрічці управління для форматування інформації що виводиться на екран можуть бути використані керуючі послідовності (escape sequences) (табл. 3.2), які представляють собою спеціальні символьні комбінації. Керуюча послідовність складається зі зворотного слеша (\) (обов'язковий перший символ) і комбінації латинських літер і цифр (табл. 7.2).
Таблиця 7.2. Керуючі послідовності
Керуюча послідовність |
Пояснення |
\a |
Подача звукового сигналу |
\b |
Повернення на крок |
\t |
Горизонтальна табуляція |
\n |
Перехід на новий рядок |
\r |
Повернення каретки |
\” |
Подвійні лапки |
\’ |
Одинарні лапки |
\0 |
Нульовий символ |
\\ |
Зворотна дробова риса |
\ddd |
Вісімкове значення символу ASCII |
\xddd |
Шістнадцяткове значення символу ASCII |
Керуючі послідовності вигляду \ddd та \xddd (d позначає цифру) дозволяють представити будь-який символ з таблиці кодів ASCII у вигляді вісімкових чи шістнадцяткових чисел відповідно.
Приклад 4. Керуючі послідовності
printf(“\n”); /* перехід на новий рядок */
printf(“\012”); /* перехід на новий рядок при використанні вісімкового значення символу ASCII */
printf(“\x00A”); /* перехід на новий рядок при використанні шістнадцяткового значення символу ASCII */
Приклад 5. Керуючі послідовності
printf ("sum = %i \n", sum); /*виведення на екран значення змінної sum типу int та переходу на новий рядок */
printf ("a = %i\tb = %f \n", a, b); /*виведення на екран значень змінної a типу int та b типу float при використанні табуляції та переходу на новий рядок */
7.2Функція введення scanf
Функція scanf забезпечує введення даних з клавіатури. Для використання функції scanf потрібно підключити бібліотеку <stdio.h>. Прототип функції scanf наступний:
Приклад 6. Синтаксис scanf
int scanf (стрічка форматування, адреса змінної1, адреса змінної2, ... );
Першим параметром функції scanf є стрічка форматування, інші параметри – адреси змінних, в які зчитуються дані.
Стрічка форматування функції scanf записується в подвійних лапках і містить список специфікаторів перетворення, які визначають типи змінних, в які будуть записані введені дані.
Специфікатори перетворення функції scanf наведені в табл. 7.3.
Таблиця 7.3 — Специфікатори перетворення для функції scanf
Специфікатор перетворення |
Призначення |
Тип даних |
%i |
Для введення цілих чисел зі знаком |
int, short, long |
%d |
Для введення цілих чисел зі знаком |
int, short, long |
%f |
Для введення дійсних чисел, в форматі числа з плаваючою точкою |
float, double |
%c |
Для введення символів |
char |
%s |
Для введення стрічки |
char [] |
При використанні функції scanf потрібно слідкувати щоб специфікатори перетворення відповідали типам змінних, в які будуть записані зчитані з клавіатури дані.
Також потрібно пам’ятати ставити знак амперсанд (&) перед кожним ідентифікатором змінної в функції scanf.
Приклад 7. Використання функції scanf.
int a, b;
char symbol;
scanf (“%i %i”, &a, &b); /* зчитування з клавіатури цілих чисел у змінні a та b */
scanf (“%c”, &symbol); /* зчитування з клавіатури символу у змінну symbol */
Задача 1. Написати програму яка буде зчитувати з клавіатури два числа та виводити на екран їх добуток та суму.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int a, b;
printf ("Vvediyj dva chysla: ");
scanf ("%i %i", &a, &b);
printf ("Dobytok : %i \n", a * b);
printf ("Suma : %i \n", a + b);
system("PAUSE");
return 0;
}
Результат роботи програми:
Задача 2. Написати програму, яка буде запитувати у користувача його ім’я та після введення імені та натиснення клавіші Enter виводити привітання.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char name[10];
printf ("Vvediyj vashe im'ya: ");
scanf ("%s", name);
printf ("Hello %s!\n", name);
system("PAUSE");
return 0;
}
Результат роботи програми:
9.1 Введення та виведення у файл
Опис функцій роботи з файлами знаходиться в бібліотеці stdio.h.
Спочатку треба створити покажчик на змінну типу:
FILE (FILE * file);
Відкриття файлу здійснюється викликом функції
fopen (file = fopen (file_name, "w");)
Можна записувати відразу однією стрічкою:
FILE*file=fopen(file_name, "w");
Перший параметр цієї функції - ім'я файлу, другий - вказує в якому режимі повинен бути відкритий файл. "w" - відкрити для запису, "r" - відкрити для читання, "a" - доповнення файлу (це найбільш використовувані режими, хоча є й інші). Запис і зчитування даних з файлу здійснюється такими функціями: fputc, fputs, fgetc, fgets, fprintf, fscanf.
Закриття файлу здійснюється викликом функції fclose (fclose (file);).
НЕ ЗАБУВАЙТЕ ЗАКРИВАТИ ФАЙЛ!
Приклад 1. Зчитати з файлу input.txt всі дані, і перевірити, скільки раз повторюється перший символ. У вихідний файл output.txt записати цей символ. Потім знову відкрити файл output.txt для допису, і записати туди кількість повторів першого символу(рис. 9.1).
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char s,s1;
int i=0;
FILE*f=fopen("input.txt","rt");
if(f == NULL) {
perror("file not found");
system("PAUSE");
return EXIT_FAILURE;
}
fscanf(f,"%c", &s1);
while (!feof(f)){
fscanf(f,"%c", &s);
if (s==s1){
i++;
}
}
fclose(f);
FILE*fp=fopen("output.txt","w");
fprintf(fp, "%i\n", i);
fclose(fp);
FILE*ft=fopen("output.txt","a");
fprintf(ft, "%c", s1);
fclose(ft);
system("PAUSE");
return 0;
}
Рисунок 9.1 – Результат роботи програми
Приклад 2. Виведення різних типів даних.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define PI 3.1415926
int main(){
FILE*f=fopen("sempleout.txt","w");
int number=5, cost=11000, s=-777;
float bat=255, x=12.345;
fprintf (f, "%d студентів зїли %f бутербродів.\n", number, bat);
fprintf (f, "Значення числа pi рівне%f.\n", pi);
fprintf (f, "Вартість цієї машини %d%s\n", cost,"у.е");
fprintf (f, "x=%-8.4f s=%5d%8.2f ", x, s, x);
fclose(f);
return 0;
}
Результат роботи програми:
Детальнішу інформацію про введення\виведення даних дивіться у розділі 5.