Задание
Напишите программу, реализующую Вашу задачу. В программе обязательно должны присутствовать:
- цикл for;
- совмещение операции присваивания с бинарными операциями (например, a+=b);
- операторы scanf и printf .
Указания:
Задача предполагает обязательную распечатку таблицы и расчет суммы или
числа слагаемых (всех имеющихся или удовлетворяющих некоторому условию).
Рассмотрим задачу
Написать программу, которая
распечатывает таблицу стоимости почтовой пересылки для значений веса посылки от Рn до Рk кг с шагом 0.5 кг, если пересылка 1 кг стоит 53 руб. Подсчитать количество строк в таблице.
План программы:
1.Ввести с клавиатуры значения Рn и Рk.
2. Напечатать Заголовок таблицы.
3. Написать цикл, на каждом шаге
которого
- вычисляется текущее значение веса P;
- вычисляется стоимость пересылки этого веса St;
- вычисляется номер строки i;
- печатается номер строки, вес и стоимость.
4. Закончить печать таблицы
5. Вывести число строк таблицы
Программа будет выглядеть примерно так (см. пояснения после
текста программы и комментарии после // в строках):
#include
<stdio.h> // подключаем
библиотеку стандартного ввода-вывода
void main()
{
float pn,pk,P,St;
int i=0;
printf("pn,pk="); //вывод сопровождающего текста
scanf("%f%f",&pn,&pk); //ввод с клавиатуры
printf("----------------------------
\n"); // печать
заголовка таблицы
printf(" | i
| P (kg) | St
(rub) |\n");
printf("----------------------------
\n");
for(P=pn;P<=pk;P+=0.5)
//начало цикла Р изменяется от начального
//до конечного значений
//до конечного значений
{
St=P*53;
i++;
printf(" | %2d | %6.3f
| %6.3f |\n",i,P,St);
}
//конец цикла
printf("----------------------------
\n");
printf(" chislo strok i=%d
\n",i);
}
Цикл
повторяет выполнение операторов, стоящих в теле цикла, пока условие внутри
скобок в строке for
верно. Тело цикла составляет один оператор после for() или блок в скобках { }, записанный
сразу после for.
Операторы
ввода (scanf) и вывода (printf)
содержат форматы, которые показывают, как вводить (выводить) данную переменную.
Например, формат %d
служит для вывода целых данных. %2d показывает, что на
данное отводится 2 позиции. %6.3f
показывает, что на выводимое вещественное данное отводится всего 6 позиций, из
них 3 –после десятичной точки. Чтобы таблица была прямой, нужно записать такой
формат, чтобы в него вмещалось самое длинное выводимое число.
В операторе ввода scanf("%f%f",&pn,&pk); в скобках записываются в кавычках форматы (по числу вводимых переменных) и ссылки на переменные (их имена со значком &). Если нужно ввести одну переменную целого типа, можно написать scanf("%d",&i);
Если нужно подсчитать не все строки, а часть, например, количество строк, где стоимость меньше 500 руб, то можно написать так:
int n=0;
for(P=pn;P<=pk;P+=0.5) //начало цикла Р изменяется от начального
//до конечного значений
for(P=pn;P<=pk;P+=0.5) //начало цикла Р изменяется от начального
//до конечного значений
{
St=P*53;
if (St<=500) n++;
if (St<=500) n++;
i++;
printf(" | %2d | %6.3f
| %6.3f |\n",i,P,St);
}
Комментариев нет:
Отправить комментарий