Алгоритм решения
Для построения алгоритма решения выделим этапы обработки данных :
первый этап – ввод данных в компьютер (значение радиуса rи константы pi);
второй этап – вычисление по формуле
третий этап– вывод результата вычислений на экран дисплея.
Все эти три этапа в той или иной форме присутствуют в любой программе, причем если первый этап (ввод данных) связан с человеком (как в нашем случае – ввод с клавиатуры), то в алгоритм следует ввести контроль ошибок ввода. Например, в нашем примере радиус не должен принимать отрицательные значения.
// Версия программы с контролем ошибок ввода :
#include "stdafx.h"
#include <stdlib.h>#include <stdio.h>
#define pi 3.14 // определяем константу pi
int main()
{ int r;
double s;
M: printf ("\nr=");
scanf("%d",&r);
if (r<0) // проверка введенного значения r
// начало ветви «да», ветвь «нет» отсутствует
{printf ("error: r<0 !!! \n"); // сообщение об ошибке
goto M; // безусловный переход на оператор с меткой M
|}
s=pi*r*r;
printf ("s=%f\n",s); // вывод результата вычислений
system ("pause");
return 0;
}
Проверка условий. Ветвление программы: 2 ветви
Пример 13. Написать программу нахождения действительных корней квадратного уравнения общего вида аx2+bx+c=0.
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
using namespace std;
void main()
{int a, b,c // Коэффициенты а,b,c
float d,x1,x2;
printf ("input a, b, c > "); // приглашение для ввода переменных a, b, c
scanf("%d%d %d ",&a,&b,&c); // Ввод данных
d=b*b-4*a*c; // объявление переменной d и вычисление дискриминанта
if( d>0)
{ x1=(-b+sqrt(d))/(2.0*a);// объявление переменной x и вычисление корня
x2=(-b-sqrt(d))/(2.0*a)
printf ("x1=%f\n", x1); // Печать корней
printf ("x2=%f\n", x2);
}
// Если корней нет, то вывод сообщения " no solution"
else printf (" no solution");
}
Ветвление программы: много ветвей
Пример 14. Написать программу, которая по введенному с клавиатуры номеру дня недели выводит на экран название этого дня.
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void main()
{ int num;
printf ("\nВведите номер дня недели >");
scanf("%d",&num); // Ввод данных
switch (num) // Выбор варианта
{ case 1: printf ("Понедельник\n "); break;
case 2: printf ("Вторник\n "); break;
case 3: printf ("Среда\n "); break;
case 4: printf ("Четверг\n "); break;
case 5: printf ("Пятница\n "); break;
case 6: printf ("Суббота\n "); break;
case 7: printf ("Воскресенье\n "); break;
default: printf ("Номер неверен\n ");
}
system ("pause");
}
Вопросы.
1. В чем различие между константой и переменной?
2. Приведите примеры объявления констант и переменных.
3. Как изменить значение константы?
4. Дайте определение термину "инициализация переменной"
5. Перечислите стандартные типы данных языка Си.
6. Перечислите основные характеристики стандартных типов данных.
7. Какой тип данных нужно использовать для записи стоимости товара (в рублях и копейках)?
8. Какова структура программы на языке Си?
9. Что такое препроцессор?
10. Какие функции выполняет директива #include.
11. Какие функции выполняет директива #define
12. Какие этапы трансляции Вы знаете?
13. Какие операторы позволяют организовать ветвление программы?
14. Что такое «логическое выражение»?
15. Какие операции отношений вы знаете?
16. Для чего нужны логические связки?
17. Какие логические связки вы знаете?
18. Нарисуйте в виде блок-схемы две формы условного оператора.
19. Приведите примеры использования тернарного оператора.
20. Что общего у операторов if и switch?
21. Какие различия между операторами if и switch?
Варианты задания 1
Все данные для расчета вводить с клавиатуры. Перед вводом данных с клавиатуры на экран выводить «приглашение, например при вводе радиуса на экран вывести r=
1, 11, 21 | Подсчитать среднее арифметическое трех введенных с клавиатуры чисел a,b,c |
2, 12, 22 | Подсчитать площадь круга по введенному с клавиатуры радиусу |
3, 13, 23 | Вычислить значение x= a*b/c; a, b и c ввести с клавиатуры, ввести защиту от деления на ноль (проанализировать с выдать сообщение, повторить ввод) |
4, 14, 24 | Подсчитать длину окружности по введенному с клавиатуры радиусу |
5, 15, 25 | Вычислить значение x= a+b/c, a, b и c ввести с клавиатуры ввести защиту от деления на ноль (проанализировать с выдать сообщение, повторить ввод) |
6, 16, 26 | Вычислить значение x= a/b, a и b ввести с клавиатуры, ввести защиту от деления на ноль (проанализировать с выдать сообщение, повторить ввод) |
7, 17, 27 | По заданным сторонам прямоугольника вычислить его площадь |
8, 18, 28 | Вычислить значение x= a*b/c a, b ,c ввести с клавиатуры, ввести защиту от деления на ноль (проанализировать с выдать сообщение, повторить ввод) |
9, 19, 29 | По заданным сторонам прямоугольника вычислить его периметр |
10, 20, 30 | Вычислить значение x= 1/(a+b), a и b ввести с клавиатуры, ввести защиту от деления на ноль (проанализировать a+b выдать сообщение, повторить ввод) |
Варианты задания 2
Номер варианта | Задание |
1, 11, 21 | Составить программу, которая при вводе символа "{" или "}" выводит сообщение "фигурная скобка";. при вводе "[" или"]" - "квадратная скобка"; при вводе "(" или ")" - "круглая скобка"; в остальных случаях - сообщение "не скобка". Для решения задачи использовать таблицу кодов ASCII |
2, 12, 22 | Тема: Определение номера столетия. Написать программу, которая запрашивает у пользователя номер года и определяет номер его столетия. Учесть, что, к примеру, началом XX столетия был 1901, а не 1900 год Программа должна проверять правильность исходных данных. |
3, 13, 23 | Тема: Построение треугольника. Написать программу, которая запрашивает у пользователя три числа a, b, c, которые являются длинами сторон треугольника. Если нельзя построить такой треугольник, то выдать соответствующее сообщение; если можно, то напечатать какой он: равносторонний, равнобедренный или разносторонний. |
4, 14, 24 | Тема: Определение времени года Написать программу, которая запрашивает у пользователя номер месяца и выдает на экран сообщение о времени года и названии введенного месяца. Например: 1 - январь, зима. Программа должна проверять правильность исходных данных. |
5, 15, 25 | Тема: Расписание занятий. Написать программу, которая запрашивает у пользователя текущее время и по известному расписанию занятий выводит сообщение о том, что это: пара (с указанием ее номера) или перемена. Программа должна проверять правильность исходных данных. |
6, 16, 26 | Тема: Календарь. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Программа должна проверять правильность исходных данных. |
7, 17, 27 | Тема: Определение номера квартала. Написать программу, которая запрашивает у пользователя номер месяца и выводит на экран сообщение о номере квартала. Программа должна проверять правильность исходных данных. |
8, 18, 28 | Тема: Определение числа дней в месяце. Написать программу, которая запрашивает у пользователя год и номер месяца и определяет число дней в этом месяце. Программа должна проверять правильность исходных данных. |
9, 19, 29 | Тема: Определитель цифр и букв. Составить программу, которая при вводе символа с клавиатуры выводит "цифра", если введена цифра; "латинская буква" при вводе латинской буквы все остальные случаи считать ошибкой ввода. Для решения задачи использовать таблицу кодов ASCII |
10, 20, 30 | Тема: Калькулятор. При вводе с клавиатуры символа: + вывести сообщение "сложение", - вывести сообщение "вычитание", * вывести сообщение "умножение", / вывести сообщение "деление" с указанием формулы и примера с конкретными значениями, введенными с клавиатуры. Программа должна проверять правильность исходных данных при выполнении команды "деление". |
Дата добавления: 2015-02-23; просмотров: 2971;