Решение задач, составление программы, получение результатов. Подробное объяснение назначения операторов и полученных результатов

Страницы работы

Содержание работы

Задание №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=%di); //вывод на печать произвольного трехзначного числа.

                       }

}

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.

Похожие материалы

Информация о работе