Задание №1. Решить задачу, составить программу, получить результаты. Подробно объяснить назначение операторов и полученные результаты.
ЗАДАНИЕ: Найти и распечатать все натуральные трехзначные числа, равные сумме кубов своих цифр.
#include <stdio.h> //подключаем библиотеку стандартного ввода\вывода, чтобы иметь
//возможность работать с операторами printf и scanf.
#include <conio.h> //подключаем файл для того, чтобы иметь возможность
// использования задержки в программе.
void main () //главная функция (точка входа в программу).
{ //тело программы.
int i,cot,dec,ed,sum; //происходит объявление переменных знакового целого типа.
for(i=100;i<=999;i++) //задается цикл с помощью оператора пошагового цикла for
{ //для перебора всех трехзначных чисел.
cot=i/100; //с помощью операции деления двух операндов находим сотую
//часть от числа n.
dec=(i-cot*100)/10; //с помощью данных операций находим десятую часть
//от числа n.
ed=(i-cot*100-dec*10); //с помощью этих операций находим единичную
//часть от числа n.
printf("cot=%d,\ndec=%d,\ned=%d",cot,dec,ed);//выводим полученные результаты на //печать, чтобы убедиться в //правильности выполненных //операций.
sum=0; //происходит обнуление переменной sum, предназначенной для вычисления //суммы кубов некоторого трехзначного числа.
sum=cot*cot*cot+dec*dec*dec+ed*ed*ed; ;//теперь кубы, полученные в результате //предыдущих операций, складываем с //помощью операции сложения нескольких //операндов; получаем сумму кубов.
if(i==sum) //с помощью условного оператора if проверяем условие: равно ли наше
//трехзначное число сумме кубов своих цифр. Если да, то мы выводим его на //печать; в противном же случае ничего не происходит.
{
printf("\ni=%d, i); //вывод на печать произвольного трехзначного числа.
}
}
while(!kbhit()); //организация задержки для просмотра полученного результата.
}
Данная программа выполняет следующие действия: сначала происходит выбор некоторого трехзначного числа от 100 до 999, например, это число 123; затем это число разбивается на сотые, десятичные и единичные части, то есть, получаем, что cot=1, des=2, ed=3; затем эти полученные части поочереди возводятся в куб и складываются, то есть 1*1*1=1, 2*2*2=8, 3*3*3=27 и, следовательно, их сумма будет равна sum=1+8+27=36; после этого происходит проверка равенства полученной суммы и некоторого трехзначного числа. Если данное условие выполняется, то происходит вывод на печать этого числа. В нашем примере 123=36, следовательно, это число на печать не выводится
РЕЗУЛЬТАТЫ, ВЫВОДИМЫЕ НА ПЕЧАТЬ: 153, 370, 371, 407
Задание №2. Решить задачу, составить программу для обработки массивов, получить результаты. Подробно объяснить назначение операторов и полученные результаты.
ЗАДАНИЕ: Дан массив целых чисел. Вывести сумму произведений пар рядом расположенных чисел. Последнее число умножить на первое.
#include <conio.h> //подключаем библиотеку стандартного ввода\вывода, чтобы иметь
//возможность работать с операторами printf и scanf.
#include <stdio.h> //подключаем файл для того, чтобы иметь возможность
//использования задержки в программе.
voidmain() //главная функция (точка входа в программу)
{
inti,n,s,p,line[10]; //происходит объявление переменных знакового целого типа и
//массива, элементы которого также имеют знаковый целый тип.
printf("\n\nВведите число элементов в массиве: ");
scanf("%d",&n); //происходит запрос на введение с клавиатуры размерности
//массива.
printf("Введите элементы массива: ");
for(i=1;i<=n;i++) //с помощью оператора пошагового цикла for происходит
//инициализация элементов массива.
scanf("%d",&line[i]);
for(i=1,s=0;i<n;i++) //задается цикл для перебора всех элементов массива; здесь же
//происходит инициализация начального значения переменной s
//(суммы). Следующие две операции выполняются в цикле.
{
p=line[i]*line[i+1]; //происходит вычисление произведения пар рядом расположенных
//чисел. Значение данной операции заносится в переменную p.
s=s+p; //происходит суммирование полученных произведений, причем
//полученные результаты заносятся в переменную s.
}
s+=line[1]*line[n]; //К уже имеющемуся значению переменной s прибавляется
//произведение первого и последнего элементов массива
printf("\nСумма произведений пар равна: %d", s); //происходит вывод полученного
//результата (суммы) на печать.
while(!kbhit()); //организация задержки для просмотра результата.
}
Данная программа выполняет следующие действия: сначала происходит запрос количества элементов в конкретном массиве, например, введено число 9. Затем, с помощью пошагового цикла for организуется перебор всех элементов массива для их инициализации (присваивание значений), к примеру, инициализация происходит следующим образом:
line[0]=2;
line[1]=4;
line[2]=6;
line[3]=8;
line[4]=9;
line[5]=10;
line[6]=1;
line[7]=3;
line[8]=5;
line[9]=7 //данный элемент также будет запрошен, но в операциях участвовать не будет, //т.к. размерность конкретного массива составляет число 9
После инициализации задается цикл, в котором соседние элементы перемножаются, и из этих произведений составляется сумма. В нашем случае данное действие будет происходить следующим образом:
2*4=8; 4*6=24; 6*8=48; 8*9=72; 9*10=90; 10*1=10; 1*3=3; 3*5=15; 5*7=35;
s=8+24+48+72+90+10+3+15+35=5057
Затем перемножаются первый и последний элементы массива. В данном случае 2*7=14 и к уже имеющемуся значению переменной s (s=5057) прибавляется этот результат, то есть, получаем s=5057+14=5071. Таким образом, окончательный ответ на поставленную задачу таков: s = 5071.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.